diff options
Diffstat (limited to 'drivers/nvme/host/multipath.c')
-rw-r--r-- | drivers/nvme/host/multipath.c | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c index 3b211d9e58b8..060f69e03427 100644 --- a/drivers/nvme/host/multipath.c +++ b/drivers/nvme/host/multipath.c | |||
@@ -198,30 +198,16 @@ void nvme_mpath_add_disk(struct nvme_ns_head *head) | |||
198 | { | 198 | { |
199 | if (!head->disk) | 199 | if (!head->disk) |
200 | return; | 200 | return; |
201 | device_add_disk(&head->subsys->dev, head->disk); | ||
202 | if (sysfs_create_group(&disk_to_dev(head->disk)->kobj, | ||
203 | &nvme_ns_id_attr_group)) | ||
204 | pr_warn("%s: failed to create sysfs group for identification\n", | ||
205 | head->disk->disk_name); | ||
206 | } | ||
207 | |||
208 | void nvme_mpath_add_disk_links(struct nvme_ns *ns) | ||
209 | { | ||
210 | struct kobject *slave_disk_kobj, *holder_disk_kobj; | ||
211 | |||
212 | if (!ns->head->disk) | ||
213 | return; | ||
214 | |||
215 | slave_disk_kobj = &disk_to_dev(ns->disk)->kobj; | ||
216 | if (sysfs_create_link(ns->head->disk->slave_dir, slave_disk_kobj, | ||
217 | kobject_name(slave_disk_kobj))) | ||
218 | return; | ||
219 | 201 | ||
220 | holder_disk_kobj = &disk_to_dev(ns->head->disk)->kobj; | 202 | mutex_lock(&head->subsys->lock); |
221 | if (sysfs_create_link(ns->disk->part0.holder_dir, holder_disk_kobj, | 203 | if (!(head->disk->flags & GENHD_FL_UP)) { |
222 | kobject_name(holder_disk_kobj))) | 204 | device_add_disk(&head->subsys->dev, head->disk); |
223 | sysfs_remove_link(ns->head->disk->slave_dir, | 205 | if (sysfs_create_group(&disk_to_dev(head->disk)->kobj, |
224 | kobject_name(slave_disk_kobj)); | 206 | &nvme_ns_id_attr_group)) |
207 | pr_warn("%s: failed to create sysfs group for identification\n", | ||
208 | head->disk->disk_name); | ||
209 | } | ||
210 | mutex_unlock(&head->subsys->lock); | ||
225 | } | 211 | } |
226 | 212 | ||
227 | void nvme_mpath_remove_disk(struct nvme_ns_head *head) | 213 | void nvme_mpath_remove_disk(struct nvme_ns_head *head) |
@@ -238,14 +224,3 @@ void nvme_mpath_remove_disk(struct nvme_ns_head *head) | |||
238 | blk_cleanup_queue(head->disk->queue); | 224 | blk_cleanup_queue(head->disk->queue); |
239 | put_disk(head->disk); | 225 | put_disk(head->disk); |
240 | } | 226 | } |
241 | |||
242 | void nvme_mpath_remove_disk_links(struct nvme_ns *ns) | ||
243 | { | ||
244 | if (!ns->head->disk) | ||
245 | return; | ||
246 | |||
247 | sysfs_remove_link(ns->disk->part0.holder_dir, | ||
248 | kobject_name(&disk_to_dev(ns->head->disk)->kobj)); | ||
249 | sysfs_remove_link(ns->head->disk->slave_dir, | ||
250 | kobject_name(&disk_to_dev(ns->disk)->kobj)); | ||
251 | } | ||