Whamcloud - gitweb
Convert to use block group accessor functions
[tools/e2fsprogs.git] / e2fsck / emptydir.c
index d29f08f..b2ce41c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * emptydir.c --- clear empty directory blocks
- * 
+ *
  * Copyright (C) 1998 Theodore Ts'o
  *
  * %Begin-Header%
@@ -52,7 +52,7 @@ empty_dir_info init_empty_dir(e2fsck_t ctx)
        retval = ext2fs_init_dblist(ctx->fs, &edi->empty_dblist);
        if (retval)
                goto errout;
-       
+
        retval = ext2fs_allocate_block_bitmap(ctx->fs, _("empty dirblocks"),
                                              &edi->empty_dir_blocks);
        if (retval)
@@ -97,7 +97,7 @@ void add_empty_dirblock(empty_dir_info edi,
        printf(_("Empty directory block %u (#%d) in inode %u\n"),
               db->blk, db->blockcnt, db->ino);
 
-       ext2fs_mark_block_bitmap(edi->empty_dir_blocks, db->blk);
+       ext2fs_mark_block_bitmap2(edi->empty_dir_blocks, db->blk);
        if (ext2fs_test_inode_bitmap(edi->dir_map, db->ino))
                return;
        ext2fs_mark_inode_bitmap(edi->dir_map, db->ino);
@@ -122,7 +122,7 @@ int empty_pass1(ext2_filsys fs, blk_t *block_nr, e2_blkcnt_t blockcnt,
        empty_dir_info edi = (empty_dir_info) priv_data;
        blk_t   block, new_block;
        errcode_t       retval;
-       
+
        if (blockcnt < 0)
                return 0;
        block = *block_nr;
@@ -135,7 +135,7 @@ int empty_pass1(ext2_filsys fs, blk_t *block_nr, e2_blkcnt_t blockcnt,
                if (new_block == 0)
                        break;
                edi->logblk++;
-       } while (ext2fs_test_block_bitmap(edi->empty_dir_blocks, new_block));
+       } while (ext2fs_test_block_bitmap2(edi->empty_dir_blocks, new_block));
 
        if (new_block == block)
                return 0;
@@ -150,7 +150,7 @@ static int fix_directory(ext2_filsys fs,
                         void *priv_data)
 {
        errcode_t       retval;
-       
+
        empty_dir_info edi = (empty_dir_info) priv_data;
 
        edi->logblk = 0;
@@ -168,9 +168,10 @@ static int fix_directory(ext2_filsys fs,
 
        if (edi->freed_blocks) {
                edi->inode.i_size -= edi->freed_blocks * fs->blocksize;
-               edi->inode.i_blocks -= edi->freed_blocks *
-                       (fs->blocksize / 512);
-               (void) ext2fs_write_inode(fs, db->ino, &edi->inode);
+               ext2fs_iblk_add_blocks(fs, &edi->inode, edi->freed_blocks);
+               retval = ext2fs_write_inode(fs, db->ino, &edi->inode);
+               if (retval)
+                       return 0;
        }
        return 0;
 }