Christian, Josef has helped me see the light and figure out how to avoid the possible deadlock, which involves: - splice() from source file in a loop mounted fs to dest file in a host fs, where the loop image file is - fsfreeze on host fs - write to host fs in context of fanotify permission event handler (FAN_ACCESS_PERM) on the splice source file The first patch should not be changing any logic. I only build tested the ceph patch, so hoping to get an Acked-by/Tested-by from Jeff. The second patch rids us of the deadlock by not holding file_start_write() while reading from splice source file. The patches apply and tested on top of vfs.rw branch. Thanks, Amir. Amir Goldstein (2): fs: fork do_splice_copy_file_range() from do_splice_direct() fs: move file_start_write() into direct_splice_actor() fs/ceph/file.c | 9 +++-- fs/overlayfs/copy_up.c | 2 - fs/read_write.c | 8 +--- fs/splice.c | 88 +++++++++++++++++++++++++++++++----------- include/linux/fs.h | 2 - include/linux/splice.h | 13 ++++--- 6 files changed, 81 insertions(+), 41 deletions(-) -- 2.34.1