diff options
author | Tejun Heo <tj@kernel.org> | 2011-08-23 14:01:04 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2011-08-23 14:01:04 -0400 |
commit | d27769ec3df1a8de9ca450d2dcd72d1ab259ba32 (patch) | |
tree | f17c064e0d8ac26fa80c1c72dccaca053bb55e94 /block/genhd.c | |
parent | 322a8b034003c0d46d39af85bf24fee27b902f48 (diff) |
block: add GENHD_FL_NO_PART_SCAN
There are cases where suppressing partition scan is useful - e.g. for
lo devices and pseudo SATA devices which advertise to be a disk but
get upset on partition scan (some port multiplier control devices show
such behavior).
This patch adds GENHD_FL_NO_PART_SCAN which suppresses partition scan
regardless of the number of possible partitions. disk_partitionable()
is renamed to disk_part_scan_enabled() as suppressing partition scan
doesn't imply the device can't be partitioned using
BLKPG_ADD/DEL_PARTITION calls from userland. show_partition() now
directly tests disk_max_parts() to maintain backward-compatibility.
-v2: Updated to make it clear that only partition scan is suppressed
not partitioning itself as suggested by Kay Sievers.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block/genhd.c')
-rw-r--r-- | block/genhd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/block/genhd.c b/block/genhd.c index 5cb51c55f6d8..2429ecbbd97d 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -536,7 +536,7 @@ void register_disk(struct gendisk *disk) | |||
536 | disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); | 536 | disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); |
537 | 537 | ||
538 | /* No minors to use for partitions */ | 538 | /* No minors to use for partitions */ |
539 | if (!disk_partitionable(disk)) | 539 | if (!disk_part_scan_enabled(disk)) |
540 | goto exit; | 540 | goto exit; |
541 | 541 | ||
542 | /* No such device (e.g., media were just removed) */ | 542 | /* No such device (e.g., media were just removed) */ |
@@ -841,7 +841,7 @@ static int show_partition(struct seq_file *seqf, void *v) | |||
841 | char buf[BDEVNAME_SIZE]; | 841 | char buf[BDEVNAME_SIZE]; |
842 | 842 | ||
843 | /* Don't show non-partitionable removeable devices or empty devices */ | 843 | /* Don't show non-partitionable removeable devices or empty devices */ |
844 | if (!get_capacity(sgp) || (!disk_partitionable(sgp) && | 844 | if (!get_capacity(sgp) || (!disk_max_parts(sgp) && |
845 | (sgp->flags & GENHD_FL_REMOVABLE))) | 845 | (sgp->flags & GENHD_FL_REMOVABLE))) |
846 | return 0; | 846 | return 0; |
847 | if (sgp->flags & GENHD_FL_SUPPRESS_PARTITION_INFO) | 847 | if (sgp->flags & GENHD_FL_SUPPRESS_PARTITION_INFO) |