Re: [PATCH] fuse: don't truncate cached, mutated symlink

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

 



Hello Miklos,

Thank you so much for the patch!

I finally managed to build RHEL9 with your patch and I confirm that truncation of the symlinks is not happening anymore.

However, I will need to do some further testing as I see that sometimes the updating of symlinks is not propagated correctly.
This should not be a kernel problem.
I believe this is more a CVMFS problem, its revision-based update  process, that there is no way to pause user interaction with the fuse mount, and the asynchronous removal from inodes/dentries.

Thanks again
Laura


________________________________________
From: Al Viro <viro@xxxxxxxxxxxxxxxx> on behalf of Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Sent: Sunday, February 23, 2025 20:41
To: Miklos Szeredi <miklos@xxxxxxxxxx>
Cc: Miklos Szeredi <mszeredi@xxxxxxxxxx>; linux-fsdevel@xxxxxxxxxxxxxxx <linux-fsdevel@xxxxxxxxxxxxxxx>; Christian Brauner <brauner@xxxxxxxxxx>; Bernd Schubert <bernd.schubert@xxxxxxxxxxx>; Laura Promberger <laura.promberger@xxxxxxx>; Sam Lewis <samclewis@xxxxxxxxxx>
Subject: Re: [PATCH] fuse: don't truncate cached, mutated symlink
 
On Sun, Feb 23, 2025 at 08:12:21PM +0100, Miklos Szeredi wrote:
> On Sun, 23 Feb 2025 at 01:28, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Thu, Feb 20, 2025 at 11:02:58AM +0100, Miklos Szeredi wrote:
> >
> > > The solution is to just remove this truncation.  This can cause a
> > > regression in a filesystem that relies on supplying a symlink larger than
> > > the file size, but this is unlikely.  If that happens we'd need to make
> > > this behavior conditional.
> >
> > Note, BTW, that page *contents* must not change at all, so truncation is
> > only safe if we have ->i_size guaranteed to be stable.
> >
> > Core pathwalk really counts upon the string remaining immutable, and that
> > does include the string returned by ->get_link().
>
> Page contents will not change after initial readlink, but page could
> get invalidated and a fresh page filled with new value for the same
> object.

*nod*

My point is that truncation of something that might be traversed by another
pathwalk is a hard bug - we only get away with doing that in page_get_link()
because it's idempotent.  If ->i_size can change, we are not allowed to
do that.




[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