1
0
Fork 0
alistair23-linux/fs/ceph
Ilya Dryomov fc218544fb ceph: fix iov_iter issues in ceph_direct_read_write()
dio_get_pagev_size() and dio_get_pages_alloc() introduced in commit
b5b98989dc ("ceph: combine as many iovec as possile into one OSD
request") assume that the passed iov_iter is ITER_IOVEC.  This isn't
the case with splice where it ends up poking into the guts of ITER_BVEC
or ITER_PIPE iterators, causing lockups and crashes easily reproduced
with generic/095.

Rather than trying to figure out gap alignment and stuff pages into
a page vector, add a helper for going from iov_iter to a bio_vec array
and make use of the new CEPH_OSD_DATA_TYPE_BVECS code.

Fixes: b5b98989dc ("ceph: combine as many iovec as possile into one OSD request")
Link: http://tracker.ceph.com/issues/18130
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Tested-by: Luis Henriques <lhenriques@suse.com>
2018-05-10 10:15:12 +02:00
..
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile ceph: quota: add initial infrastructure to support cephfs quotas 2018-04-02 11:17:51 +02:00
acl.c ceph: unify inode i_ctime update 2017-06-14 19:37:23 +02:00
addr.c ceph: don't wait on writeback when there is no more dirty pages 2018-04-02 10:12:48 +02:00
cache.c The big ticket items are: 2018-04-10 12:25:30 -07:00
cache.h ceph: improve fscache revalidation 2016-06-01 10:31:50 +02:00
caps.c ceph: quota: cache inode pointer in ceph_snap_realm 2018-04-02 11:17:53 +02:00
ceph_frag.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debugfs.c libceph, ceph: change permission for readonly debugfs entries 2018-04-02 10:12:45 +02:00
dir.c The big ticket items are: 2018-04-10 12:25:30 -07:00
export.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
file.c ceph: fix iov_iter issues in ceph_direct_read_write() 2018-05-10 10:15:12 +02:00
inode.c ceph: always update atime/mtime/ctime for new inode 2018-04-16 09:38:40 +02:00
ioctl.c libceph, ceph: move ceph_calc_file_object_mapping() to striper.c 2018-04-02 10:12:43 +02:00
ioctl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locks.c ceph: add newline to end of debug message format 2018-04-02 10:12:44 +02:00
mds_client.c ceph: quota: add counter for snaprealms with quota 2018-04-02 11:17:53 +02:00
mds_client.h ceph: quota: add counter for snaprealms with quota 2018-04-02 11:17:53 +02:00
mdsmap.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
quota.c ceph: quota: report root dir quota usage in statfs 2018-04-02 11:17:53 +02:00
snap.c ceph: quota: cache inode pointer in ceph_snap_realm 2018-04-02 11:17:53 +02:00
strings.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
super.c ceph: quota: report root dir quota usage in statfs 2018-04-02 11:17:53 +02:00
super.h ceph: quota: report root dir quota usage in statfs 2018-04-02 11:17:53 +02:00
xattr.c ceph: check if mds create snaprealm when setting quota 2018-04-23 17:35:19 +02:00