|
@@ -695,9 +695,8 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry,
|
|
|
ceph_mdsc_put_request(req);
|
|
|
|
|
|
if (!err)
|
|
|
- err = ceph_init_acl(dentry, dentry->d_inode, dir);
|
|
|
-
|
|
|
- if (err)
|
|
|
+ ceph_init_acl(dentry, dentry->d_inode, dir);
|
|
|
+ else
|
|
|
d_drop(dentry);
|
|
|
return err;
|
|
|
}
|
|
@@ -735,7 +734,9 @@ static int ceph_symlink(struct inode *dir, struct dentry *dentry,
|
|
|
if (!err && !req->r_reply_info.head->is_dentry)
|
|
|
err = ceph_handle_notrace_create(dir, dentry);
|
|
|
ceph_mdsc_put_request(req);
|
|
|
- if (err)
|
|
|
+ if (!err)
|
|
|
+ ceph_init_acl(dentry, dentry->d_inode, dir);
|
|
|
+ else
|
|
|
d_drop(dentry);
|
|
|
return err;
|
|
|
}
|
|
@@ -776,7 +777,9 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
err = ceph_handle_notrace_create(dir, dentry);
|
|
|
ceph_mdsc_put_request(req);
|
|
|
out:
|
|
|
- if (err < 0)
|
|
|
+ if (!err)
|
|
|
+ ceph_init_acl(dentry, dentry->d_inode, dir);
|
|
|
+ else
|
|
|
d_drop(dentry);
|
|
|
return err;
|
|
|
}
|