public virtual QuotaCounts CleanFile(BlockStoragePolicySuite bsps, INodeFile file
                                      , int snapshotId, int priorSnapshotId, INode.BlocksMapUpdateInfo collectedBlocks
                                      , IList <INode> removedINodes)
 {
     if (snapshotId == Org.Apache.Hadoop.Hdfs.Server.Namenode.Snapshot.Snapshot.CurrentStateId)
     {
         // delete the current file while the file has snapshot feature
         if (!IsCurrentFileDeleted())
         {
             file.RecordModification(priorSnapshotId);
             DeleteCurrentFile();
         }
         CollectBlocksAndClear(bsps, file, collectedBlocks, removedINodes);
         return(new QuotaCounts.Builder().Build());
     }
     else
     {
         // delete the snapshot
         priorSnapshotId = GetDiffs().UpdatePrior(snapshotId, priorSnapshotId);
         return(diffs.DeleteSnapshotDiff(bsps, snapshotId, priorSnapshotId, file, collectedBlocks
                                         , removedINodes));
     }
 }