On Mon, Apr 15, 2024 at 11:20:53AM -0400, cel@xxxxxxxxxx wrote: > From: Chuck Lever <chuck.lever@xxxxxxxxxx> > > The existing code in shmem_rename2() allocates a fresh directory > offset value when renaming over an existing destination entry. User > space does not expect this behavior. In particular, applications > that rename while walking a directory can loop indefinitely because > they never reach the end of the directory. > > The only test that is problematic at the moment is generic/449, > which live-locks (interruptibly). I don't have a baseline yet, so > I can't say whether the fix introduces this behavior or pre-dates > the shmem conversion to simple_offset. v6.5 exhibits the same behavior, so this fix did not introduce this issue. IMO these patches are ready. > -- > Changes since v1: > - Patches reorganized for easier review and backport > - Passes git regression and fstests (with scratch device) > - Dropped the API clean-up patch for now > > Chuck Lever (3): > libfs: Fix simple_offset_rename_exchange() > libfs: Add simple_offset_rename() API > shmem: Fix shmem_rename2() > > fs/libfs.c | 55 +++++++++++++++++++++++++++++++++++++++++----- > include/linux/fs.h | 2 ++ > mm/shmem.c | 3 +-- > 3 files changed, 52 insertions(+), 8 deletions(-) > > > base-commit: fec50db7033ea478773b159e0e2efb135270e3b7 > -- > 2.44.0 -- Chuck Lever