Lines Matching refs:log
136 struct ppl_log *log; member
232 static struct ppl_io_unit *ppl_new_iounit(struct ppl_log *log, in ppl_new_iounit() argument
235 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_new_iounit()
248 io->log = log; in ppl_new_iounit()
266 static int ppl_log_stripe(struct ppl_log *log, struct stripe_head *sh) in ppl_log_stripe() argument
268 struct ppl_io_unit *io = log->current_io; in ppl_log_stripe()
279 if (io && (io->pp_size == log->entry_space || in ppl_log_stripe()
288 io = ppl_new_iounit(log, sh); in ppl_log_stripe()
291 spin_lock_irq(&log->io_list_lock); in ppl_log_stripe()
292 list_add_tail(&io->log_sibling, &log->io_list); in ppl_log_stripe()
293 spin_unlock_irq(&log->io_list_lock); in ppl_log_stripe()
295 log->current_io = io; in ppl_log_stripe()
364 struct ppl_log *log; in ppl_write_stripe() local
373 log = &ppl_conf->child_logs[sh->pd_idx]; in ppl_write_stripe()
375 mutex_lock(&log->io_mutex); in ppl_write_stripe()
377 if (!log->rdev || test_bit(Faulty, &log->rdev->flags)) { in ppl_write_stripe()
378 mutex_unlock(&log->io_mutex); in ppl_write_stripe()
386 if (ppl_log_stripe(log, sh)) { in ppl_write_stripe()
392 mutex_unlock(&log->io_mutex); in ppl_write_stripe()
400 struct ppl_log *log = io->log; in ppl_log_endio() local
401 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_log_endio()
407 md_error(ppl_conf->mddev, log->rdev); in ppl_log_endio()
431 struct ppl_log *log = io->log; in ppl_submit_iounit() local
432 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_submit_iounit()
440 if (!log->rdev || test_bit(Faulty, &log->rdev->flags)) { in ppl_submit_iounit()
461 if (log->use_multippl && in ppl_submit_iounit()
462 log->rdev->ppl.sector + log->rdev->ppl.size - log->next_io_sector < in ppl_submit_iounit()
464 log->next_io_sector = log->rdev->ppl.sector; in ppl_submit_iounit()
469 bio_set_dev(bio, log->rdev->bdev); in ppl_submit_iounit()
470 bio->bi_iter.bi_sector = log->next_io_sector; in ppl_submit_iounit()
475 (unsigned long long)log->next_io_sector); in ppl_submit_iounit()
477 if (log->use_multippl) in ppl_submit_iounit()
478 log->next_io_sector += (PPL_HEADER_SIZE + io->pp_size) >> 9; in ppl_submit_iounit()
480 WARN_ON(log->disk_flush_bitmap != 0); in ppl_submit_iounit()
488 set_bit(i, &log->disk_flush_bitmap); in ppl_submit_iounit()
515 static void ppl_submit_current_io(struct ppl_log *log) in ppl_submit_current_io() argument
519 spin_lock_irq(&log->io_list_lock); in ppl_submit_current_io()
521 io = list_first_entry_or_null(&log->io_list, struct ppl_io_unit, in ppl_submit_current_io()
526 spin_unlock_irq(&log->io_list_lock); in ppl_submit_current_io()
531 if (io == log->current_io) in ppl_submit_current_io()
532 log->current_io = NULL; in ppl_submit_current_io()
541 struct ppl_log *log; in ppl_write_stripe_run() local
545 log = &ppl_conf->child_logs[i]; in ppl_write_stripe_run()
547 mutex_lock(&log->io_mutex); in ppl_write_stripe_run()
548 ppl_submit_current_io(log); in ppl_write_stripe_run()
549 mutex_unlock(&log->io_mutex); in ppl_write_stripe_run()
555 struct ppl_log *log = io->log; in ppl_io_unit_finished() local
556 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_io_unit_finished()
564 spin_lock(&log->io_list_lock); in ppl_io_unit_finished()
566 spin_unlock(&log->io_list_lock); in ppl_io_unit_finished()
590 struct ppl_log *log = io->log; in ppl_flush_endio() local
591 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_flush_endio()
617 struct ppl_log *log = io->log; in ppl_do_flush() local
618 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_do_flush()
626 for_each_set_bit(i, &log->disk_flush_bitmap, raid_disks) { in ppl_do_flush()
654 log->disk_flush_bitmap = 0; in ppl_do_flush()
663 struct ppl_log *log) in ppl_no_io_unit_submitted() argument
667 io = list_first_entry_or_null(&log->io_list, struct ppl_io_unit, in ppl_no_io_unit_submitted()
680 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_quiesce() local
682 spin_lock_irq(&log->io_list_lock); in ppl_quiesce()
684 ppl_no_io_unit_submitted(conf, log), in ppl_quiesce()
685 log->io_list_lock); in ppl_quiesce()
686 spin_unlock_irq(&log->io_list_lock); in ppl_quiesce()
691 int ppl_handle_flush_request(struct r5l_log *log, struct bio *bio) in ppl_handle_flush_request() argument
709 if (io->log->disk_flush_bitmap) in ppl_stripe_write_finished()
795 static int ppl_recover_entry(struct ppl_log *log, struct ppl_header_entry *e, in ppl_recover_entry() argument
798 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_recover_entry()
928 if (!sync_page_io(log->rdev, in ppl_recover_entry()
929 ppl_sector - log->rdev->data_offset + i, in ppl_recover_entry()
934 md_error(mddev, log->rdev); in ppl_recover_entry()
948 BUG_ON(parity_rdev->bdev->bd_dev != log->rdev->bdev->bd_dev); in ppl_recover_entry()
970 static int ppl_recover(struct ppl_log *log, struct ppl_header *pplhdr, in ppl_recover() argument
973 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_recover()
974 struct md_rdev *rdev = log->rdev; in ppl_recover()
1030 ret = ppl_recover_entry(log, e, ppl_sector); in ppl_recover()
1046 static int ppl_write_empty_header(struct ppl_log *log) in ppl_write_empty_header() argument
1050 struct md_rdev *rdev = log->rdev; in ppl_write_empty_header()
1063 log->rdev->ppl.size, GFP_NOIO, 0); in ppl_write_empty_header()
1065 pplhdr->signature = cpu_to_le32(log->ppl_conf->signature); in ppl_write_empty_header()
1079 static int ppl_load_distributed(struct ppl_log *log) in ppl_load_distributed() argument
1081 struct ppl_conf *ppl_conf = log->ppl_conf; in ppl_load_distributed()
1082 struct md_rdev *rdev = log->rdev; in ppl_load_distributed()
1180 ret = ppl_recover(log, pplhdr, pplhdr_offset); in ppl_load_distributed()
1184 ret = ppl_write_empty_header(log); in ppl_load_distributed()
1203 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_load() local
1206 if (!log->rdev) in ppl_load()
1209 ret = ppl_load_distributed(log); in ppl_load()
1310 static void ppl_init_child_log(struct ppl_log *log, struct md_rdev *rdev) in ppl_init_child_log() argument
1316 log->use_multippl = true; in ppl_init_child_log()
1318 &log->ppl_conf->mddev->flags); in ppl_init_child_log()
1319 log->entry_space = PPL_SPACE_SIZE; in ppl_init_child_log()
1321 log->use_multippl = false; in ppl_init_child_log()
1322 log->entry_space = (log->rdev->ppl.size << 9) - in ppl_init_child_log()
1325 log->next_io_sector = rdev->ppl.sector; in ppl_init_child_log()
1329 log->wb_cache_on = true; in ppl_init_child_log()
1418 struct ppl_log *log = &ppl_conf->child_logs[i]; in ppl_init_log() local
1421 mutex_init(&log->io_mutex); in ppl_init_log()
1422 spin_lock_init(&log->io_list_lock); in ppl_init_log()
1423 INIT_LIST_HEAD(&log->io_list); in ppl_init_log()
1425 log->ppl_conf = ppl_conf; in ppl_init_log()
1426 log->rdev = rdev; in ppl_init_log()
1433 ppl_init_child_log(log, rdev); in ppl_init_log()
1469 struct ppl_log *log; in ppl_modify_log() local
1486 log = &ppl_conf->child_logs[rdev->raid_disk]; in ppl_modify_log()
1488 mutex_lock(&log->io_mutex); in ppl_modify_log()
1492 log->rdev = rdev; in ppl_modify_log()
1493 ret = ppl_write_empty_header(log); in ppl_modify_log()
1494 ppl_init_child_log(log, rdev); in ppl_modify_log()
1497 log->rdev = NULL; in ppl_modify_log()
1499 mutex_unlock(&log->io_mutex); in ppl_modify_log()