Lines Matching refs:log

142 	struct ppl_log *log;  member
239 static struct ppl_io_unit *ppl_new_iounit(struct ppl_log *log, in ppl_new_iounit() argument
242 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_new_iounit()
255 io->log = log; in ppl_new_iounit()
273 static int ppl_log_stripe(struct ppl_log *log, struct stripe_head *sh) in ppl_log_stripe() argument
275 struct ppl_io_unit *io = log->current_io; in ppl_log_stripe()
286 if (io && (io->pp_size == log->entry_space || in ppl_log_stripe()
295 io = ppl_new_iounit(log, sh); in ppl_log_stripe()
298 spin_lock_irq(&log->io_list_lock); in ppl_log_stripe()
299 list_add_tail(&io->log_sibling, &log->io_list); in ppl_log_stripe()
300 spin_unlock_irq(&log->io_list_lock); in ppl_log_stripe()
302 log->current_io = io; in ppl_log_stripe()
371 struct ppl_log *log; in ppl_write_stripe() local
380 log = &ppl_conf->child_logs[sh->pd_idx]; in ppl_write_stripe()
382 mutex_lock(&log->io_mutex); in ppl_write_stripe()
384 if (!log->rdev || test_bit(Faulty, &log->rdev->flags)) { in ppl_write_stripe()
385 mutex_unlock(&log->io_mutex); in ppl_write_stripe()
393 if (ppl_log_stripe(log, sh)) { in ppl_write_stripe()
399 mutex_unlock(&log->io_mutex); in ppl_write_stripe()
407 struct ppl_log *log = io->log; in ppl_log_endio() local
408 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_log_endio()
414 md_error(ppl_conf->mddev, log->rdev); in ppl_log_endio()
438 struct ppl_log *log = io->log; in ppl_submit_iounit() local
439 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_submit_iounit()
447 if (!log->rdev || test_bit(Faulty, &log->rdev->flags)) { in ppl_submit_iounit()
468 if (log->use_multippl && in ppl_submit_iounit()
469 log->rdev->ppl.sector + log->rdev->ppl.size - log->next_io_sector < in ppl_submit_iounit()
471 log->next_io_sector = log->rdev->ppl.sector; in ppl_submit_iounit()
476 bio_set_dev(bio, log->rdev->bdev); in ppl_submit_iounit()
477 bio->bi_iter.bi_sector = log->next_io_sector; in ppl_submit_iounit()
481 (unsigned long long)log->next_io_sector); in ppl_submit_iounit()
483 if (log->use_multippl) in ppl_submit_iounit()
484 log->next_io_sector += (PPL_HEADER_SIZE + io->pp_size) >> 9; in ppl_submit_iounit()
486 WARN_ON(log->disk_flush_bitmap != 0); in ppl_submit_iounit()
494 set_bit(i, &log->disk_flush_bitmap); in ppl_submit_iounit()
520 static void ppl_submit_current_io(struct ppl_log *log) in ppl_submit_current_io() argument
524 spin_lock_irq(&log->io_list_lock); in ppl_submit_current_io()
526 io = list_first_entry_or_null(&log->io_list, struct ppl_io_unit, in ppl_submit_current_io()
531 spin_unlock_irq(&log->io_list_lock); in ppl_submit_current_io()
536 if (io == log->current_io) in ppl_submit_current_io()
537 log->current_io = NULL; in ppl_submit_current_io()
546 struct ppl_log *log; in ppl_write_stripe_run() local
550 log = &ppl_conf->child_logs[i]; in ppl_write_stripe_run()
552 mutex_lock(&log->io_mutex); in ppl_write_stripe_run()
553 ppl_submit_current_io(log); in ppl_write_stripe_run()
554 mutex_unlock(&log->io_mutex); in ppl_write_stripe_run()
560 struct ppl_log *log = io->log; in ppl_io_unit_finished() local
561 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_io_unit_finished()
569 spin_lock(&log->io_list_lock); in ppl_io_unit_finished()
571 spin_unlock(&log->io_list_lock); in ppl_io_unit_finished()
595 struct ppl_log *log = io->log; in ppl_flush_endio() local
596 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_flush_endio()
622 struct ppl_log *log = io->log; in ppl_do_flush() local
623 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_do_flush()
631 for_each_set_bit(i, &log->disk_flush_bitmap, raid_disks) { in ppl_do_flush()
659 log->disk_flush_bitmap = 0; in ppl_do_flush()
668 struct ppl_log *log) in ppl_no_io_unit_submitted() argument
672 io = list_first_entry_or_null(&log->io_list, struct ppl_io_unit, in ppl_no_io_unit_submitted()
685 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_quiesce() local
687 spin_lock_irq(&log->io_list_lock); in ppl_quiesce()
689 ppl_no_io_unit_submitted(conf, log), in ppl_quiesce()
690 log->io_list_lock); in ppl_quiesce()
691 spin_unlock_irq(&log->io_list_lock); in ppl_quiesce()
696 int ppl_handle_flush_request(struct r5l_log *log, struct bio *bio) in ppl_handle_flush_request() argument
714 if (io->log->disk_flush_bitmap) in ppl_stripe_write_finished()
800 static int ppl_recover_entry(struct ppl_log *log, struct ppl_header_entry *e, in ppl_recover_entry() argument
803 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_recover_entry()
933 if (!sync_page_io(log->rdev, in ppl_recover_entry()
934 ppl_sector - log->rdev->data_offset + i, in ppl_recover_entry()
939 md_error(mddev, log->rdev); in ppl_recover_entry()
953 BUG_ON(parity_rdev->bdev->bd_dev != log->rdev->bdev->bd_dev); in ppl_recover_entry()
975 static int ppl_recover(struct ppl_log *log, struct ppl_header *pplhdr, in ppl_recover() argument
978 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_recover()
979 struct md_rdev *rdev = log->rdev; in ppl_recover()
1035 ret = ppl_recover_entry(log, e, ppl_sector); in ppl_recover()
1051 static int ppl_write_empty_header(struct ppl_log *log) in ppl_write_empty_header() argument
1055 struct md_rdev *rdev = log->rdev; in ppl_write_empty_header()
1068 log->rdev->ppl.size, GFP_NOIO, 0); in ppl_write_empty_header()
1070 pplhdr->signature = cpu_to_le32(log->ppl_conf->signature); in ppl_write_empty_header()
1084 static int ppl_load_distributed(struct ppl_log *log) in ppl_load_distributed() argument
1086 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_load_distributed()
1087 struct md_rdev *rdev = log->rdev; in ppl_load_distributed()
1185 ret = ppl_recover(log, pplhdr, pplhdr_offset); in ppl_load_distributed()
1189 ret = ppl_write_empty_header(log); in ppl_load_distributed()
1208 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_load() local
1211 if (!log->rdev) in ppl_load()
1214 ret = ppl_load_distributed(log); in ppl_load()
1314 static void ppl_init_child_log(struct ppl_log *log, struct md_rdev *rdev) in ppl_init_child_log() argument
1320 log->use_multippl = true; in ppl_init_child_log()
1322 &log->ppl_conf->mddev->flags); in ppl_init_child_log()
1323 log->entry_space = PPL_SPACE_SIZE; in ppl_init_child_log()
1325 log->use_multippl = false; in ppl_init_child_log()
1326 log->entry_space = (log->rdev->ppl.size << 9) - in ppl_init_child_log()
1329 log->next_io_sector = rdev->ppl.sector; in ppl_init_child_log()
1333 log->wb_cache_on = true; in ppl_init_child_log()
1421 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_init_log() local
1424 mutex_init(&log->io_mutex); in ppl_init_log()
1425 spin_lock_init(&log->io_list_lock); in ppl_init_log()
1426 INIT_LIST_HEAD(&log->io_list); in ppl_init_log()
1428 log->ppl_conf = ppl_conf; in ppl_init_log()
1429 log->rdev = rdev; in ppl_init_log()
1436 ppl_init_child_log(log, rdev); in ppl_init_log()
1472 struct ppl_log *log; in ppl_modify_log() local
1489 log = &ppl_conf->child_logs[rdev->raid_disk]; in ppl_modify_log()
1491 mutex_lock(&log->io_mutex); in ppl_modify_log()
1495 log->rdev = rdev; in ppl_modify_log()
1496 ret = ppl_write_empty_header(log); in ppl_modify_log()
1497 ppl_init_child_log(log, rdev); in ppl_modify_log()
1500 log->rdev = NULL; in ppl_modify_log()
1502 mutex_unlock(&log->io_mutex); in ppl_modify_log()