diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2004-01-27 17:04:59 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2004-01-27 17:04:59 +0000 |
commit | f4f8b89730a3b94d5118d5ec66438e7dec8e6b3d (patch) | |
tree | c4243893671b4f1ccad33c5be80c8e9d94325b2b /kernel/dir.c | |
parent | edf2663cdff947d9615cee50833e3e215bc62a6f (diff) | |
download | libfuse-f4f8b89730a3b94d5118d5ec66438e7dec8e6b3d.tar.gz |
minor fixes
Diffstat (limited to 'kernel/dir.c')
-rw-r--r-- | kernel/dir.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/kernel/dir.c b/kernel/dir.c index cd41a88..739b677 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -272,12 +272,24 @@ static int fuse_remove(struct inode *dir, struct dentry *entry, static int fuse_unlink(struct inode *dir, struct dentry *entry) { - return fuse_remove(dir, entry, FUSE_UNLINK); + int err = fuse_remove(dir, entry, FUSE_UNLINK); + if(!err) { + /* FIXME: the new i_nlink could be returned by the + unlink operation */ + err = fuse_do_getattr(entry->d_inode); + if(err == -ENOENT) + entry->d_inode->i_nlink = 0; + return 0; + } + return err; } static int fuse_rmdir(struct inode *dir, struct dentry *entry) { - return fuse_remove(dir, entry, FUSE_RMDIR); + int err = fuse_remove(dir, entry, FUSE_RMDIR); + if(!err) + entry->d_inode->i_nlink = 0; + return err; } static int fuse_rename(struct inode *olddir, struct dentry *oldent, |