Lines Matching +full:i +full:- +full:cache +full:- +full:block +full:- +full:size

1 // SPDX-License-Identifier: GPL-2.0
24 #define for_each_written_bset(b, start, i) \ argument
25 for (i = (start); \
26 (void *) i < (void *) (start) + (KEY_SIZE(&b->key) << 9) &&\
27 i->seq == (start)->seq; \
28 i = (void *) i + set_blocks(i, block_bytes(b->c->cache)) * \
29 block_bytes(b->c->cache))
33 struct btree *v = b->c->verify_data; in bch_btree_verify()
37 if (!b->c->verify || !b->c->verify_ondisk) in bch_btree_verify()
40 down(&b->io_mutex); in bch_btree_verify()
41 mutex_lock(&b->c->verify_lock); in bch_btree_verify()
43 ondisk = b->c->verify_ondisk; in bch_btree_verify()
44 sorted = b->c->verify_data->keys.set->data; in bch_btree_verify()
45 inmemory = b->keys.set->data; in bch_btree_verify()
47 bkey_copy(&v->key, &b->key); in bch_btree_verify()
48 v->written = 0; in bch_btree_verify()
49 v->level = b->level; in bch_btree_verify()
50 v->keys.ops = b->keys.ops; in bch_btree_verify()
52 bio = bch_bbio_alloc(b->c); in bch_btree_verify()
53 bio_set_dev(bio, b->c->cache->bdev); in bch_btree_verify()
54 bio->bi_iter.bi_sector = PTR_OFFSET(&b->key, 0); in bch_btree_verify()
55 bio->bi_iter.bi_size = KEY_SIZE(&v->key) << 9; in bch_btree_verify()
56 bio->bi_opf = REQ_OP_READ | REQ_META; in bch_btree_verify()
60 bch_bbio_free(bio, b->c); in bch_btree_verify()
62 memcpy(ondisk, sorted, KEY_SIZE(&v->key) << 9); in bch_btree_verify()
65 sorted = v->keys.set->data; in bch_btree_verify()
67 if (inmemory->keys != sorted->keys || in bch_btree_verify()
68 memcmp(inmemory->start, in bch_btree_verify()
69 sorted->start, in bch_btree_verify()
70 (void *) bset_bkey_last(inmemory) - in bch_btree_verify()
71 (void *) inmemory->start)) { in bch_btree_verify()
72 struct bset *i; in bch_btree_verify() local
78 bch_dump_bset(&b->keys, inmemory, 0); in bch_btree_verify()
81 bch_dump_bset(&v->keys, sorted, 0); in bch_btree_verify()
83 for_each_written_bset(b, ondisk, i) { in bch_btree_verify()
84 unsigned int block = ((void *) i - (void *) ondisk) / in bch_btree_verify() local
85 block_bytes(b->c->cache); in bch_btree_verify()
87 pr_err("*** on disk block %u:\n", block); in bch_btree_verify()
88 bch_dump_bset(&b->keys, i, block); in bch_btree_verify()
91 pr_err("*** block %zu not written\n", in bch_btree_verify()
92 ((void *) i - (void *) ondisk) / block_bytes(b->c->cache)); in bch_btree_verify()
94 for (j = 0; j < inmemory->keys; j++) in bch_btree_verify()
95 if (inmemory->d[j] != sorted->d[j]) in bch_btree_verify()
98 pr_err("b->written %u\n", b->written); in bch_btree_verify()
104 mutex_unlock(&b->c->verify_lock); in bch_btree_verify()
105 up(&b->io_mutex); in bch_btree_verify()
118 bio_init(check, bio->bi_bdev, check->bi_inline_vecs, nr_segs, in bch_data_verify()
120 check->bi_iter.bi_sector = bio->bi_iter.bi_sector; in bch_data_verify()
121 check->bi_iter.bi_size = bio->bi_iter.bi_size; in bch_data_verify()
138 dc->disk.c, in bch_data_verify()
140 dc->bdev, in bch_data_verify()
141 (uint64_t) bio->bi_iter.bi_sector); in bch_data_verify()
158 /* XXX: cache set refcounting */
173 size_t size, loff_t *ppos) in bch_dump_read() argument
175 struct dump_iterator *i = file->private_data; in bch_dump_read() local
179 while (size) { in bch_dump_read()
181 unsigned int bytes = min(i->bytes, size); in bch_dump_read()
183 if (copy_to_user(buf, i->buf, bytes)) in bch_dump_read()
184 return -EFAULT; in bch_dump_read()
188 size -= bytes; in bch_dump_read()
189 i->bytes -= bytes; in bch_dump_read()
190 memmove(i->buf, i->buf + bytes, i->bytes); in bch_dump_read()
192 if (i->bytes) in bch_dump_read()
195 w = bch_keybuf_next_rescan(i->c, &i->keys, &MAX_KEY, dump_pred); in bch_dump_read()
199 bch_extent_to_text(kbuf, sizeof(kbuf), &w->key); in bch_dump_read()
200 i->bytes = snprintf(i->buf, PAGE_SIZE, "%s\n", kbuf); in bch_dump_read()
201 bch_keybuf_del(&i->keys, w); in bch_dump_read()
209 struct cache_set *c = inode->i_private; in bch_dump_open()
210 struct dump_iterator *i; in bch_dump_open() local
212 i = kzalloc(sizeof(struct dump_iterator), GFP_KERNEL); in bch_dump_open()
213 if (!i) in bch_dump_open()
214 return -ENOMEM; in bch_dump_open()
216 file->private_data = i; in bch_dump_open()
217 i->c = c; in bch_dump_open()
218 bch_keybuf_init(&i->keys); in bch_dump_open()
219 i->keys.last_scanned = KEY(0, 0, 0); in bch_dump_open()
226 kfree(file->private_data); in bch_dump_release()
242 snprintf(name, 50, "bcache-%pU", c->set_uuid); in bch_debug_init_cache_set()
243 c->debug = debugfs_create_file(name, 0400, bcache_debug, c, in bch_debug_init_cache_set()