fuse: fix nlink after unlink
authorMiklos Szeredi <mszeredi@suse.cz>
Mon, 5 Mar 2012 14:48:11 +0000 (15:48 +0100)
committerMiklos Szeredi <mszeredi@suse.cz>
Mon, 5 Mar 2012 14:48:11 +0000 (15:48 +0100)
commitac45d61357e86b9a0cf14e45e8e09dfb626970ef
treee560d3a8f26d1530780ed62f2a4bd3f16a20ac55
parent192cfd58774b4d17b2fe8bdc77d89c2ef4e0591d
fuse: fix nlink after unlink

Anand Avati reports that the following sequence of system calls fail on a fuse
filesystem:

  create("filename") => 0
  link("filename", "linkname") => 0
  unlink("filename") => 0
  link("linkname", "filename") => -ENOENT ### BUG ###

vfs_link() fails with ENOENT if i_nlink is zero, this is done to prevent
resurrecting already deleted files.

Fuse clears i_nlink on unlink even if there are other links pointing to the
file.

Reported-by: Anand Avati <avati@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
fs/fuse/dir.c