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()
240 struct pending_block *block, sector_t sector) in log_one_block() argument
247 entry.sector = cpu_to_le64(block->sector); in log_one_block()
248 entry.nr_sectors = cpu_to_le64(block->nr_sectors); in log_one_block()
249 entry.flags = cpu_to_le64(block->flags); in log_one_block()
250 entry.data_len = cpu_to_le64(block->datalen); in log_one_block()
251 if (write_metadata(lc, &entry, sizeof(entry), block->data, in log_one_block()
252 block->datalen, sector)) { in log_one_block()
253 free_pending_block(lc, block); in log_one_block()
257 if (!block->vec_cnt) in log_one_block()
262 bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt, BIO_MAX_PAGES)); in log_one_block()
273 for (i = 0; i < block->vec_cnt; i++) { in log_one_block()
278 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
279 block->vecs[i].bv_len, 0); in log_one_block()
280 if (ret != block->vecs[i].bv_len) { in log_one_block()
283 bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt - i, BIO_MAX_PAGES)); in log_one_block()
294 ret = bio_add_page(bio, block->vecs[i].bv_page, in log_one_block()
295 block->vecs[i].bv_len, 0); in log_one_block()
296 if (ret != block->vecs[i].bv_len) { in log_one_block()
302 sector += block->vecs[i].bv_len >> SECTOR_SHIFT; in log_one_block()
306 kfree(block->data); in log_one_block()
307 kfree(block); in log_one_block()
311 free_pending_block(lc, block); in log_one_block()
346 struct pending_block *block = NULL; in log_writes_kthread() local
351 block = list_first_entry(&lc->logging_blocks, in log_writes_kthread()
353 list_del_init(&block->list); in log_writes_kthread()
358 if (block->flags & LOG_DISCARD_FLAG) in log_writes_kthread()
361 lc->next_sector += block->nr_sectors + 1; in log_writes_kthread()
378 super = (block->flags & (LOG_FUA_FLAG | LOG_MARK_FLAG)); in log_writes_kthread()
385 if (block) { in log_writes_kthread()
387 ret = log_one_block(lc, block, sector); in log_writes_kthread()
396 free_pending_block(lc, block); in log_writes_kthread()
489 struct pending_block *block; in log_mark() local
492 block = kzalloc(sizeof(struct pending_block), GFP_KERNEL); in log_mark()
493 if (!block) { in log_mark()
498 block->data = kstrndup(data, maxsize, GFP_KERNEL); in log_mark()
499 if (!block->data) { in log_mark()
501 kfree(block); in log_mark()
505 block->datalen = strlen(block->data); in log_mark()
506 block->flags |= LOG_MARK_FLAG; in log_mark()
508 list_add_tail(&block->list, &lc->logging_blocks); in log_mark()
550 struct pending_block *block; in log_writes_map() local
559 pb->block = NULL; in log_writes_map()
584 block = kzalloc(alloc_size, GFP_NOIO); in log_writes_map()
585 if (!block) { in log_writes_map()
592 INIT_LIST_HEAD(&block->list); in log_writes_map()
593 pb->block = block; in log_writes_map()
597 block->flags |= LOG_FLUSH_FLAG; in log_writes_map()
599 block->flags |= LOG_FUA_FLAG; in log_writes_map()
601 block->flags |= LOG_DISCARD_FLAG; in log_writes_map()
603 block->sector = bio->bi_iter.bi_sector; in log_writes_map()
604 block->nr_sectors = bio_sectors(bio); in log_writes_map()
618 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
639 free_pending_block(lc, block); in log_writes_map()
651 block->vecs[i].bv_page = page; in log_writes_map()
652 block->vecs[i].bv_len = bv.bv_len; in log_writes_map()
653 block->vec_cnt++; in log_writes_map()
660 list_splice_init(&lc->unflushed_blocks, &block->list); in log_writes_map()
673 if (bio_data_dir(bio) == WRITE && pb->block) { in normal_end_io()
674 struct pending_block *block = pb->block; in normal_end_io() local
678 if (block->flags & LOG_FLUSH_FLAG) { in normal_end_io()
679 list_splice_tail_init(&block->list, &lc->logging_blocks); in normal_end_io()
680 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
682 } else if (block->flags & LOG_FUA_FLAG) { in normal_end_io()
683 list_add_tail(&block->list, &lc->logging_blocks); in normal_end_io()
686 list_add_tail(&block->list, &lc->unflushed_blocks); in normal_end_io()