Re: Kernel warnings in fs/inode.c:302 drop_nlink+0x28/0x40

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

 



On Mon, Mar 23, 2020 at 7:27 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>
> On Mon, Mar 23, 2020 at 4:53 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
> >
> > On Mon, Mar 23, 2020 at 3:21 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
> > >
> > > On Mon, Mar 23, 2020 at 2:24 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
> >
> > > > IDGI. coming from vfs_unlink() and vfs_rename() it doesn't look like
> > > > it is possible for victim inode not to have a hashed alias, so the
> > > > alias test seems futile.
> > >
> > > Yeah, needs a comment: both ovl_remove_upper() and
> > > ovl_remove_and_whiteout() unhash the dentry before returning, so
> > > d_find_alias() will find another hashed dentry or none.
> >
> > Except that doesn't seem to be true for the overwriting rename case...
> >
> > Attached patch should work for both.
> >
>
> It still looks quite hacky.
> Why do we not look at upper->i_nlink in order to fix the situation?
>
> For index=on, there is already code to handle lower hardlink skew case,
> including pr_warn and several xfstests (overlay/034 for example).
> The check is buried in ovl_nlink_end() => ovl_cleanup_index().
> It's keeping overlay i_nlink above upper i_nlink.
>
> In fact, if you change one line in overlay/034 it triggers the reported
> bug, so we can just fork this test.
>
> -lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
> +lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER
>  workdir=$OVL_BASE_SCRATCH_MNT/$OVL_WORK
>
> How about adding a check in ovl_nlink_start() to fix overlay i_nlink
> below upper i_link?
> It would be a valid check for both index=off and on.
> I will try to write it up later.
>

https://lore.kernel.org/linux-unionfs/20200323190850.3091-1-amir73il@xxxxxxxxx/T/#u

Sorry, Phasip, forgot to CC you.

Thanks,
Amir.



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux