Whamcloud - gitweb
libext2fs: use ext2fs_punch() to truncate quota file
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 15 Dec 2013 00:52:40 +0000 (19:52 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 15 Dec 2013 00:52:43 +0000 (19:52 -0500)
Use the new ext2fs_punch() call to truncate the quota file.  This also
eliminates the need to fix it to work with bigalloc.

Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/quota/quotaio.c

index 8ddb92a..1bdcba6 100644 (file)
@@ -98,19 +98,6 @@ void update_grace_times(struct dquot *q)
        }
 }
 
-static int release_blocks_proc(ext2_filsys fs, blk64_t *blocknr,
-                              e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)),
-                              blk64_t ref_block EXT2FS_ATTR((unused)),
-                              int ref_offset EXT2FS_ATTR((unused)),
-                              void *private EXT2FS_ATTR((unused)))
-{
-       blk64_t block;
-
-       block = *blocknr;
-       ext2fs_block_alloc_stats2(fs, block, -1);
-       return 0;
-}
-
 static int compute_num_blocks_proc(ext2_filsys fs, blk64_t *blocknr,
                               e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)),
                               blk64_t ref_block EXT2FS_ATTR((unused)),
@@ -135,9 +122,9 @@ errcode_t quota_inode_truncate(ext2_filsys fs, ext2_ino_t ino)
                inode.i_dtime = fs->now ? fs->now : time(0);
                if (!ext2fs_inode_has_valid_blocks2(fs, &inode))
                        return 0;
-
-               ext2fs_block_iterate3(fs, ino, BLOCK_FLAG_READ_ONLY, NULL,
-                                     release_blocks_proc, NULL);
+               err = ext2fs_punch(fs, ino, &inode, NULL, 0, ~0ULL);
+               if (err)
+                       return err;
                fs->flags &= ~EXT2_FLAG_SUPER_ONLY;
                memset(&inode, 0, sizeof(struct ext2_inode));
        } else {