]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blobdiff - e2fsck/extents.c
ext2fs: rename "s_overhead_blocks" to "s_overhead_clusters"
[thirdparty/e2fsprogs.git] / e2fsck / extents.c
index 98cf7c37a94315a0444c7cce59cc135aa9954a3e..e9af1bbeb491445ccef5a333c42039e8fb3cd732 100644 (file)
@@ -171,7 +171,8 @@ static int find_blocks(ext2_filsys fs, blk64_t *blocknr, e2_blkcnt_t blockcnt,
                                             list->count - 1;
                blk64_t end = last->e_len + 1;
 
-               if (last->e_pblk + last->e_len == *blocknr &&
+               if (last->e_lblk + last->e_len == (__u64) blockcnt &&
+                   last->e_pblk + last->e_len == *blocknr &&
                    end < (1ULL << 32)) {
                        last->e_len++;
 #ifdef DEBUG
@@ -263,7 +264,7 @@ extents_loaded:
                goto err;
 
        ext_written = 0;
-       start_val = ext2fs_inode_i_blocks(ctx->fs, EXT2_INODE(&inode));
+       start_val = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(&inode));
        for (i = 0, ex = list->extents; i < list->count; i++, ex++) {
                memcpy(&extent, ex, sizeof(struct ext2fs_extent));
                extent.e_flags &= EXT2_EXTENT_FLAGS_UNINIT;
@@ -301,15 +302,10 @@ extents_loaded:
                ext_written++;
        }
 
-       delta = ext2fs_inode_i_blocks(ctx->fs, EXT2_INODE(&inode)) - start_val;
-       if (delta) {
-               if (!ext2fs_has_feature_huge_file(ctx->fs->super) ||
-                   !(inode.i_flags & EXT4_HUGE_FILE_FL))
-                       delta <<= 9;
-               else
-                       delta *= ctx->fs->blocksize;
-               quota_data_add(ctx->qctx, &inode, ino, delta);
-       }
+       delta = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(&inode)) -
+               start_val;
+       if (delta)
+               quota_data_add(ctx->qctx, &inode, ino, delta << 9);
 
 #if defined(DEBUG) || defined(DEBUG_SUMMARY)
        printf("rebuild: ino=%d extents=%d->%d\n", ino, list->ext_read,