Lines Matching refs:op
57 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_insert_keys() local
59 struct bkey *replace_key = op->replace ? &op->replace_key : NULL; in bch_data_insert_keys()
74 if (!op->replace) in bch_data_insert_keys()
75 journal_ref = bch_journal(op->c, &op->insert_keys, in bch_data_insert_keys()
76 op->flush_journal ? cl : NULL); in bch_data_insert_keys()
78 ret = bch_btree_insert(op->c, &op->insert_keys, in bch_data_insert_keys()
81 op->replace_collision = true; in bch_data_insert_keys()
83 op->error = -ENOMEM; in bch_data_insert_keys()
84 op->insert_data_done = true; in bch_data_insert_keys()
90 if (!op->insert_data_done) in bch_data_insert_keys()
91 continue_at(cl, bch_data_insert_start, op->wq); in bch_data_insert_keys()
93 bch_keylist_free(&op->insert_keys); in bch_data_insert_keys()
117 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_invalidate() local
118 struct bio *bio = op->bio; in bch_data_invalidate()
127 if (bch_keylist_realloc(&op->insert_keys, 2, op->c)) in bch_data_invalidate()
133 bch_keylist_add(&op->insert_keys, in bch_data_invalidate()
134 &KEY(op->inode, bio->bi_iter.bi_sector, sectors)); in bch_data_invalidate()
137 op->insert_data_done = true; in bch_data_invalidate()
140 continue_at(cl, bch_data_insert_keys, op->wq); in bch_data_invalidate()
145 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_insert_error() local
156 struct bkey *src = op->insert_keys.keys, *dst = op->insert_keys.keys; in bch_data_insert_error()
158 while (src != op->insert_keys.top) { in bch_data_insert_error()
168 op->insert_keys.top = dst; in bch_data_insert_error()
176 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_insert_endio() local
180 if (op->writeback) in bch_data_insert_endio()
181 op->error = error; in bch_data_insert_endio()
182 else if (!op->replace) in bch_data_insert_endio()
183 set_closure_fn(cl, bch_data_insert_error, op->wq); in bch_data_insert_endio()
188 bch_bbio_endio(op->c, bio, error, "writing data to cache"); in bch_data_insert_endio()
193 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_insert_start() local
194 struct bio *bio = op->bio, *n; in bch_data_insert_start()
196 if (atomic_sub_return(bio_sectors(bio), &op->c->sectors_to_gc) < 0) { in bch_data_insert_start()
197 set_gc_sectors(op->c); in bch_data_insert_start()
198 wake_up_gc(op->c); in bch_data_insert_start()
201 if (op->bypass) in bch_data_insert_start()
213 struct bio_set *split = op->c->bio_split; in bch_data_insert_start()
216 if (bch_keylist_realloc(&op->insert_keys, in bch_data_insert_start()
217 3 + (op->csum ? 1 : 0), in bch_data_insert_start()
218 op->c)) in bch_data_insert_start()
219 continue_at(cl, bch_data_insert_keys, op->wq); in bch_data_insert_start()
221 k = op->insert_keys.top; in bch_data_insert_start()
223 SET_KEY_INODE(k, op->inode); in bch_data_insert_start()
226 if (!bch_alloc_sectors(op->c, k, bio_sectors(bio), in bch_data_insert_start()
227 op->write_point, op->write_prio, in bch_data_insert_start()
228 op->writeback)) in bch_data_insert_start()
236 if (op->writeback) { in bch_data_insert_start()
240 SET_GC_MARK(PTR_BUCKET(op->c, k, i), in bch_data_insert_start()
244 SET_KEY_CSUM(k, op->csum); in bch_data_insert_start()
249 bch_keylist_push(&op->insert_keys); in bch_data_insert_start()
252 bch_submit_bbio(n, op->c, k, 0); in bch_data_insert_start()
255 op->insert_data_done = true; in bch_data_insert_start()
256 continue_at(cl, bch_data_insert_keys, op->wq); in bch_data_insert_start()
259 BUG_ON(op->writeback); in bch_data_insert_start()
267 if (!op->replace) { in bch_data_insert_start()
274 op->bypass = true; in bch_data_insert_start()
281 op->insert_data_done = true; in bch_data_insert_start()
284 if (!bch_keylist_empty(&op->insert_keys)) in bch_data_insert_start()
285 continue_at(cl, bch_data_insert_keys, op->wq); in bch_data_insert_start()
312 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl); in bch_data_insert() local
314 trace_bcache_write(op->c, op->inode, op->bio, in bch_data_insert()
315 op->writeback, op->bypass); in bch_data_insert()
317 bch_keylist_init(&op->insert_keys); in bch_data_insert()
318 bio_get(op->bio); in bch_data_insert()
470 struct btree_op op; member
502 static int cache_lookup_fn(struct btree_op *op, struct btree *b, struct bkey *k) in cache_lookup_fn() argument
504 struct search *s = container_of(op, struct search, op); in cache_lookup_fn()
573 bch_btree_op_init(&s->op, -1); in cache_lookup()
575 ret = bch_btree_map_keys(&s->op, s->iop.c, in cache_lookup()
802 ret = bch_btree_insert_check_key(b, &s->op, &s->iop.replace_key); in cached_dev_cache_miss()