Lines Matching refs:mddev

257 	struct mddev *mddev;  member
350 static void __llbitmap_flush(struct mddev *mddev);
369 bool level_456 = raid_is_456(llbitmap->mddev); in llbitmap_infect_dirty_bits()
401 if (llbitmap->mddev->degraded) { in llbitmap_set_page_dirty()
446 struct mddev *mddev = llbitmap->mddev; in llbitmap_read_page() local
459 rdev_for_each(rdev, mddev) { in llbitmap_read_page()
465 sector = mddev->bitmap_info.offset + in llbitmap_read_page()
472 md_error(mddev, rdev); in llbitmap_read_page()
482 struct mddev *mddev = llbitmap->mddev; in llbitmap_write_page() local
492 rdev_for_each(rdev, mddev) { in llbitmap_write_page()
499 sector = mddev->bitmap_info.offset + rdev->sb_start + in llbitmap_write_page()
502 md_write_metadata(mddev, rdev, sector, in llbitmap_write_page()
605 struct mddev *mddev = llbitmap->mddev; in llbitmap_state_machine() local
607 bool level_456 = raid_is_456(llbitmap->mddev); in llbitmap_state_machine()
630 need_resync = !mddev->degraded; in llbitmap_state_machine()
635 if (unlikely(mddev->degraded)) { in llbitmap_state_machine()
662 need_resync = !mddev->degraded; in llbitmap_state_machine()
666 jiffies + mddev->bitmap_info.daemon_sleep * HZ); in llbitmap_state_machine()
675 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in llbitmap_state_machine()
676 set_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery); in llbitmap_state_machine()
677 md_wakeup_thread(mddev->thread); in llbitmap_state_machine()
679 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in llbitmap_state_machine()
680 set_bit(MD_RECOVERY_SYNC, &mddev->recovery); in llbitmap_state_machine()
681 md_wakeup_thread(mddev->thread); in llbitmap_state_machine()
715 llbitmap->mddev->bitmap_info.daemon_sleep * HZ)) { in llbitmap_suspend_timeout()
732 static int llbitmap_check_support(struct mddev *mddev) in llbitmap_check_support() argument
734 if (test_bit(MD_HAS_JOURNAL, &mddev->flags)) { in llbitmap_check_support()
736 mdname(mddev)); in llbitmap_check_support()
740 if (mddev->bitmap_info.space == 0) { in llbitmap_check_support()
741 if (mddev->bitmap_info.default_space == 0) { in llbitmap_check_support()
743 mdname(mddev)); in llbitmap_check_support()
748 if (!mddev->persistent) { in llbitmap_check_support()
750 mdname(mddev)); in llbitmap_check_support()
754 if (mddev->bitmap_info.file) { in llbitmap_check_support()
756 mdname(mddev)); in llbitmap_check_support()
760 if (mddev->bitmap_info.external) { in llbitmap_check_support()
762 mdname(mddev)); in llbitmap_check_support()
766 if (mddev_is_dm(mddev)) { in llbitmap_check_support()
768 mdname(mddev)); in llbitmap_check_support()
777 struct mddev *mddev = llbitmap->mddev; in llbitmap_init() local
778 sector_t blocks = mddev->resync_max_sectors; in llbitmap_init()
781 unsigned long space = mddev->bitmap_info.space << SECTOR_SHIFT; in llbitmap_init()
793 mddev->bitmap_info.daemon_sleep = DEFAULT_DAEMON_SLEEP; in llbitmap_init()
802 __llbitmap_flush(mddev); in llbitmap_init()
809 struct mddev *mddev = llbitmap->mddev; in llbitmap_read_sb() local
817 if (!mddev->bitmap_info.offset) { in llbitmap_read_sb()
818 pr_err("md/llbitmap: %s: no super block found", mdname(mddev)); in llbitmap_read_sb()
825 mdname(mddev)); in llbitmap_read_sb()
832 mdname(mddev)); in llbitmap_read_sb()
838 mdname(mddev)); in llbitmap_read_sb()
842 if (memcmp(sb->uuid, mddev->uuid, 16)) { in llbitmap_read_sb()
844 mdname(mddev)); in llbitmap_read_sb()
848 if (mddev->bitmap_info.space == 0) { in llbitmap_read_sb()
852 mddev->bitmap_info.space = room; in llbitmap_read_sb()
854 mddev->bitmap_info.space = mddev->bitmap_info.default_space; in llbitmap_read_sb()
865 mdname(mddev)); in llbitmap_read_sb()
869 if (chunksize < DIV_ROUND_UP_SECTOR_T(mddev->resync_max_sectors, in llbitmap_read_sb()
870 mddev->bitmap_info.space << SECTOR_SHIFT)) { in llbitmap_read_sb()
872 mdname(mddev), chunksize, mddev->resync_max_sectors, in llbitmap_read_sb()
873 mddev->bitmap_info.space); in llbitmap_read_sb()
880 mdname(mddev), daemon_sleep); in llbitmap_read_sb()
885 if (events < mddev->events) { in llbitmap_read_sb()
887 mdname(mddev), events, mddev->events); in llbitmap_read_sb()
891 sb->sync_size = cpu_to_le64(mddev->resync_max_sectors); in llbitmap_read_sb()
892 mddev->bitmap_info.chunksize = chunksize; in llbitmap_read_sb()
893 mddev->bitmap_info.daemon_sleep = daemon_sleep; in llbitmap_read_sb()
897 llbitmap->chunks = DIV_ROUND_UP_SECTOR_T(mddev->resync_max_sectors, chunksize); in llbitmap_read_sb()
914 mdname(llbitmap->mddev), in llbitmap_pending_timer_fn()
915 llbitmap->mddev->bitmap_info.daemon_sleep); in llbitmap_pending_timer_fn()
932 if (llbitmap->mddev->degraded) in md_llbitmap_daemon_fn()
955 mdname(llbitmap->mddev), __func__, idx); in md_llbitmap_daemon_fn()
973 jiffies + llbitmap->mddev->bitmap_info.daemon_sleep * HZ); in md_llbitmap_daemon_fn()
976 static int llbitmap_create(struct mddev *mddev) in llbitmap_create() argument
981 ret = llbitmap_check_support(mddev); in llbitmap_create()
989 llbitmap->mddev = mddev; in llbitmap_create()
990 llbitmap->io_size = bdev_logical_block_size(mddev->gendisk->part0); in llbitmap_create()
998 mutex_lock(&mddev->bitmap_info.mutex); in llbitmap_create()
999 mddev->bitmap = llbitmap; in llbitmap_create()
1001 mutex_unlock(&mddev->bitmap_info.mutex); in llbitmap_create()
1004 mddev->bitmap = NULL; in llbitmap_create()
1010 static int llbitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize) in llbitmap_resize() argument
1012 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_resize()
1020 while (chunks > mddev->bitmap_info.space << SECTOR_SHIFT) { in llbitmap_resize()
1032 static int llbitmap_load(struct mddev *mddev) in llbitmap_load() argument
1035 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_load()
1044 static void llbitmap_destroy(struct mddev *mddev) in llbitmap_destroy() argument
1046 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_destroy()
1051 mutex_lock(&mddev->bitmap_info.mutex); in llbitmap_destroy()
1057 mddev->bitmap = NULL; in llbitmap_destroy()
1060 mutex_unlock(&mddev->bitmap_info.mutex); in llbitmap_destroy()
1063 static void llbitmap_start_write(struct mddev *mddev, sector_t offset, in llbitmap_start_write() argument
1066 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_start_write()
1080 static void llbitmap_end_write(struct mddev *mddev, sector_t offset, in llbitmap_end_write() argument
1083 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_end_write()
1095 static void llbitmap_start_discard(struct mddev *mddev, sector_t offset, in llbitmap_start_discard() argument
1098 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_start_discard()
1112 static void llbitmap_end_discard(struct mddev *mddev, sector_t offset, in llbitmap_end_discard() argument
1115 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_end_discard()
1146 md_super_wait(llbitmap->mddev); in llbitmap_unplug_fn()
1161 static void llbitmap_unplug(struct mddev *mddev, bool sync) in llbitmap_unplug() argument
1164 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_unplug()
1190 static void __llbitmap_flush(struct mddev *mddev) in __llbitmap_flush() argument
1192 struct llbitmap *llbitmap = mddev->bitmap; in __llbitmap_flush()
1206 md_super_wait(llbitmap->mddev); in __llbitmap_flush()
1209 static void llbitmap_flush(struct mddev *mddev) in llbitmap_flush() argument
1211 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_flush()
1221 __llbitmap_flush(mddev); in llbitmap_flush()
1225 static bool llbitmap_blocks_synced(struct mddev *mddev, sector_t offset) in llbitmap_blocks_synced() argument
1227 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_blocks_synced()
1234 static sector_t llbitmap_skip_sync_blocks(struct mddev *mddev, sector_t offset) in llbitmap_skip_sync_blocks() argument
1236 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_skip_sync_blocks()
1246 if (mddev->degraded) in llbitmap_skip_sync_blocks()
1251 test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && in llbitmap_skip_sync_blocks()
1252 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in llbitmap_skip_sync_blocks()
1258 static bool llbitmap_start_sync(struct mddev *mddev, sector_t offset, in llbitmap_start_sync() argument
1261 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_start_sync()
1274 static void llbitmap_end_sync(struct mddev *mddev, sector_t offset, in llbitmap_end_sync() argument
1277 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_end_sync()
1286 static void llbitmap_close_sync(struct mddev *mddev) in llbitmap_close_sync() argument
1288 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_close_sync()
1306 static void llbitmap_cond_end_sync(struct mddev *mddev, sector_t sector, in llbitmap_cond_end_sync() argument
1309 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_cond_end_sync()
1317 HZ * mddev->bitmap_info.daemon_sleep)) in llbitmap_cond_end_sync()
1320 wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active)); in llbitmap_cond_end_sync()
1322 mddev->curr_resync_completed = sector; in llbitmap_cond_end_sync()
1323 set_bit(MD_SB_CHANGE_CLEAN, &mddev->sb_flags); in llbitmap_cond_end_sync()
1326 __llbitmap_flush(mddev); in llbitmap_cond_end_sync()
1329 sysfs_notify_dirent_safe(mddev->sysfs_completed); in llbitmap_cond_end_sync()
1339 static void llbitmap_dirty_bits(struct mddev *mddev, unsigned long s, in llbitmap_dirty_bits() argument
1342 llbitmap_state_machine(mddev->bitmap, s, e, BitmapActionStartwrite); in llbitmap_dirty_bits()
1351 md_super_wait(llbitmap->mddev); in llbitmap_write_sb()
1357 struct mddev *mddev = llbitmap->mddev; in llbitmap_update_sb() local
1367 mdname(mddev)); in llbitmap_update_sb()
1372 if (mddev->events < llbitmap->events_cleared) in llbitmap_update_sb()
1373 llbitmap->events_cleared = mddev->events; in llbitmap_update_sb()
1376 sb->events = cpu_to_le64(mddev->events); in llbitmap_update_sb()
1379 sb->sync_size = cpu_to_le64(mddev->resync_max_sectors); in llbitmap_update_sb()
1381 sb->sectors_reserved = cpu_to_le32(mddev->bitmap_info.space); in llbitmap_update_sb()
1382 sb->daemon_sleep = cpu_to_le32(mddev->bitmap_info.daemon_sleep); in llbitmap_update_sb()
1406 static void llbitmap_write_all(struct mddev *mddev) in llbitmap_write_all() argument
1409 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_write_all()
1419 static void llbitmap_start_behind_write(struct mddev *mddev) in llbitmap_start_behind_write() argument
1421 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_start_behind_write()
1426 static void llbitmap_end_behind_write(struct mddev *mddev) in llbitmap_end_behind_write() argument
1428 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_end_behind_write()
1434 static void llbitmap_wait_behind_writes(struct mddev *mddev) in llbitmap_wait_behind_writes() argument
1436 struct llbitmap *llbitmap = mddev->bitmap; in llbitmap_wait_behind_writes()
1446 static ssize_t bits_show(struct mddev *mddev, char *page) in bits_show() argument
1452 mutex_lock(&mddev->bitmap_info.mutex); in bits_show()
1453 llbitmap = mddev->bitmap; in bits_show()
1455 mutex_unlock(&mddev->bitmap_info.mutex); in bits_show()
1460 mutex_unlock(&mddev->bitmap_info.mutex); in bits_show()
1475 mutex_unlock(&mddev->bitmap_info.mutex); in bits_show()
1483 static ssize_t metadata_show(struct mddev *mddev, char *page) in metadata_show() argument
1488 mutex_lock(&mddev->bitmap_info.mutex); in metadata_show()
1489 llbitmap = mddev->bitmap; in metadata_show()
1491 mutex_unlock(&mddev->bitmap_info.mutex); in metadata_show()
1497 llbitmap->chunks, mddev->bitmap_info.offset, in metadata_show()
1498 llbitmap->mddev->bitmap_info.daemon_sleep); in metadata_show()
1499 mutex_unlock(&mddev->bitmap_info.mutex); in metadata_show()
1507 daemon_sleep_show(struct mddev *mddev, char *page) in daemon_sleep_show() argument
1509 return sprintf(page, "%lu\n", mddev->bitmap_info.daemon_sleep); in daemon_sleep_show()
1513 daemon_sleep_store(struct mddev *mddev, const char *buf, size_t len) in daemon_sleep_store() argument
1521 mddev->bitmap_info.daemon_sleep = timeout; in daemon_sleep_store()
1528 barrier_idle_show(struct mddev *mddev, char *page) in barrier_idle_show() argument
1530 struct llbitmap *llbitmap = mddev->bitmap; in barrier_idle_show()
1536 barrier_idle_store(struct mddev *mddev, const char *buf, size_t len) in barrier_idle_store() argument
1538 struct llbitmap *llbitmap = mddev->bitmap; in barrier_idle_store()