ext4: fix xfstest generic/269 double revoked buffer bug with bigalloc
authorDaeho Jeong <daeho.jeong@samsung.com>
Sun, 18 Oct 2015 02:28:21 +0000 (22:28 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 18 Oct 2015 02:28:21 +0000 (22:28 -0400)
commit9c02ac97989d544c89f049e8add7149aaea01671
treed8f5b9c9b82dff0bca390ff899ef54f0b4a5edc8
parent9008a58e5dcee014f5de69d154e2620870f9224e
ext4: fix xfstest generic/269 double revoked buffer bug with bigalloc

When you repeatly execute xfstest generic/269 with bigalloc_1k option
enabled using the below command:

"./kvm-xfstests -c bigalloc_1k -m nodelalloc -C 1000 generic/269"

you can easily see the below bug message.

"JBD2 unexpected failure: jbd2_journal_revoke: !buffer_revoked(bh);"

This means that an already revoked buffer is erroneously revoked again
and it is caused by doing revoke for the buffer at the wrong position
in ext4_free_blocks(). We need to re-position the buffer revoke
procedure for an unspecified buffer after checking the cluster boundary
for bigalloc option. If not, some part of the cluster can be doubly
revoked.

Signed-off-by: Daeho Jeong <daeho.jeong@samsung.com>
fs/ext4/mballoc.c