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. -- 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