• Miklos Szeredi's avatar
    ovl: fix WARN_ON nlink drop to zero · 83552eac
    Miklos Szeredi authored
    Changes to underlying layers should not cause WARN_ON(), but this repro
    does:
    
     mkdir w l u mnt
     sudo mount -t overlay -o workdir=w,lowerdir=l,upperdir=u overlay mnt
     touch mnt/h
     ln u/h u/k
     rm -rf mnt/k
     rm -rf mnt/h
     dmesg
    
     ------------[ cut here ]------------
     WARNING: CPU: 1 PID: 116244 at fs/inode.c:302 drop_nlink+0x28/0x40
    
    After upper hardlinks were added while overlay is mounted, unlinking all
    overlay hardlinks drops overlay nlink to zero before all upper inodes
    are unlinked.
    
    After unlink/rename prevent i_nlink from going to zero if there are still
    hashed aliases (i.e. cached hard links to the victim) remaining.
    Reported-by: default avatarPhasip <phasip@gmail.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
    83552eac
dir.c 28.6 KB