提交 b2037bb6 编写于 作者: A Al Viro

ll_new_inode(): don't bother with name - it's always &dentry->d_name

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 60dd654e
...@@ -775,9 +775,9 @@ static void ll_update_times(struct ptlrpc_request *request, ...@@ -775,9 +775,9 @@ static void ll_update_times(struct ptlrpc_request *request,
LTIME_S(inode->i_ctime) = body->ctime; LTIME_S(inode->i_ctime) = body->ctime;
} }
static int ll_new_node(struct inode *dir, struct qstr *name, static int ll_new_node(struct inode *dir, struct dentry *dentry,
const char *tgt, int mode, int rdev, const char *tgt, int mode, int rdev,
struct dentry *dchild, __u32 opc) __u32 opc)
{ {
struct ptlrpc_request *request = NULL; struct ptlrpc_request *request = NULL;
struct md_op_data *op_data; struct md_op_data *op_data;
...@@ -789,8 +789,10 @@ static int ll_new_node(struct inode *dir, struct qstr *name, ...@@ -789,8 +789,10 @@ static int ll_new_node(struct inode *dir, struct qstr *name,
if (unlikely(tgt != NULL)) if (unlikely(tgt != NULL))
tgt_len = strlen(tgt) + 1; tgt_len = strlen(tgt) + 1;
op_data = ll_prep_md_op_data(NULL, dir, NULL, name->name, op_data = ll_prep_md_op_data(NULL, dir, NULL,
name->len, 0, opc, NULL); dentry->d_name.name,
dentry->d_name.len,
0, opc, NULL);
if (IS_ERR(op_data)) { if (IS_ERR(op_data)) {
err = PTR_ERR(op_data); err = PTR_ERR(op_data);
goto err_exit; goto err_exit;
...@@ -806,13 +808,11 @@ static int ll_new_node(struct inode *dir, struct qstr *name, ...@@ -806,13 +808,11 @@ static int ll_new_node(struct inode *dir, struct qstr *name,
ll_update_times(request, dir); ll_update_times(request, dir);
if (dchild) { err = ll_prep_inode(&inode, request, dir->i_sb, NULL);
err = ll_prep_inode(&inode, request, dchild->d_sb, NULL);
if (err) if (err)
goto err_exit; goto err_exit;
d_instantiate(dchild, inode); d_instantiate(dentry, inode);
}
err_exit: err_exit:
ptlrpc_req_finished(request); ptlrpc_req_finished(request);
...@@ -839,8 +839,8 @@ static int ll_mknod(struct inode *dir, struct dentry *dchild, ...@@ -839,8 +839,8 @@ static int ll_mknod(struct inode *dir, struct dentry *dchild,
case S_IFBLK: case S_IFBLK:
case S_IFIFO: case S_IFIFO:
case S_IFSOCK: case S_IFSOCK:
err = ll_new_node(dir, &dchild->d_name, NULL, mode, err = ll_new_node(dir, dchild, NULL, mode,
old_encode_dev(rdev), dchild, old_encode_dev(rdev),
LUSTRE_OPC_MKNOD); LUSTRE_OPC_MKNOD);
break; break;
case S_IFDIR: case S_IFDIR:
...@@ -1161,7 +1161,7 @@ static int ll_mkdir(struct inode *dir, struct dentry *dentry, ll_umode_t mode) ...@@ -1161,7 +1161,7 @@ static int ll_mkdir(struct inode *dir, struct dentry *dentry, ll_umode_t mode)
if (!IS_POSIXACL(dir) || !exp_connect_umask(ll_i2mdexp(dir))) if (!IS_POSIXACL(dir) || !exp_connect_umask(ll_i2mdexp(dir)))
mode &= ~current_umask(); mode &= ~current_umask();
mode = (mode & (S_IRWXUGO|S_ISVTX)) | S_IFDIR; mode = (mode & (S_IRWXUGO|S_ISVTX)) | S_IFDIR;
err = ll_new_node(dir, &dentry->d_name, NULL, mode, 0, dentry, LUSTRE_OPC_MKDIR); err = ll_new_node(dir, dentry, NULL, mode, 0, LUSTRE_OPC_MKDIR);
if (!err) if (!err)
ll_stats_ops_tally(ll_i2sbi(dir), LPROC_LL_MKDIR, 1); ll_stats_ops_tally(ll_i2sbi(dir), LPROC_LL_MKDIR, 1);
...@@ -1183,8 +1183,8 @@ static int ll_symlink(struct inode *dir, struct dentry *dentry, ...@@ -1183,8 +1183,8 @@ static int ll_symlink(struct inode *dir, struct dentry *dentry,
dentry, dir->i_ino, dir->i_generation, dentry, dir->i_ino, dir->i_generation,
dir, 3000, oldname); dir, 3000, oldname);
err = ll_new_node(dir, &dentry->d_name, oldname, S_IFLNK | S_IRWXUGO, err = ll_new_node(dir, dentry, oldname, S_IFLNK | S_IRWXUGO,
0, dentry, LUSTRE_OPC_SYMLINK); 0, LUSTRE_OPC_SYMLINK);
if (!err) if (!err)
ll_stats_ops_tally(ll_i2sbi(dir), LPROC_LL_SYMLINK, 1); ll_stats_ops_tally(ll_i2sbi(dir), LPROC_LL_SYMLINK, 1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册