Loading fs/ceph/super.c +11 −4 Original line number Diff line number Diff line Loading @@ -636,19 +636,26 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc, req->r_num_caps = 2; err = ceph_mdsc_do_request(mdsc, NULL, req); if (err == 0) { struct inode *inode = req->r_target_inode; req->r_target_inode = NULL; dout("open_root_inode success\n"); if (ceph_ino(req->r_target_inode) == CEPH_INO_ROOT && if (ceph_ino(inode) == CEPH_INO_ROOT && fsc->sb->s_root == NULL) { root = d_alloc_root(req->r_target_inode); root = d_alloc_root(inode); if (!root) { iput(inode); root = ERR_PTR(-ENOMEM); goto out; } ceph_init_dentry(root); } else { root = d_obtain_alias(req->r_target_inode); root = d_obtain_alias(inode); } req->r_target_inode = NULL; dout("open_root_inode success, root dentry is %p\n", root); } else { root = ERR_PTR(err); } out: ceph_mdsc_put_request(req); return root; } Loading Loading
fs/ceph/super.c +11 −4 Original line number Diff line number Diff line Loading @@ -636,19 +636,26 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc, req->r_num_caps = 2; err = ceph_mdsc_do_request(mdsc, NULL, req); if (err == 0) { struct inode *inode = req->r_target_inode; req->r_target_inode = NULL; dout("open_root_inode success\n"); if (ceph_ino(req->r_target_inode) == CEPH_INO_ROOT && if (ceph_ino(inode) == CEPH_INO_ROOT && fsc->sb->s_root == NULL) { root = d_alloc_root(req->r_target_inode); root = d_alloc_root(inode); if (!root) { iput(inode); root = ERR_PTR(-ENOMEM); goto out; } ceph_init_dentry(root); } else { root = d_obtain_alias(req->r_target_inode); root = d_obtain_alias(inode); } req->r_target_inode = NULL; dout("open_root_inode success, root dentry is %p\n", root); } else { root = ERR_PTR(err); } out: ceph_mdsc_put_request(req); return root; } Loading