]> git.baikalelectronics.ru Git - kernel.git/commitdiff
block: move GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE to disk->event_flags
authorChristoph Hellwig <hch@lst.de>
Mon, 22 Nov 2021 13:06:13 +0000 (14:06 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 29 Nov 2021 13:35:21 +0000 (06:35 -0700)
GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE is all about the event reporting
mechanism, so move it to the event_flags field.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211122130625.1136848-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bdev.c
drivers/block/paride/pcd.c
drivers/scsi/sr.c
include/linux/genhd.h

index b1d087e5e205f6afb0f48393c1bbc452f95c3e6c..dd84961bed7efa1f678549a8850c095907679177 100644 (file)
@@ -837,7 +837,7 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
                 * used in blkdev_get/put().
                 */
                if ((mode & FMODE_WRITE) && !bdev->bd_write_holder &&
-                   (disk->flags & GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE)) {
+                   (disk->event_flags & DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE)) {
                        bdev->bd_write_holder = true;
                        unblock_events = false;
                }
index f6b1d63e96e1bda65b407214041ea69f9c1b68e1..430ee8004a514d7f66721209b3664308744e369d 100644 (file)
@@ -928,8 +928,8 @@ static int pcd_init_unit(struct pcd_unit *cd, bool autoprobe, int port,
        disk->minors = 1;
        strcpy(disk->disk_name, cd->name);      /* umm... */
        disk->fops = &pcd_bdops;
-       disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
        disk->events = DISK_EVENT_MEDIA_CHANGE;
+       disk->event_flags = DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE;
 
        if (!pi_init(cd->pi, autoprobe, port, mode, unit, protocol, delay,
                        pcd_buffer, PI_PCD, verbose, cd->name)) {
index 8e4af111c078784d405bb602476a78c4cda7cc6a..be445dc35f2c7ce3293795aa1f832adc70a394fc 100644 (file)
@@ -684,9 +684,10 @@ static int sr_probe(struct device *dev)
        disk->minors = 1;
        sprintf(disk->disk_name, "sr%d", minor);
        disk->fops = &sr_bdops;
-       disk->flags = GENHD_FL_CD | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
+       disk->flags = GENHD_FL_CD;
        disk->events = DISK_EVENT_MEDIA_CHANGE | DISK_EVENT_EJECT_REQUEST;
-       disk->event_flags = DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
+       disk->event_flags = DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT |
+                               DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE;
 
        blk_queue_rq_timeout(sdev->request_queue, SR_TIMEOUT);
 
index e490a71e5e9ddccbec0510dbba325eeba96b7c8c..c1136ff3c91fafbb51b7c107a3a0e8982a89e0d9 100644 (file)
@@ -60,9 +60,6 @@ struct partition_meta_info {
  * (``BLOCK_EXT_MAJOR``).
  * This affects the maximum number of partitions.
  *
- * ``GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE`` (0x0100): event polling is
- * blocked whenever a writer holds an exclusive lock.
- *
  * ``GENHD_FL_NO_PART_SCAN`` (0x0200): partition scanning is disabled.
  * Used for loop devices in their default settings and some MMC
  * devices.
@@ -80,7 +77,6 @@ struct partition_meta_info {
 #define GENHD_FL_CD                            0x0008
 #define GENHD_FL_SUPPRESS_PARTITION_INFO       0x0020
 #define GENHD_FL_EXT_DEVT                      0x0040
-#define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE    0x0100
 #define GENHD_FL_NO_PART_SCAN                  0x0200
 #define GENHD_FL_HIDDEN                                0x0400
 
@@ -94,6 +90,8 @@ enum {
        DISK_EVENT_FLAG_POLL                    = 1 << 0,
        /* Forward events to udev */
        DISK_EVENT_FLAG_UEVENT                  = 1 << 1,
+       /* Block event polling when open for exclusive write */
+       DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE     = 1 << 2,
 };
 
 struct disk_events;