android_kernel_motorola_sm6375/fs/ceph
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jeff Layton bce53fbee9 ceph: fix handling of "meta" errors
commit 1bd85aa65d0e7b5e4d09240f492f37c569fdd431 upstream.

Currently, we check the wb_err too early for directories, before all of
the unsafe child requests have been waited on. In order to fix that we
need to check the mapping->wb_err later nearer to the end of ceph_fsync.

We also have an overly-complex method for tracking errors after
blocklisting. The errors recorded in cleanup_session_requests go to a
completely separate field in the inode, but we end up reporting them the
same way we would for any other error (in fsync).

There's no real benefit to tracking these errors in two different
places, since the only reporting mechanism for them is in fsync, and
we'd need to advance them both every time.

Given that, we can just remove i_meta_err, and convert the places that
used it to instead just use mapping->wb_err instead. That also fixes
the original problem by ensuring that we do a check_and_advance of the
wb_err at the end of the fsync op.

Cc: stable@vger.kernel.org
URL: https://tracker.ceph.com/issues/52864
Reported-by: Patrick Donnelly <pdonnell@redhat.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-27 09:54:27 +02:00
..
acl.c
addr.c ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty 2021-07-20 16:10:48 +02:00
cache.c
cache.h
caps.c ceph: fix handling of "meta" errors 2021-10-27 09:54:27 +02:00
ceph_frag.c
debugfs.c
dir.c
export.c ceph: fix inode leak on getattr error in __fh_to_dentry 2021-05-19 10:08:26 +02:00
file.c ceph: fix handling of "meta" errors 2021-10-27 09:54:27 +02:00
inode.c ceph: fix handling of "meta" errors 2021-10-27 09:54:27 +02:00
io.c
io.h
ioctl.c
ioctl.h
Kconfig
locks.c
Makefile
mds_client.c ceph: fix handling of "meta" errors 2021-10-27 09:54:27 +02:00
mds_client.h
mdsmap.c
quota.c
snap.c ceph: take snap_empty_lock atomically with snaprealm refcount change 2021-08-18 08:57:04 +02:00
strings.c
super.c
super.h ceph: fix handling of "meta" errors 2021-10-27 09:54:27 +02:00
xattr.c