diff options
Diffstat (limited to 'kernel/dir.c')
-rw-r--r-- | kernel/dir.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/kernel/dir.c b/kernel/dir.c index af41ab5..aa31295 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -182,8 +182,10 @@ static int fuse_lookup_iget(struct inode *dir, struct dentry *entry, if (err && err != -ENOENT) return err; - entry->d_time = time_to_jiffies(outarg.entry_valid, - outarg.entry_valid_nsec); + if (inode) + entry->d_time = time_to_jiffies(outarg.entry_valid, + outarg.entry_valid_nsec); + entry->d_op = &fuse_dentry_operations; *inodep = inode; return 0; @@ -210,6 +212,9 @@ static int lookup_new_entry(struct fuse_conn *fc, struct fuse_req *req, return -EINVAL; } + entry->d_time = time_to_jiffies(outarg->entry_valid, + outarg->entry_valid_nsec); + d_instantiate(entry, inode); return 0; } @@ -847,7 +852,7 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry) static int fuse_mknod(struct inode *dir, struct dentry *entry, int mode, int rdev) { - return fuse_mknod(dir, entry, mode, rdev); + return _fuse_mknod(dir, entry, mode, rdev); } static int fuse_dentry_revalidate(struct dentry *entry, int flags) |