|
@@ -200,11 +200,8 @@ struct mapped_device {
|
|
/* forced geometry settings */
|
|
/* forced geometry settings */
|
|
struct hd_geometry geometry;
|
|
struct hd_geometry geometry;
|
|
|
|
|
|
- /* sysfs handle */
|
|
|
|
- struct kobject kobj;
|
|
|
|
-
|
|
|
|
- /* wait until the kobject is released */
|
|
|
|
- struct completion kobj_completion;
|
|
|
|
|
|
+ /* kobject and completion */
|
|
|
|
+ struct dm_kobject_holder kobj_holder;
|
|
|
|
|
|
/* zero-length flush that will be cloned and submitted to targets */
|
|
/* zero-length flush that will be cloned and submitted to targets */
|
|
struct bio flush_bio;
|
|
struct bio flush_bio;
|
|
@@ -2044,7 +2041,7 @@ static struct mapped_device *alloc_dev(int minor)
|
|
init_waitqueue_head(&md->wait);
|
|
init_waitqueue_head(&md->wait);
|
|
INIT_WORK(&md->work, dm_wq_work);
|
|
INIT_WORK(&md->work, dm_wq_work);
|
|
init_waitqueue_head(&md->eventq);
|
|
init_waitqueue_head(&md->eventq);
|
|
- init_completion(&md->kobj_completion);
|
|
|
|
|
|
+ init_completion(&md->kobj_holder.completion);
|
|
|
|
|
|
md->disk->major = _major;
|
|
md->disk->major = _major;
|
|
md->disk->first_minor = minor;
|
|
md->disk->first_minor = minor;
|
|
@@ -2906,14 +2903,14 @@ struct gendisk *dm_disk(struct mapped_device *md)
|
|
|
|
|
|
struct kobject *dm_kobject(struct mapped_device *md)
|
|
struct kobject *dm_kobject(struct mapped_device *md)
|
|
{
|
|
{
|
|
- return &md->kobj;
|
|
|
|
|
|
+ return &md->kobj_holder.kobj;
|
|
}
|
|
}
|
|
|
|
|
|
struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
|
|
struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
|
|
{
|
|
{
|
|
struct mapped_device *md;
|
|
struct mapped_device *md;
|
|
|
|
|
|
- md = container_of(kobj, struct mapped_device, kobj);
|
|
|
|
|
|
+ md = container_of(kobj, struct mapped_device, kobj_holder.kobj);
|
|
|
|
|
|
if (test_bit(DMF_FREEING, &md->flags) ||
|
|
if (test_bit(DMF_FREEING, &md->flags) ||
|
|
dm_deleting_md(md))
|
|
dm_deleting_md(md))
|
|
@@ -2923,13 +2920,6 @@ struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
|
|
return md;
|
|
return md;
|
|
}
|
|
}
|
|
|
|
|
|
-struct completion *dm_get_completion_from_kobject(struct kobject *kobj)
|
|
|
|
-{
|
|
|
|
- struct mapped_device *md = container_of(kobj, struct mapped_device, kobj);
|
|
|
|
-
|
|
|
|
- return &md->kobj_completion;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
int dm_suspended_md(struct mapped_device *md)
|
|
int dm_suspended_md(struct mapped_device *md)
|
|
{
|
|
{
|
|
return test_bit(DMF_SUSPENDED, &md->flags);
|
|
return test_bit(DMF_SUSPENDED, &md->flags);
|