From fcc1862c400236129f8909b195b18ce87af9d270 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Fri, 1 Aug 2008 21:59:19 -0400 Subject: [PATCH] --- yaml --- r: 107540 b: refs/heads/master c: 34071da71a665d8c81e3b3467c9a2e7c56386fec h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ext4/extents.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a3dd6d69cd33..64696894b42c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bc965ab3f2b4b7bb898b11d61d25295c2053b8ac +refs/heads/master: 34071da71a665d8c81e3b3467c9a2e7c56386fec diff --git a/trunk/fs/ext4/extents.c b/trunk/fs/ext4/extents.c index f554703eb924..f7529e27d791 100644 --- a/trunk/fs/ext4/extents.c +++ b/trunk/fs/ext4/extents.c @@ -1910,9 +1910,13 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, BUG_ON(b != ex_ee_block + ex_ee_len - 1); } - /* at present, extent can't cross block group: */ - /* leaf + bitmap + group desc + sb + inode */ - credits = 5; + /* + * 3 for leaf, sb, and inode plus 2 (bmap and group + * descriptor) for each block group; assume two block + * groups plus ex_ee_len/blocks_per_block_group for + * the worst case + */ + credits = 7 + 2*(ex_ee_len/EXT4_BLOCKS_PER_GROUP(inode->i_sb)); if (ex == EXT_FIRST_EXTENT(eh)) { correct_index = 1; credits += (ext_depth(inode)) + 1;