Lines Matching refs:block
128 struct pending_block *block; member
176 struct pending_block *block) in free_pending_block() argument
180 for (i = 0; i < block->vec_cnt; i++) { in free_pending_block()
181 if (block->vecs[i].bv_page) in free_pending_block()
182 __free_page(block->vecs[i].bv_page); in free_pending_block()
184 kfree(block->data); in free_pending_block()
185 kfree(block); in free_pending_block()
241 struct pending_block *block, sector_t sector) in log_one_block() argument
248 entry.sector = cpu_to_le64(block->sector); in log_one_block()
249 entry.nr_sectors = cpu_to_le64(block->nr_sectors); in log_one_block()
250 entry.flags = cpu_to_le64(block->flags); in log_one_block()
251 entry.data_len = cpu_to_le64(block->datalen); in log_one_block()
252 if (write_metadata(lc, &entry, sizeof(entry), block->data, in log_one_block()
253 block->datalen, sector)) { in log_one_block()
254 free_pending_block(lc, block); in log_one_block()
258 if (!block->vec_cnt) in log_one_block()
262 bio = bio_alloc(GFP_KERNEL, block->vec_cnt); in log_one_block()
275 for (i = 0; i < block->vec_cnt; i++) { in log_one_block()
280 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
281 block->vecs[i].bv_len, 0); in log_one_block()
282 if (ret != block->vecs[i].bv_len) { in log_one_block()
285 bio = bio_alloc(GFP_KERNEL, block->vec_cnt - i); in log_one_block()
297 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
298 block->vecs[i].bv_len, 0); in log_one_block()
299 if (ret != block->vecs[i].bv_len) { in log_one_block()
305 sector += block->vecs[i].bv_len >> SECTOR_SHIFT; in log_one_block()
309 kfree(block->data); in log_one_block()
310 kfree(block); in log_one_block()
314 free_pending_block(lc, block); in log_one_block()
349 struct pending_block *block = NULL; in log_writes_kthread() local
354 block = list_first_entry(&lc->logging_blocks, in log_writes_kthread()
356 list_del_init(&block->list); in log_writes_kthread()
361 if (block->flags & LOG_DISCARD_FLAG) in log_writes_kthread()
364 lc->next_sector += block->nr_sectors + 1; in log_writes_kthread()
381 super = (block->flags & (LOG_FUA_FLAG | LOG_MARK_FLAG)); in log_writes_kthread()
388 if (block) { in log_writes_kthread()
390 ret = log_one_block(lc, block, sector); in log_writes_kthread()
399 free_pending_block(lc, block); in log_writes_kthread()
487 struct pending_block *block; in log_mark() local
490 block = kzalloc(sizeof(struct pending_block), GFP_KERNEL); in log_mark()
491 if (!block) { in log_mark()
496 block->data = kstrndup(data, maxsize, GFP_KERNEL); in log_mark()
497 if (!block->data) { in log_mark()
499 kfree(block); in log_mark()
503 block->datalen = strlen(block->data); in log_mark()
504 block->flags |= LOG_MARK_FLAG; in log_mark()
506 list_add_tail(&block->list, &lc->logging_blocks); in log_mark()
548 struct pending_block *block; in log_writes_map() local
557 pb->block = NULL; in log_writes_map()
582 block = kzalloc(alloc_size, GFP_NOIO); in log_writes_map()
583 if (!block) { in log_writes_map()
590 INIT_LIST_HEAD(&block->list); in log_writes_map()
591 pb->block = block; in log_writes_map()
595 block->flags |= LOG_FLUSH_FLAG; in log_writes_map()
597 block->flags |= LOG_FUA_FLAG; in log_writes_map()
599 block->flags |= LOG_DISCARD_FLAG; in log_writes_map()
601 block->sector = bio->bi_iter.bi_sector; in log_writes_map()
602 block->nr_sectors = bio_sectors(bio); in log_writes_map()
616 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
637 free_pending_block(lc, block); in log_writes_map()
649 block->vecs[i].bv_page = page; in log_writes_map()
650 block->vecs[i].bv_len = bv.bv_len; in log_writes_map()
651 block->vec_cnt++; in log_writes_map()
658 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
671 if (bio_data_dir(bio) == WRITE && pb->block) { in normal_end_io()
672 struct pending_block *block = pb->block; in normal_end_io() local
676 if (block->flags & LOG_FLUSH_FLAG) { in normal_end_io()
677 list_splice_tail_init(&block->list, &lc->logging_blocks); in normal_end_io()
678 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
680 } else if (block->flags & LOG_FUA_FLAG) { in normal_end_io()
681 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
684 list_add_tail(&block->list, &lc->unflushed_blocks); in normal_end_io()