Commit 45c22f8f authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] ext3: disable O_DIRECT in journalled-data mode

We cannot sensibly support O_DIRECT reads or writes when all writes are
journalled.

This is because the VFS explicitly avoids syncing the file metadata during
O_DIRECT reads and writes.  ext3 with journalled data will leave pending
changes in memory and they will overwrite the results of O_DIRECT writes, and
O_DIRECT reads will not return the latest data.

Setting the a_op to null will cause opens and fcntl(F_SETFL) to return
-EINVAL if O_DIRECT is requested.
parent 3e3eb8d8
...@@ -1644,7 +1644,6 @@ static struct address_space_operations ext3_journalled_aops = { ...@@ -1644,7 +1644,6 @@ static struct address_space_operations ext3_journalled_aops = {
.bmap = ext3_bmap, .bmap = ext3_bmap,
.invalidatepage = ext3_invalidatepage, .invalidatepage = ext3_invalidatepage,
.releasepage = ext3_releasepage, .releasepage = ext3_releasepage,
.direct_IO = ext3_direct_IO,
}; };
void ext3_set_aops(struct inode *inode) void ext3_set_aops(struct inode *inode)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment