mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
block: replace fmode_t with a block-specific type for block open flags
The only overlap between the block open flags mapped into the fmode_t and
other uses of fmode_t are FMODE_READ and FMODE_WRITE. Define a new
blk_mode_t instead for use in blkdev_get_by_{dev,path}, ->open and
->ioctl and stop abusing fmode_t.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Jack Wang <jinpu.wang@ionos.com> [rnbd]
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Link: https://lore.kernel.org/r/20230608110258.189493-28-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
5e4ea83467
commit
05bdb99653
@@ -49,7 +49,7 @@
|
||||
#include "drbd_debugfs.h"
|
||||
|
||||
static DEFINE_MUTEX(drbd_main_mutex);
|
||||
static int drbd_open(struct gendisk *disk, fmode_t mode);
|
||||
static int drbd_open(struct gendisk *disk, blk_mode_t mode);
|
||||
static void drbd_release(struct gendisk *gd);
|
||||
static void md_sync_timer_fn(struct timer_list *t);
|
||||
static int w_bitmap_io(struct drbd_work *w, int unused);
|
||||
@@ -1882,7 +1882,7 @@ int drbd_send_all(struct drbd_connection *connection, struct socket *sock, void
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drbd_open(struct gendisk *disk, fmode_t mode)
|
||||
static int drbd_open(struct gendisk *disk, blk_mode_t mode)
|
||||
{
|
||||
struct drbd_device *device = disk->private_data;
|
||||
unsigned long flags;
|
||||
@@ -1894,7 +1894,7 @@ static int drbd_open(struct gendisk *disk, fmode_t mode)
|
||||
* and no race with updating open_cnt */
|
||||
|
||||
if (device->state.role != R_PRIMARY) {
|
||||
if (mode & FMODE_WRITE)
|
||||
if (mode & BLK_OPEN_WRITE)
|
||||
rv = -EROFS;
|
||||
else if (!drbd_allow_oos)
|
||||
rv = -EMEDIUMTYPE;
|
||||
@@ -1911,6 +1911,7 @@ static int drbd_open(struct gendisk *disk, fmode_t mode)
|
||||
static void drbd_release(struct gendisk *gd)
|
||||
{
|
||||
struct drbd_device *device = gd->private_data;
|
||||
|
||||
mutex_lock(&drbd_main_mutex);
|
||||
device->open_cnt--;
|
||||
mutex_unlock(&drbd_main_mutex);
|
||||
|
||||
Reference in New Issue
Block a user