super.c (712cba5d87a6c0e980ee5fad45734e189c4d7151) | super.c (3a83f4677539bce8eaa2bca9ee9c20e172d7ab04) |
---|---|
1/* 2 * bcache setup/teardown code, and some metadata io - read a superblock and 3 * figure out what to do with it. 4 * 5 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com> 6 * Copyright 2012 Google, Inc. 7 */ 8 --- 367 unchanged lines hidden (view full) --- 376static char *uuid_read(struct cache_set *c, struct jset *j, struct closure *cl) 377{ 378 struct bkey *k = &j->uuid_bucket; 379 380 if (__bch_btree_ptr_invalid(c, k)) 381 return "bad uuid pointer"; 382 383 bkey_copy(&c->uuid_bucket, k); | 1/* 2 * bcache setup/teardown code, and some metadata io - read a superblock and 3 * figure out what to do with it. 4 * 5 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com> 6 * Copyright 2012 Google, Inc. 7 */ 8 --- 367 unchanged lines hidden (view full) --- 376static char *uuid_read(struct cache_set *c, struct jset *j, struct closure *cl) 377{ 378 struct bkey *k = &j->uuid_bucket; 379 380 if (__bch_btree_ptr_invalid(c, k)) 381 return "bad uuid pointer"; 382 383 bkey_copy(&c->uuid_bucket, k); |
384 uuid_io(c, REQ_OP_READ, READ_SYNC, k, cl); | 384 uuid_io(c, REQ_OP_READ, 0, k, cl); |
385 386 if (j->version < BCACHE_JSET_VERSION_UUIDv1) { 387 struct uuid_entry_v0 *u0 = (void *) c->uuids; 388 struct uuid_entry *u1 = (void *) c->uuids; 389 int i; 390 391 closure_sync(cl); 392 --- 202 unchanged lines hidden (view full) --- 595 for (b = ca->buckets; 596 b < ca->buckets + ca->sb.nbuckets; 597 b++, d++) { 598 if (d == end) { 599 ca->prio_buckets[bucket_nr] = bucket; 600 ca->prio_last_buckets[bucket_nr] = bucket; 601 bucket_nr++; 602 | 385 386 if (j->version < BCACHE_JSET_VERSION_UUIDv1) { 387 struct uuid_entry_v0 *u0 = (void *) c->uuids; 388 struct uuid_entry *u1 = (void *) c->uuids; 389 int i; 390 391 closure_sync(cl); 392 --- 202 unchanged lines hidden (view full) --- 595 for (b = ca->buckets; 596 b < ca->buckets + ca->sb.nbuckets; 597 b++, d++) { 598 if (d == end) { 599 ca->prio_buckets[bucket_nr] = bucket; 600 ca->prio_last_buckets[bucket_nr] = bucket; 601 bucket_nr++; 602 |
603 prio_io(ca, bucket, REQ_OP_READ, READ_SYNC); | 603 prio_io(ca, bucket, REQ_OP_READ, 0); |
604 605 if (p->csum != bch_crc64(&p->magic, bucket_bytes(ca) - 8)) 606 pr_warn("bad csum reading priorities"); 607 608 if (p->magic != pset_magic(&ca->sb)) 609 pr_warn("bad magic reading priorities"); 610 611 bucket = p->next_bucket; --- 535 unchanged lines hidden (view full) --- 1147 char name[BDEVNAME_SIZE]; 1148 const char *err = "cannot allocate memory"; 1149 struct cache_set *c; 1150 1151 memcpy(&dc->sb, sb, sizeof(struct cache_sb)); 1152 dc->bdev = bdev; 1153 dc->bdev->bd_holder = dc; 1154 | 604 605 if (p->csum != bch_crc64(&p->magic, bucket_bytes(ca) - 8)) 606 pr_warn("bad csum reading priorities"); 607 608 if (p->magic != pset_magic(&ca->sb)) 609 pr_warn("bad magic reading priorities"); 610 611 bucket = p->next_bucket; --- 535 unchanged lines hidden (view full) --- 1147 char name[BDEVNAME_SIZE]; 1148 const char *err = "cannot allocate memory"; 1149 struct cache_set *c; 1150 1151 memcpy(&dc->sb, sb, sizeof(struct cache_sb)); 1152 dc->bdev = bdev; 1153 dc->bdev->bd_holder = dc; 1154 |
1155 bio_init(&dc->sb_bio); 1156 dc->sb_bio.bi_max_vecs = 1; 1157 dc->sb_bio.bi_io_vec = dc->sb_bio.bi_inline_vecs; | 1155 bio_init(&dc->sb_bio, dc->sb_bio.bi_inline_vecs, 1); |
1158 dc->sb_bio.bi_io_vec[0].bv_page = sb_page; 1159 get_page(sb_page); 1160 1161 if (cached_dev_init(dc, sb->block_size << 9)) 1162 goto err; 1163 1164 err = "error creating kobject"; 1165 if (kobject_add(&dc->disk.kobj, &part_to_dev(bdev->bd_part)->kobj, --- 643 unchanged lines hidden (view full) --- 1809static int cache_alloc(struct cache *ca) 1810{ 1811 size_t free; 1812 struct bucket *b; 1813 1814 __module_get(THIS_MODULE); 1815 kobject_init(&ca->kobj, &bch_cache_ktype); 1816 | 1156 dc->sb_bio.bi_io_vec[0].bv_page = sb_page; 1157 get_page(sb_page); 1158 1159 if (cached_dev_init(dc, sb->block_size << 9)) 1160 goto err; 1161 1162 err = "error creating kobject"; 1163 if (kobject_add(&dc->disk.kobj, &part_to_dev(bdev->bd_part)->kobj, --- 643 unchanged lines hidden (view full) --- 1807static int cache_alloc(struct cache *ca) 1808{ 1809 size_t free; 1810 struct bucket *b; 1811 1812 __module_get(THIS_MODULE); 1813 kobject_init(&ca->kobj, &bch_cache_ktype); 1814 |
1817 bio_init(&ca->journal.bio); 1818 ca->journal.bio.bi_max_vecs = 8; 1819 ca->journal.bio.bi_io_vec = ca->journal.bio.bi_inline_vecs; | 1815 bio_init(&ca->journal.bio, ca->journal.bio.bi_inline_vecs, 8); |
1820 1821 free = roundup_pow_of_two(ca->sb.nbuckets) >> 10; 1822 1823 if (!init_fifo(&ca->free[RESERVE_BTREE], 8, GFP_KERNEL) || 1824 !init_fifo_exact(&ca->free[RESERVE_PRIO], prio_buckets(ca), GFP_KERNEL) || 1825 !init_fifo(&ca->free[RESERVE_MOVINGGC], free, GFP_KERNEL) || 1826 !init_fifo(&ca->free[RESERVE_NONE], free, GFP_KERNEL) || 1827 !init_fifo(&ca->free_inc, free << 2, GFP_KERNEL) || --- 19 unchanged lines hidden (view full) --- 1847 char name[BDEVNAME_SIZE]; 1848 const char *err = NULL; /* must be set for any error case */ 1849 int ret = 0; 1850 1851 memcpy(&ca->sb, sb, sizeof(struct cache_sb)); 1852 ca->bdev = bdev; 1853 ca->bdev->bd_holder = ca; 1854 | 1816 1817 free = roundup_pow_of_two(ca->sb.nbuckets) >> 10; 1818 1819 if (!init_fifo(&ca->free[RESERVE_BTREE], 8, GFP_KERNEL) || 1820 !init_fifo_exact(&ca->free[RESERVE_PRIO], prio_buckets(ca), GFP_KERNEL) || 1821 !init_fifo(&ca->free[RESERVE_MOVINGGC], free, GFP_KERNEL) || 1822 !init_fifo(&ca->free[RESERVE_NONE], free, GFP_KERNEL) || 1823 !init_fifo(&ca->free_inc, free << 2, GFP_KERNEL) || --- 19 unchanged lines hidden (view full) --- 1843 char name[BDEVNAME_SIZE]; 1844 const char *err = NULL; /* must be set for any error case */ 1845 int ret = 0; 1846 1847 memcpy(&ca->sb, sb, sizeof(struct cache_sb)); 1848 ca->bdev = bdev; 1849 ca->bdev->bd_holder = ca; 1850 |
1855 bio_init(&ca->sb_bio); 1856 ca->sb_bio.bi_max_vecs = 1; 1857 ca->sb_bio.bi_io_vec = ca->sb_bio.bi_inline_vecs; | 1851 bio_init(&ca->sb_bio, ca->sb_bio.bi_inline_vecs, 1); |
1858 ca->sb_bio.bi_io_vec[0].bv_page = sb_page; 1859 get_page(sb_page); 1860 1861 if (blk_queue_discard(bdev_get_queue(ca->bdev))) 1862 ca->discard = CACHE_DISCARD(&ca->sb); 1863 1864 ret = cache_alloc(ca); 1865 if (ret != 0) { --- 257 unchanged lines hidden --- | 1852 ca->sb_bio.bi_io_vec[0].bv_page = sb_page; 1853 get_page(sb_page); 1854 1855 if (blk_queue_discard(bdev_get_queue(ca->bdev))) 1856 ca->discard = CACHE_DISCARD(&ca->sb); 1857 1858 ret = cache_alloc(ca); 1859 if (ret != 0) { --- 257 unchanged lines hidden --- |