mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 17:57:05 +07:00
c297eb4269
r_safe_completion is currently, and has always been, signaled only if on-disk ack was requested. It's there for fsync and syncfs, which wait for in-flight writes to flush - all data write requests set ONDISK. However, the pool perm check code introduced in 4.2 sends a write request with only ACK set. An unfortunately timed syncfs can then hang forever: r_safe_completion won't be signaled because only an unsafe reply was requested. We could patch ceph_osdc_sync() to skip !ONDISK write requests, but that is somewhat incomplete and yet another special case. Instead, rename this completion to r_done_completion and always signal it when the OSD client is done with the request, whether unsafe, safe, or error. This is a bit cleaner and helps with the cancellation code. Reported-by: Yan, Zheng <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
||
---|---|---|
.. | ||
auth.h | ||
buffer.h | ||
ceph_debug.h | ||
ceph_features.h | ||
ceph_frag.h | ||
ceph_fs.h | ||
ceph_hash.h | ||
cls_lock_client.h | ||
debugfs.h | ||
decode.h | ||
libceph.h | ||
mdsmap.h | ||
messenger.h | ||
mon_client.h | ||
msgpool.h | ||
msgr.h | ||
osd_client.h | ||
osdmap.h | ||
pagelist.h | ||
rados.h | ||
string_table.h | ||
types.h |