Loading fs/ceph/super.c +20 −29 Original line number Diff line number Diff line Loading @@ -396,11 +396,13 @@ static int parse_mount_options(struct ceph_mount_options **pfsopt, */ dev_name_end = strchr(dev_name, '/'); if (dev_name_end) { if (strlen(dev_name_end) > 1) { fsopt->server_path = kstrdup(dev_name_end, GFP_KERNEL); if (!fsopt->server_path) { err = -ENOMEM; goto out; } } } else { dev_name_end = dev_name + strlen(dev_name); } Loading Loading @@ -788,16 +790,11 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc, struct inode *inode = req->r_target_inode; req->r_target_inode = NULL; dout("open_root_inode success\n"); if (ceph_ino(inode) == CEPH_INO_ROOT && fsc->sb->s_root == NULL) { root = d_make_root(inode); if (!root) { root = ERR_PTR(-ENOMEM); goto out; } } else { root = d_obtain_root(inode); } ceph_init_dentry(root); dout("open_root_inode success, root dentry is %p\n", root); } else { Loading Loading @@ -825,17 +822,24 @@ static struct dentry *ceph_real_mount(struct ceph_fs_client *fsc) mutex_lock(&fsc->client->mount_mutex); if (!fsc->sb->s_root) { const char *path; err = __ceph_open_session(fsc->client, started); if (err < 0) goto out; dout("mount opening root\n"); root = open_root_dentry(fsc, "", started); if (!fsc->mount_options->server_path) { path = ""; dout("mount opening path \\t\n"); } else { path = fsc->mount_options->server_path + 1; dout("mount opening path %s\n", path); } root = open_root_dentry(fsc, path, started); if (IS_ERR(root)) { err = PTR_ERR(root); goto out; } fsc->sb->s_root = root; fsc->sb->s_root = dget(root); first = 1; err = ceph_fs_debugfs_init(fsc); Loading @@ -843,19 +847,6 @@ static struct dentry *ceph_real_mount(struct ceph_fs_client *fsc) goto fail; } if (!fsc->mount_options->server_path) { root = fsc->sb->s_root; dget(root); } else { const char *path = fsc->mount_options->server_path + 1; dout("mount opening path %s\n", path); root = open_root_dentry(fsc, path, started); if (IS_ERR(root)) { err = PTR_ERR(root); goto fail; } } fsc->mount_state = CEPH_MOUNT_MOUNTED; dout("mount success\n"); mutex_unlock(&fsc->client->mount_mutex); Loading Loading
fs/ceph/super.c +20 −29 Original line number Diff line number Diff line Loading @@ -396,11 +396,13 @@ static int parse_mount_options(struct ceph_mount_options **pfsopt, */ dev_name_end = strchr(dev_name, '/'); if (dev_name_end) { if (strlen(dev_name_end) > 1) { fsopt->server_path = kstrdup(dev_name_end, GFP_KERNEL); if (!fsopt->server_path) { err = -ENOMEM; goto out; } } } else { dev_name_end = dev_name + strlen(dev_name); } Loading Loading @@ -788,16 +790,11 @@ static struct dentry *open_root_dentry(struct ceph_fs_client *fsc, struct inode *inode = req->r_target_inode; req->r_target_inode = NULL; dout("open_root_inode success\n"); if (ceph_ino(inode) == CEPH_INO_ROOT && fsc->sb->s_root == NULL) { root = d_make_root(inode); if (!root) { root = ERR_PTR(-ENOMEM); goto out; } } else { root = d_obtain_root(inode); } ceph_init_dentry(root); dout("open_root_inode success, root dentry is %p\n", root); } else { Loading Loading @@ -825,17 +822,24 @@ static struct dentry *ceph_real_mount(struct ceph_fs_client *fsc) mutex_lock(&fsc->client->mount_mutex); if (!fsc->sb->s_root) { const char *path; err = __ceph_open_session(fsc->client, started); if (err < 0) goto out; dout("mount opening root\n"); root = open_root_dentry(fsc, "", started); if (!fsc->mount_options->server_path) { path = ""; dout("mount opening path \\t\n"); } else { path = fsc->mount_options->server_path + 1; dout("mount opening path %s\n", path); } root = open_root_dentry(fsc, path, started); if (IS_ERR(root)) { err = PTR_ERR(root); goto out; } fsc->sb->s_root = root; fsc->sb->s_root = dget(root); first = 1; err = ceph_fs_debugfs_init(fsc); Loading @@ -843,19 +847,6 @@ static struct dentry *ceph_real_mount(struct ceph_fs_client *fsc) goto fail; } if (!fsc->mount_options->server_path) { root = fsc->sb->s_root; dget(root); } else { const char *path = fsc->mount_options->server_path + 1; dout("mount opening path %s\n", path); root = open_root_dentry(fsc, path, started); if (IS_ERR(root)) { err = PTR_ERR(root); goto fail; } } fsc->mount_state = CEPH_MOUNT_MOUNTED; dout("mount success\n"); mutex_unlock(&fsc->client->mount_mutex); Loading