Re: [PATCH v2 0/3] Avert possible deadlock with splice() and fanotify

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2023-11-30 at 16:16 +0200, Amir Goldstein wrote:
> 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.
> 

Xiubo (cc'ed) is probably in a better position these days to review and
get you test results with this patch. 

> The following patches rids us of the deadlock by not holding
> file_start_write() while reading from splice source file in the
> cases where source and destination can be on different arbitrary
> filesystems.
> 
> The patches apply and tested on top of vfs.rw branch.
> 
> Thanks,
> Amir.
> 
> Changes since v1:
> - Add patch to deal with nfsd/ksmbd server-side-copy
> - Shorten helper name to splice_file_range()
> - Added assertion for flags value in generic_copy_file_range()
> - Added RVB from Jan
> 
> Amir Goldstein (3):
>   fs: fork splice_file_range() from do_splice_direct()
>   fs: move file_start_write() into direct_splice_actor()
>   fs: use do_splice_direct() for nfsd/ksmbd server-side-copy
> 
>  fs/ceph/file.c         |  9 +++--
>  fs/overlayfs/copy_up.c |  2 -
>  fs/read_write.c        | 42 +++++++++++---------
>  fs/splice.c            | 88 +++++++++++++++++++++++++++++++-----------
>  include/linux/fs.h     |  2 -
>  include/linux/splice.h | 13 ++++---
>  6 files changed, 103 insertions(+), 53 deletions(-)
> 

-- 
Jeff Layton <jlayton@xxxxxxxxxx>





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux