Loading block/genhd.c +2 −2 Original line number Diff line number Diff line Loading @@ -536,7 +536,7 @@ void register_disk(struct gendisk *disk) disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); /* No minors to use for partitions */ if (!disk_partitionable(disk)) if (!disk_part_scan_enabled(disk)) goto exit; /* No such device (e.g., media were just removed) */ Loading Loading @@ -841,7 +841,7 @@ static int show_partition(struct seq_file *seqf, void *v) char buf[BDEVNAME_SIZE]; /* Don't show non-partitionable removeable devices or empty devices */ if (!get_capacity(sgp) || (!disk_partitionable(sgp) && if (!get_capacity(sgp) || (!disk_max_parts(sgp) && (sgp->flags & GENHD_FL_REMOVABLE))) return 0; if (sgp->flags & GENHD_FL_SUPPRESS_PARTITION_INFO) Loading block/ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ static int blkdev_reread_part(struct block_device *bdev) struct gendisk *disk = bdev->bd_disk; int res; if (!disk_partitionable(disk) || bdev != bdev->bd_contains) if (!disk_part_scan_enabled(disk) || bdev != bdev->bd_contains) return -EINVAL; if (!capable(CAP_SYS_ADMIN)) return -EACCES; Loading fs/block_dev.c +1 −1 Original line number Diff line number Diff line Loading @@ -971,7 +971,7 @@ static void flush_disk(struct block_device *bdev, bool kill_dirty) if (!bdev->bd_disk) return; if (disk_partitionable(bdev->bd_disk)) if (disk_part_scan_enabled(bdev->bd_disk)) bdev->bd_invalidated = 1; } Loading include/linux/genhd.h +4 −2 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ struct hd_struct { #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ #define GENHD_FL_NATIVE_CAPACITY 128 #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 256 #define GENHD_FL_NO_PART_SCAN 512 enum { DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ Loading Loading @@ -234,9 +235,10 @@ static inline int disk_max_parts(struct gendisk *disk) return disk->minors; } static inline bool disk_partitionable(struct gendisk *disk) static inline bool disk_part_scan_enabled(struct gendisk *disk) { return disk_max_parts(disk) > 1; return disk_max_parts(disk) > 1 && !(disk->flags & GENHD_FL_NO_PART_SCAN); } static inline dev_t disk_devt(struct gendisk *disk) Loading Loading
block/genhd.c +2 −2 Original line number Diff line number Diff line Loading @@ -536,7 +536,7 @@ void register_disk(struct gendisk *disk) disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); /* No minors to use for partitions */ if (!disk_partitionable(disk)) if (!disk_part_scan_enabled(disk)) goto exit; /* No such device (e.g., media were just removed) */ Loading Loading @@ -841,7 +841,7 @@ static int show_partition(struct seq_file *seqf, void *v) char buf[BDEVNAME_SIZE]; /* Don't show non-partitionable removeable devices or empty devices */ if (!get_capacity(sgp) || (!disk_partitionable(sgp) && if (!get_capacity(sgp) || (!disk_max_parts(sgp) && (sgp->flags & GENHD_FL_REMOVABLE))) return 0; if (sgp->flags & GENHD_FL_SUPPRESS_PARTITION_INFO) Loading
block/ioctl.c +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ static int blkdev_reread_part(struct block_device *bdev) struct gendisk *disk = bdev->bd_disk; int res; if (!disk_partitionable(disk) || bdev != bdev->bd_contains) if (!disk_part_scan_enabled(disk) || bdev != bdev->bd_contains) return -EINVAL; if (!capable(CAP_SYS_ADMIN)) return -EACCES; Loading
fs/block_dev.c +1 −1 Original line number Diff line number Diff line Loading @@ -971,7 +971,7 @@ static void flush_disk(struct block_device *bdev, bool kill_dirty) if (!bdev->bd_disk) return; if (disk_partitionable(bdev->bd_disk)) if (disk_part_scan_enabled(bdev->bd_disk)) bdev->bd_invalidated = 1; } Loading
include/linux/genhd.h +4 −2 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ struct hd_struct { #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ #define GENHD_FL_NATIVE_CAPACITY 128 #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 256 #define GENHD_FL_NO_PART_SCAN 512 enum { DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ Loading Loading @@ -234,9 +235,10 @@ static inline int disk_max_parts(struct gendisk *disk) return disk->minors; } static inline bool disk_partitionable(struct gendisk *disk) static inline bool disk_part_scan_enabled(struct gendisk *disk) { return disk_max_parts(disk) > 1; return disk_max_parts(disk) > 1 && !(disk->flags & GENHD_FL_NO_PART_SCAN); } static inline dev_t disk_devt(struct gendisk *disk) Loading