diff options
| -rw-r--r-- | drivers/block/brd.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index df8103dd40ac..c18586fccb6f 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
| @@ -396,15 +396,14 @@ static struct brd_device *brd_alloc(int i) | |||
| 396 | disk->first_minor = i * max_part; | 396 | disk->first_minor = i * max_part; |
| 397 | disk->fops = &brd_fops; | 397 | disk->fops = &brd_fops; |
| 398 | disk->private_data = brd; | 398 | disk->private_data = brd; |
| 399 | disk->queue = brd->brd_queue; | ||
| 400 | disk->flags = GENHD_FL_EXT_DEVT; | 399 | disk->flags = GENHD_FL_EXT_DEVT; |
| 401 | sprintf(disk->disk_name, "ram%d", i); | 400 | sprintf(disk->disk_name, "ram%d", i); |
| 402 | set_capacity(disk, rd_size * 2); | 401 | set_capacity(disk, rd_size * 2); |
| 403 | disk->queue->backing_dev_info->capabilities |= BDI_CAP_SYNCHRONOUS_IO; | 402 | brd->brd_queue->backing_dev_info->capabilities |= BDI_CAP_SYNCHRONOUS_IO; |
| 404 | 403 | ||
| 405 | /* Tell the block layer that this is not a rotational device */ | 404 | /* Tell the block layer that this is not a rotational device */ |
| 406 | blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue); | 405 | blk_queue_flag_set(QUEUE_FLAG_NONROT, brd->brd_queue); |
| 407 | blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue); | 406 | blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, brd->brd_queue); |
| 408 | 407 | ||
| 409 | return brd; | 408 | return brd; |
| 410 | 409 | ||
| @@ -436,6 +435,7 @@ static struct brd_device *brd_init_one(int i, bool *new) | |||
| 436 | 435 | ||
| 437 | brd = brd_alloc(i); | 436 | brd = brd_alloc(i); |
| 438 | if (brd) { | 437 | if (brd) { |
| 438 | brd->brd_disk->queue = brd->brd_queue; | ||
| 439 | add_disk(brd->brd_disk); | 439 | add_disk(brd->brd_disk); |
| 440 | list_add_tail(&brd->brd_list, &brd_devices); | 440 | list_add_tail(&brd->brd_list, &brd_devices); |
| 441 | } | 441 | } |
| @@ -503,8 +503,14 @@ static int __init brd_init(void) | |||
| 503 | 503 | ||
| 504 | /* point of no return */ | 504 | /* point of no return */ |
| 505 | 505 | ||
| 506 | list_for_each_entry(brd, &brd_devices, brd_list) | 506 | list_for_each_entry(brd, &brd_devices, brd_list) { |
| 507 | /* | ||
| 508 | * associate with queue just before adding disk for | ||
| 509 | * avoiding to mess up failure path | ||
| 510 | */ | ||
| 511 | brd->brd_disk->queue = brd->brd_queue; | ||
| 507 | add_disk(brd->brd_disk); | 512 | add_disk(brd->brd_disk); |
| 513 | } | ||
| 508 | 514 | ||
| 509 | blk_register_region(MKDEV(RAMDISK_MAJOR, 0), 1UL << MINORBITS, | 515 | blk_register_region(MKDEV(RAMDISK_MAJOR, 0), 1UL << MINORBITS, |
| 510 | THIS_MODULE, brd_probe, NULL, NULL); | 516 | THIS_MODULE, brd_probe, NULL, NULL); |
