Linux 6.9-rc1
[linux-2.6-microblaze.git] / block / genhd.c
index d74fb5b..bb29a68 100644 (file)
@@ -342,7 +342,7 @@ EXPORT_SYMBOL_GPL(disk_uevent);
 
 int disk_scan_partitions(struct gendisk *disk, blk_mode_t mode)
 {
-       struct bdev_handle *handle;
+       struct file *file;
        int ret = 0;
 
        if (disk->flags & (GENHD_FL_NO_PART | GENHD_FL_HIDDEN))
@@ -366,12 +366,12 @@ int disk_scan_partitions(struct gendisk *disk, blk_mode_t mode)
        }
 
        set_bit(GD_NEED_PART_SCAN, &disk->state);
-       handle = bdev_open_by_dev(disk_devt(disk), mode & ~BLK_OPEN_EXCL, NULL,
-                                 NULL);
-       if (IS_ERR(handle))
-               ret = PTR_ERR(handle);
+       file = bdev_file_open_by_dev(disk_devt(disk), mode & ~BLK_OPEN_EXCL,
+                                    NULL, NULL);
+       if (IS_ERR(file))
+               ret = PTR_ERR(file);
        else
-               bdev_release(handle);
+               fput(file);
 
        /*
         * If blkdev_get_by_dev() failed early, GD_NEED_PART_SCAN is still set,
@@ -1201,7 +1201,7 @@ static int block_uevent(const struct device *dev, struct kobj_uevent_env *env)
        return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq);
 }
 
-struct class block_class = {
+const struct class block_class = {
        .name           = "block",
        .dev_uevent     = block_uevent,
 };
@@ -1391,19 +1391,21 @@ out_free_disk:
        return NULL;
 }
 
-struct gendisk *__blk_alloc_disk(int node, struct lock_class_key *lkclass)
+struct gendisk *__blk_alloc_disk(struct queue_limits *lim, int node,
+               struct lock_class_key *lkclass)
 {
+       struct queue_limits default_lim = { };
        struct request_queue *q;
        struct gendisk *disk;
 
-       q = blk_alloc_queue(node);
-       if (!q)
-               return NULL;
+       q = blk_alloc_queue(lim ? lim : &default_lim, node);
+       if (IS_ERR(q))
+               return ERR_CAST(q);
 
        disk = __alloc_disk_node(q, node, lkclass);
        if (!disk) {
                blk_put_queue(q);
-               return NULL;
+               return ERR_PTR(-ENOMEM);
        }
        set_bit(GD_OWNS_QUEUE, &disk->state);
        return disk;