linux/fs/ceph
NeilBrown 5d7eb1a322 ceph: ignore error from invalidate_inode_pages2_range() in direct write
This call can fail if there are dirty pages.  The preceding call to
filemap_write_and_wait_range() will normally remove dirty pages, but
as inode_lock() is not held over calls to ceph_direct_read_write(), it
could race with non-direct writes and pages could be dirtied
immediately after filemap_write_and_wait_range() returns

If there are dirty pages, they will be removed by the subsequent call
to truncate_inode_pages_range(), so having them here is not a problem.

If the 'ret' value is left holding an error, then in the async IO case
(aio_req is not NULL) the loop that would normally call
ceph_osdc_start_request() will see the error in 'ret' and abort all
requests.  This doesn't seem like correct behaviour.

So use separate 'ret2' instead of overloading 'ret'.

Signed-off-by: NeilBrown <neilb@suse.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Yan, Zheng <zyan@redhat.com>
2016-10-03 16:13:49 +02:00
..
acl.c ceph: Get rid of d_find_alias in ceph_set_acl 2016-04-23 15:41:30 -04:00
addr.c ceph: fix error handling of start_read() 2016-10-03 16:13:49 +02:00
cache.c ceph: fix spelling mistake: "resgister" -> "register" 2016-07-28 02:55:40 +02:00
cache.h ceph: improve fscache revalidation 2016-06-01 10:31:50 +02:00
caps.c ceph: fix null pointer dereference in ceph_flush_snaps() 2016-08-08 21:41:43 +02:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c ceph: don't show symlink target in debugfs/mdsc 2016-05-26 01:15:32 +02:00
dir.c ceph: handle LOOKUP_RCU in ceph_d_revalidate 2016-07-28 03:00:39 +02:00
export.c ceph: fix d_obtain_alias() misuses 2016-06-24 23:49:03 -04:00
file.c ceph: ignore error from invalidate_inode_pages2_range() in direct write 2016-10-03 16:13:49 +02:00
inode.c The highlights are: 2016-08-02 19:39:09 -04:00
ioctl.c ceph: reduce i_nr_by_mode array size 2016-07-28 02:55:39 +02:00
ioctl.h ceph: fully initialize new layout 2012-05-16 14:28:27 -05:00
Kconfig ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
locks.c Move locks API users to locks_lock_inode_wait() 2015-10-22 14:57:36 -04:00
Makefile ceph: add acl for cephfs 2013-12-31 20:32:01 +02:00
mds_client.c ceph: initialize pathbase in the !dentry case in encode_caps_cb() 2016-08-09 17:26:56 +02:00
mds_client.h ceph: unify cap flush and snapcap flush 2016-07-28 03:00:42 +02:00
mdsmap.c ceph: CEPH_FEATURE_MDSENC support 2016-05-26 01:15:31 +02:00
snap.c ceph: cleanup ceph_flush_snaps() 2016-07-28 03:00:44 +02:00
strings.c ceph: rename snapshot support 2015-04-22 18:33:41 +03:00
super.c ceph: Mark the file cache as unreclaimable 2016-07-28 03:00:45 +02:00
super.h ceph: optimize cap flush waiting 2016-07-28 03:00:45 +02:00
xattr.c ceph: rados pool namespace support 2016-07-28 02:55:38 +02:00