fuse: fix stat call on 32 bit platforms
[firefly-linux-kernel-4.4.55.git] / fs / fuse / dir.c
index 0d0e3faddcfa0bbd9ddac898d9e7caa0fc2b57bf..c04a025c677f56edc39c4b389ff8539f47eca2f0 100644 (file)
@@ -667,8 +667,6 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
        if (IS_ERR(req))
                return PTR_ERR(req);
 
-       dentry_unhash(entry);
-
        req->in.h.opcode = FUSE_RMDIR;
        req->in.h.nodeid = get_node_id(dir);
        req->in.numargs = 1;
@@ -694,9 +692,6 @@ static int fuse_rename(struct inode *olddir, struct dentry *oldent,
        struct fuse_conn *fc = get_fuse_conn(olddir);
        struct fuse_req *req = fuse_get_req(fc);
 
-       if (newent->d_inode && S_ISDIR(newent->d_inode->i_mode))
-               dentry_unhash(newent);
-
        if (IS_ERR(req))
                return PTR_ERR(req);
 
@@ -863,6 +858,7 @@ int fuse_update_attributes(struct inode *inode, struct kstat *stat,
                if (stat) {
                        generic_fillattr(inode, stat);
                        stat->mode = fi->orig_i_mode;
+                       stat->ino = fi->orig_ino;
                }
        }