Lines Matching refs:block

135 	struct pending_block *block;  member
199 struct pending_block *block) in free_pending_block() argument
203 for (i = 0; i < block->vec_cnt; i++) { in free_pending_block()
204 if (block->vecs[i].bv_page) in free_pending_block()
205 __free_page(block->vecs[i].bv_page); in free_pending_block()
207 kfree(block->data); in free_pending_block()
208 kfree(block); in free_pending_block()
319 struct pending_block *block, sector_t sector) in log_one_block() argument
326 entry.sector = cpu_to_le64(block->sector); in log_one_block()
327 entry.nr_sectors = cpu_to_le64(block->nr_sectors); in log_one_block()
328 entry.flags = cpu_to_le64(block->flags); in log_one_block()
329 entry.data_len = cpu_to_le64(block->datalen); in log_one_block()
331 metadatalen = (block->flags & LOG_MARK_FLAG) ? block->datalen : 0; in log_one_block()
332 if (write_metadata(lc, &entry, sizeof(entry), block->data, in log_one_block()
334 free_pending_block(lc, block); in log_one_block()
340 if (block->datalen && metadatalen == 0) { in log_one_block()
341 if (write_inline_data(lc, &entry, sizeof(entry), block->data, in log_one_block()
342 block->datalen, sector)) { in log_one_block()
343 free_pending_block(lc, block); in log_one_block()
350 if (!block->vec_cnt) in log_one_block()
354 bio = bio_alloc(lc->logdev->bdev, bio_max_segs(block->vec_cnt), in log_one_block()
361 for (i = 0; i < block->vec_cnt; i++) { in log_one_block()
366 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
367 block->vecs[i].bv_len, 0); in log_one_block()
368 if (ret != block->vecs[i].bv_len) { in log_one_block()
372 bio_max_segs(block->vec_cnt - i), in log_one_block()
379 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
380 block->vecs[i].bv_len, 0); in log_one_block()
381 if (ret != block->vecs[i].bv_len) { in log_one_block()
387 sector += block->vecs[i].bv_len >> SECTOR_SHIFT; in log_one_block()
391 kfree(block->data); in log_one_block()
392 kfree(block); in log_one_block()
396 free_pending_block(lc, block); in log_one_block()
439 struct pending_block *block = NULL; in log_writes_kthread() local
444 block = list_first_entry(&lc->logging_blocks, in log_writes_kthread()
446 list_del_init(&block->list); in log_writes_kthread()
451 if (!(block->flags & LOG_DISCARD_FLAG)) in log_writes_kthread()
452 lc->next_sector += dev_to_bio_sectors(lc, block->nr_sectors); in log_writes_kthread()
470 super = (block->flags & (LOG_FUA_FLAG | LOG_MARK_FLAG)); in log_writes_kthread()
477 if (block) { in log_writes_kthread()
479 ret = log_one_block(lc, block, sector); in log_writes_kthread()
488 free_pending_block(lc, block); in log_writes_kthread()
587 struct pending_block *block; in log_mark() local
590 block = kzalloc(sizeof(struct pending_block), GFP_KERNEL); in log_mark()
591 if (!block) { in log_mark()
596 block->data = kstrndup(data, maxsize - 1, GFP_KERNEL); in log_mark()
597 if (!block->data) { in log_mark()
599 kfree(block); in log_mark()
603 block->datalen = strlen(block->data); in log_mark()
604 block->flags |= LOG_MARK_FLAG; in log_mark()
606 list_add_tail(&block->list, &lc->logging_blocks); in log_mark()
648 struct pending_block *block; in log_writes_map() local
658 pb->block = NULL; in log_writes_map()
681 alloc_size = struct_size(block, vecs, bio_segments(bio)); in log_writes_map()
683 block = kzalloc(alloc_size, GFP_NOIO); in log_writes_map()
684 if (!block) { in log_writes_map()
691 INIT_LIST_HEAD(&block->list); in log_writes_map()
692 pb->block = block; in log_writes_map()
696 block->flags |= LOG_FLUSH_FLAG; in log_writes_map()
698 block->flags |= LOG_FUA_FLAG; in log_writes_map()
700 block->flags |= LOG_DISCARD_FLAG; in log_writes_map()
702 block->flags |= LOG_METADATA_FLAG; in log_writes_map()
704 block->sector = bio_to_dev_sectors(lc, bio->bi_iter.bi_sector); in log_writes_map()
705 block->nr_sectors = bio_to_dev_sectors(lc, bio_sectors(bio)); in log_writes_map()
719 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
740 free_pending_block(lc, block); in log_writes_map()
750 block->vecs[i].bv_page = page; in log_writes_map()
751 block->vecs[i].bv_len = bv.bv_len; in log_writes_map()
752 block->vec_cnt++; in log_writes_map()
759 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
773 if (bio_data_dir(bio) == WRITE && pb->block) { in normal_end_io()
774 struct pending_block *block = pb->block; in normal_end_io() local
778 if (block->flags & LOG_FLUSH_FLAG) { in normal_end_io()
779 list_splice_tail_init(&block->list, &lc->logging_blocks); in normal_end_io()
780 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
782 } else if (block->flags & LOG_FUA_FLAG) { in normal_end_io()
783 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
786 list_add_tail(&block->list, &lc->unflushed_blocks); in normal_end_io()