summaryrefslogtreecommitdiff
path: root/include/linux/genhd.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2008-08-29 09:01:47 +0200
committerJens Axboe <jens.axboe@oracle.com>2008-10-09 08:56:07 +0200
commit548b10eb2959c96cef6fc29fc96e0931eeb53bc5 (patch)
tree7166bc04336b80a69f87a9add097919b418f4f43 /include/linux/genhd.h
parent80795aefb76d10c5d698e60c7e7750b5330787da (diff)
downloadlwn-548b10eb2959c96cef6fc29fc96e0931eeb53bc5.tar.gz
lwn-548b10eb2959c96cef6fc29fc96e0931eeb53bc5.zip
block: move __dev from disk to part0
Move disk->__dev to part0->__dev. This simplifies bdget_disk() and lookup_devt() and allows common sysfs attributes to be unified. part_to_disk() is updated to handle part0 -> disk. Updated to include a fix from Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, he writes: "part0 is a "special" partition and doesn't need to have capacity set - this fixes regression caused by "block: move __dev from disk to part0" commit." Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux/genhd.h')
-rw-r--r--include/linux/genhd.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 1cf828148ec6..ff293ec8b3f7 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -16,9 +16,9 @@
#ifdef CONFIG_BLOCK
#define kobj_to_dev(k) container_of((k), struct device, kobj)
-#define dev_to_disk(device) container_of((device), struct gendisk, __dev)
+#define dev_to_disk(device) container_of((device), struct gendisk, part0.__dev)
#define dev_to_part(device) container_of((device), struct hd_struct, __dev)
-#define disk_to_dev(disk) (&((disk)->__dev))
+#define disk_to_dev(disk) (&(disk)->part0.__dev)
#define part_to_dev(part) (&((part)->__dev))
extern struct device_type part_type;
@@ -141,7 +141,6 @@ struct gendisk {
int flags;
struct device *driverfs_dev; // FIXME: remove
- struct device __dev;
struct kobject *holder_dir;
struct kobject *slave_dir;
@@ -164,8 +163,12 @@ struct gendisk {
static inline struct gendisk *part_to_disk(struct hd_struct *part)
{
- if (likely(part))
- return dev_to_disk(part_to_dev(part)->parent);
+ if (likely(part)) {
+ if (part->partno)
+ return dev_to_disk(part_to_dev(part)->parent);
+ else
+ return dev_to_disk(part_to_dev(part));
+ }
return NULL;
}