linux/fs/ceph
Yan, Zheng 85784f9395 ceph: only dirty ITER_IOVEC pages for direct read
If a page is already locked, attempting to dirty it leads to a deadlock
in lock_page().  This is what currently happens to ITER_BVEC pages when
a dio-enabled loop device is backed by ceph:

  $ losetup --direct-io /dev/loop0 /mnt/cephfs/img
  $ xfs_io -c 'pread 0 4k' /dev/loop0

Follow other file systems and only dirty ITER_IOVEC pages.

Cc: stable@kernel.org
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2018-03-30 11:17:48 +02:00
..
acl.c ceph: unify inode i_ctime update 2017-06-14 19:37:23 +02:00
addr.c ceph: fix un-balanced fsc->writeback_count update 2018-01-29 18:36:09 +01:00
cache.c The highlights include: 2017-09-12 20:03:53 -07:00
cache.h ceph: improve fscache revalidation 2016-06-01 10:31:50 +02:00
caps.c ceph: flush dirty caps of unlinked inode ASAP 2018-02-26 16:19:16 +01: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 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dir.c ceph: flush dirty caps of unlinked inode ASAP 2018-02-26 16:19:16 +01: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: only dirty ITER_IOVEC pages for direct read 2018-03-30 11:17:48 +02:00
inode.c ceph: avoid dereferencing invalid pointer during cached readdir 2018-01-29 18:36:07 +01:00
ioctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01: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
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
locks.c ceph: handle 'session get evicted while there are file locks' 2017-11-13 12:11:28 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mds_client.c ceph: try to allocate enough memory for reserved caps 2018-01-29 18:36:12 +01:00
mds_client.h ceph: try to allocate enough memory for reserved caps 2018-01-29 18:36:12 +01: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
snap.c ceph: fix incorrect snaprealm when adding caps 2018-01-29 18:36:09 +01: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: fix potential memory leak in init_caches() 2018-03-01 16:39:47 +01:00
super.h ceph: flush dirty caps of unlinked inode ASAP 2018-02-26 16:19:16 +01:00
xattr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00