super.c (a4654e9bde4ecedb4921e6c8fe2088114bdff1b3) super.c (ff27668ce8092c74965f21b5c02ebc6b6764db95)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 802 unchanged lines hidden (view full) ---

811 bioset_exit(&d->bio_split);
812 kvfree(d->full_dirty_stripes);
813 kvfree(d->stripe_sectors_dirty);
814
815 closure_debug_destroy(&d->cl);
816}
817
818static int bcache_device_init(struct bcache_device *d, unsigned int block_size,
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 802 unchanged lines hidden (view full) ---

811 bioset_exit(&d->bio_split);
812 kvfree(d->full_dirty_stripes);
813 kvfree(d->stripe_sectors_dirty);
814
815 closure_debug_destroy(&d->cl);
816}
817
818static int bcache_device_init(struct bcache_device *d, unsigned int block_size,
819 sector_t sectors)
819 sector_t sectors, make_request_fn make_request_fn)
820{
821 struct request_queue *q;
822 const size_t max_stripes = min_t(size_t, INT_MAX,
823 SIZE_MAX / sizeof(atomic_t));
824 size_t n;
825 int idx;
826
827 if (!d->stripe_size)

--- 37 unchanged lines hidden (view full) ---

865 d->disk->first_minor = idx_to_first_minor(idx);
866 d->disk->fops = &bcache_ops;
867 d->disk->private_data = d;
868
869 q = blk_alloc_queue(GFP_KERNEL);
870 if (!q)
871 return -ENOMEM;
872
820{
821 struct request_queue *q;
822 const size_t max_stripes = min_t(size_t, INT_MAX,
823 SIZE_MAX / sizeof(atomic_t));
824 size_t n;
825 int idx;
826
827 if (!d->stripe_size)

--- 37 unchanged lines hidden (view full) ---

865 d->disk->first_minor = idx_to_first_minor(idx);
866 d->disk->fops = &bcache_ops;
867 d->disk->private_data = d;
868
869 q = blk_alloc_queue(GFP_KERNEL);
870 if (!q)
871 return -ENOMEM;
872
873 blk_queue_make_request(q, NULL);
873 blk_queue_make_request(q, make_request_fn);
874 d->disk->queue = q;
875 q->queuedata = d;
876 q->backing_dev_info->congested_data = d;
877 q->limits.max_hw_sectors = UINT_MAX;
878 q->limits.max_sectors = UINT_MAX;
879 q->limits.max_segment_size = UINT_MAX;
880 q->limits.max_segments = BIO_MAX_PAGES;
881 blk_queue_max_discard_sectors(q, UINT_MAX);

--- 452 unchanged lines hidden (view full) ---

1334
1335 dc->disk.stripe_size = q->limits.io_opt >> 9;
1336
1337 if (dc->disk.stripe_size)
1338 dc->partial_stripes_expensive =
1339 q->limits.raid_partial_stripes_expensive;
1340
1341 ret = bcache_device_init(&dc->disk, block_size,
874 d->disk->queue = q;
875 q->queuedata = d;
876 q->backing_dev_info->congested_data = d;
877 q->limits.max_hw_sectors = UINT_MAX;
878 q->limits.max_sectors = UINT_MAX;
879 q->limits.max_segment_size = UINT_MAX;
880 q->limits.max_segments = BIO_MAX_PAGES;
881 blk_queue_max_discard_sectors(q, UINT_MAX);

--- 452 unchanged lines hidden (view full) ---

1334
1335 dc->disk.stripe_size = q->limits.io_opt >> 9;
1336
1337 if (dc->disk.stripe_size)
1338 dc->partial_stripes_expensive =
1339 q->limits.raid_partial_stripes_expensive;
1340
1341 ret = bcache_device_init(&dc->disk, block_size,
1342 dc->bdev->bd_part->nr_sects - dc->sb.data_offset);
1342 dc->bdev->bd_part->nr_sects - dc->sb.data_offset,
1343 cached_dev_make_request);
1343 if (ret)
1344 return ret;
1345
1346 dc->disk.disk->queue->backing_dev_info->ra_pages =
1347 max(dc->disk.disk->queue->backing_dev_info->ra_pages,
1348 q->backing_dev_info->ra_pages);
1349
1350 atomic_set(&dc->io_errors, 0);

--- 95 unchanged lines hidden (view full) ---

1446 if (!d)
1447 return -ENOMEM;
1448
1449 closure_init(&d->cl, NULL);
1450 set_closure_fn(&d->cl, flash_dev_flush, system_wq);
1451
1452 kobject_init(&d->kobj, &bch_flash_dev_ktype);
1453
1344 if (ret)
1345 return ret;
1346
1347 dc->disk.disk->queue->backing_dev_info->ra_pages =
1348 max(dc->disk.disk->queue->backing_dev_info->ra_pages,
1349 q->backing_dev_info->ra_pages);
1350
1351 atomic_set(&dc->io_errors, 0);

--- 95 unchanged lines hidden (view full) ---

1447 if (!d)
1448 return -ENOMEM;
1449
1450 closure_init(&d->cl, NULL);
1451 set_closure_fn(&d->cl, flash_dev_flush, system_wq);
1452
1453 kobject_init(&d->kobj, &bch_flash_dev_ktype);
1454
1454 if (bcache_device_init(d, block_bytes(c), u->sectors))
1455 if (bcache_device_init(d, block_bytes(c), u->sectors,
1456 flash_dev_make_request))
1455 goto err;
1456
1457 bcache_device_attach(d, c, u - c->uuids);
1458 bch_sectors_dirty_init(d);
1459 bch_flash_dev_request_init(d);
1460 add_disk(d->disk);
1461
1462 if (kobject_add(&d->kobj, &disk_to_dev(d->disk)->kobj, "bcache"))

--- 1260 unchanged lines hidden ---
1457 goto err;
1458
1459 bcache_device_attach(d, c, u - c->uuids);
1460 bch_sectors_dirty_init(d);
1461 bch_flash_dev_request_init(d);
1462 add_disk(d->disk);
1463
1464 if (kobject_add(&d->kobj, &disk_to_dev(d->disk)->kobj, "bcache"))

--- 1260 unchanged lines hidden ---