diff options
author | Yan, Zheng <zyan@redhat.com> | 2016-10-24 22:51:55 -0400 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2016-12-12 17:54:27 -0500 |
commit | 2b1ac852eb67a6e95595e576371d23519105559f (patch) | |
tree | 076e01b89275932db841f55fb604744b5c84bc5a /fs/ceph/file.c | |
parent | 5c341ee32881c554727ec14b71ec3e8832f01989 (diff) |
ceph: try getting buffer capability for readahead/fadvise
For readahead/fadvise cases, caller of ceph_readpages does not
hold buffer capability. Pages can be added to page cache while
there is no buffer capability. This can cause data integrity
issue.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/file.c')
-rw-r--r-- | fs/ceph/file.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 10cd6acad44c..ae3cec5724d6 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c | |||
@@ -1249,8 +1249,9 @@ again: | |||
1249 | dout("aio_read %p %llx.%llx %llu~%u got cap refs on %s\n", | 1249 | dout("aio_read %p %llx.%llx %llu~%u got cap refs on %s\n", |
1250 | inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, | 1250 | inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, |
1251 | ceph_cap_string(got)); | 1251 | ceph_cap_string(got)); |
1252 | 1252 | current->journal_info = filp; | |
1253 | ret = generic_file_read_iter(iocb, to); | 1253 | ret = generic_file_read_iter(iocb, to); |
1254 | current->journal_info = NULL; | ||
1254 | } | 1255 | } |
1255 | dout("aio_read %p %llx.%llx dropping cap refs on %s = %d\n", | 1256 | dout("aio_read %p %llx.%llx dropping cap refs on %s = %d\n", |
1256 | inode, ceph_vinop(inode), ceph_cap_string(got), (int)ret); | 1257 | inode, ceph_vinop(inode), ceph_cap_string(got), (int)ret); |