kernel_optimize_test/fs/ceph
Jeff Layton 1727e8688d 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:56:51 +02:00
..
acl.c ceph: add caps perf metric for each superblock 2020-06-01 13:22:51 +02:00
addr.c ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty 2021-07-20 16:05:48 +02:00
cache.c ceph: replace zero-length array with flexible-array member 2020-03-30 12:42:40 +02:00
cache.h libceph, rbd, ceph: convert to use the new mount API 2019-11-27 22:28:37 +01:00
caps.c ceph: fix handling of "meta" errors 2021-10-27 09:56:51 +02:00
ceph_frag.c
debugfs.c ceph: metrics for opened files, pinned caps and opened inodes 2020-10-12 15:29:26 +02:00
dir.c ceph: allow ceph_put_mds_session to take NULL or ERR_PTR 2021-09-26 14:08:58 +02:00
export.c ceph: don't allow access to MDS-private inodes 2021-05-22 11:40:54 +02:00
file.c ceph: fix handling of "meta" errors 2021-10-27 09:56:51 +02:00
inode.c ceph: fix handling of "meta" errors 2021-10-27 09:56:51 +02:00
io.c ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
io.h ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
ioctl.c ceph: consider inode's last read/write when calculating wanted caps 2020-03-30 12:42:42 +02:00
ioctl.h
Kconfig libceph: replace HTTP links with HTTPS ones 2020-08-03 11:05:26 +02:00
locks.c ceph: add ceph_sb_to_mdsc helper support to parse the mdsc 2020-10-12 15:29:26 +02:00
Makefile ceph: add dentry lease metric support 2020-06-01 13:22:51 +02:00
mds_client.c ceph: fix handling of "meta" errors 2021-10-27 09:56:51 +02:00
mds_client.h ceph: check session state after bumping session->s_seq 2020-11-04 20:55:49 +01:00
mdsmap.c ceph: fix possible null-pointer dereference in ceph_mdsmap_decode() 2021-09-08 08:49:01 +02:00
metric.c ceph: cancel delayed work instead of flushing on mdsc teardown 2021-09-26 14:08:58 +02:00
metric.h ceph: metrics for opened files, pinned caps and opened inodes 2020-10-12 15:29:26 +02:00
quota.c ceph: check session state after bumping session->s_seq 2020-11-04 20:55:49 +01:00
snap.c ceph: correctly handle releasing an embedded cap flush 2021-09-03 10:09:22 +02:00
strings.c
super.c ceph: skip existing superblocks that are blocklisted or shut down when mounting 2021-10-27 09:56:51 +02:00
super.h ceph: fix handling of "meta" errors 2021-10-27 09:56:51 +02:00
util.c ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
xattr.c ceph: mark ceph_fmt_xattr() as printf-like for better type checking 2020-10-12 15:29:27 +02:00