summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorYongqiang Yang2011-10-31 23:04:38 +0100
committerTheodore Ts'o2011-10-31 23:04:38 +0100
commitedb5ac8993e25143f6af1ab143843a65c52e2a15 (patch)
treed7ddf9603bcb2c540d5c240102a0dafc10f42eef /fs
parentext4: return ENOMEM if find_or_create_pages fails (diff)
downloadkernel-qcow2-linux-edb5ac8993e25143f6af1ab143843a65c52e2a15.tar.gz
kernel-qcow2-linux-edb5ac8993e25143f6af1ab143843a65c52e2a15.tar.xz
kernel-qcow2-linux-edb5ac8993e25143f6af1ab143843a65c52e2a15.zip
ext4: let ext4_discard_partial_buffers handle unaligned range correctly
As comment says, we should handle unaligned range rather than aligned one. This fixes a bug found by running xfstests #91. Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/inode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5fcef98f98e5..de05e86f1993 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -3206,8 +3206,8 @@ int ext4_discard_partial_page_buffers_no_lock(handle_t *handle,
* to be updated with the contents of the block before
* we write the zeros on top of it.
*/
- if (!(from & (blocksize - 1)) ||
- !((from + length) & (blocksize - 1))) {
+ if ((from & (blocksize - 1)) ||
+ ((from + length) & (blocksize - 1))) {
create_empty_buffers(page, blocksize, 0);
} else {
/*