Re: [PATCH] ovl: relax WARN_ON() when decoding lower directory file handle

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

 



On Wed, Jun 17, 2020 at 8:57 AM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>
> Decoding a lower directory file handle to overlay path with cold
> inode/dentry cache may go as follows:
>
> 1. Decode real lower file handle to lower dir path
> 2. Check if lower dir is indexed (was copied up)
> 3. If indexed, get the upper dir path from index
> 4. Lookup upper dir path in overlay
> 5. If overlay path found, verify that overlay lower is the lower dir
>    from step 1
>
> On failure to verify step 5 above, user will get an ESTALE error and
> a WARN_ON will be printed.
>
> A mismatch in step 5 could be a result of lower directory that was renamed
> while overlay was offline, after that lower directory has been copied
> up and indexed.
>
> This is a scripted reproducer based on xfstest overlay/052:
>
>   # Create lower subdir
>   create_dirs
>   create_test_files $lower/lowertestdir/subdir
>   mount_dirs
>   # Copy up lower dir and encode lower subdir file handle
>   touch $SCRATCH_MNT/lowertestdir
>   test_file_handles $SCRATCH_MNT/lowertestdir/subdir -p -o $tmp.fhandle
>   # Rename lower dir offline
>   unmount_dirs
>   mv $lower/lowertestdir $lower/lowertestdir.new/
>   mount_dirs
>   # Attempt to decode lower subdir file handle
>   test_file_handles $SCRATCH_MNT -p -i $tmp.fhandle
>
> Since this WARN_ON() can be triggered by user we need to relax it.
>
> Fixes: 4b91c30a5a19 ("ovl: lookup connected ancestor of dir in inode...")
> Cc: <stable@xxxxxxxxxxxxxxx> # v4.16+
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>

Applied, thanks.

Miklos



[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