]> err.no Git - linux-2.6/commit
ocfs2: Fix a bug in direct IO read.
authorTao Ma <tao.ma@oracle.com>
Tue, 2 Sep 2008 17:57:14 +0000 (01:57 +0800)
committerMark Fasheh <mfasheh@suse.com>
Wed, 10 Sep 2008 08:44:08 +0000 (01:44 -0700)
commit0e116227a01580acf47437adba3afadf21b6bd5f
tree65844ab6db53a7713e258830e571ced05a8d61ae
parentadee14b2e1557d0a8559f29681732d05a89dfc35
ocfs2: Fix a bug in direct IO read.

ocfs2 will become read-only if we try to read the bytes which pass
the end of i_size. This can be easily reproduced by following steps:
1. mkfs a ocfs2 volume with bs=4k cs=4k and nosparse.
2. create a small file(say less than 100 bytes) and we will create the file
   which is allocated 1 cluster.
3. read 8196 bytes from the kernel using O_DIRECT which exceeds the limit.
4. The ocfs2 volume becomes read-only and dmesg shows:
OCFS2: ERROR (device sda13): ocfs2_direct_IO_get_blocks:
Inode 66010 has a hole at block 1
File system is now read-only due to the potential of on-disk corruption.
Please run fsck.ocfs2 once the file system is unmounted.

So suppress the ERROR message.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/aops.c