ocfs2: Revert 40bd62e
to avoid regression in extended allocation
Revert commit 40bd62eb7f
("fs/ocfs2/journal.h: add bits_wanted while
calculating credits in ocfs2_calc_extend_credits").
Unfortunately this change broke fallocate even if there is insufficient
disk space for the preallocation, which is a serious problem.
# df -h
/dev/sda8 22G 1.2G 21G 6% /ocfs2
# fallocate -o 0 -l 200M /ocfs2/testfile
fallocate: /ocfs2/test: fallocate failed: No space left on device
and a kernel warning:
CPU: 3 PID: 3656 Comm: fallocate Tainted: G W O 3.11.0-rc3 #2
Call Trace:
dump_stack+0x77/0x9e
warn_slowpath_common+0xc4/0x110
warn_slowpath_null+0x2a/0x40
start_this_handle+0x6c/0x640 [jbd2]
jbd2__journal_start+0x138/0x300 [jbd2]
jbd2_journal_start+0x23/0x30 [jbd2]
ocfs2_start_trans+0x166/0x300 [ocfs2]
__ocfs2_extend_allocation+0x38f/0xdb0 [ocfs2]
ocfs2_allocate_unwritten_extents+0x3c9/0x520
__ocfs2_change_file_space+0x5e0/0xa60 [ocfs2]
ocfs2_fallocate+0xb1/0xe0 [ocfs2]
do_fallocate+0x1cb/0x220
SyS_fallocate+0x6f/0xb0
system_call_fastpath+0x16/0x1b
JBD2: fallocate wants too many credits (51216 > 4381)
Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Cc: Goldwyn Rodrigues <rgoldwyn@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
28a0c88312
commit
6115ea2884
|
@ -537,7 +537,7 @@ static inline int ocfs2_calc_extend_credits(struct super_block *sb,
|
||||||
extent_blocks = 1 + 1 + le16_to_cpu(root_el->l_tree_depth);
|
extent_blocks = 1 + 1 + le16_to_cpu(root_el->l_tree_depth);
|
||||||
|
|
||||||
return bitmap_blocks + sysfile_bitmap_blocks + extent_blocks +
|
return bitmap_blocks + sysfile_bitmap_blocks + extent_blocks +
|
||||||
ocfs2_quota_trans_credits(sb) + bits_wanted;
|
ocfs2_quota_trans_credits(sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ocfs2_calc_symlink_credits(struct super_block *sb)
|
static inline int ocfs2_calc_symlink_credits(struct super_block *sb)
|
||||||
|
|
Loading…
Reference in New Issue