Lines Matching refs:mddev

166 	struct mddev *mddev; /* the md device that the bitmap is for */  member
222 return bitmap->mddev ? mdname(bitmap->mddev) : "mdX"; in bmname()
231 static bool bitmap_enabled(struct mddev *mddev) in bitmap_enabled() argument
233 struct bitmap *bitmap = mddev->bitmap; in bitmap_enabled()
345 static int read_sb_page(struct mddev *mddev, loff_t offset, in read_sb_page() argument
349 sector_t sector = mddev->bitmap_info.offset + offset + in read_sb_page()
353 rdev_for_each(rdev, mddev) { in read_sb_page()
367 static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mddev) in next_active_rdev() argument
385 rdev = list_entry(&mddev->disks, struct md_rdev, same_set); in next_active_rdev()
388 rdev_dec_pending(rdev, mddev); in next_active_rdev()
390 list_for_each_entry_continue_rcu(rdev, &mddev->disks, same_set) { in next_active_rdev()
429 struct mddev *mddev = bitmap->mddev; in __write_sb_page() local
433 loff_t sboff, offset = mddev->bitmap_info.offset; in __write_sb_page()
454 if (mddev->external) { in __write_sb_page()
457 sboff < (doff + mddev->dev_sectors + PAGE_SIZE / SECTOR_SIZE)) in __write_sb_page()
466 if (doff + mddev->dev_sectors > sboff) in __write_sb_page()
477 md_super_write(mddev, rdev, sboff + ps, (int)min(size, bitmap_limit), page); in __write_sb_page()
484 struct mddev *mddev = bitmap->mddev; in write_sb_page() local
489 while ((rdev = next_active_rdev(rdev, mddev)) != NULL) { in write_sb_page()
495 } while (wait && md_super_wait(mddev) < 0); in write_sb_page()
642 if (mddev_is_clustered(bitmap->mddev)) { in filemap_write_page()
671 md_super_wait(bitmap->mddev); in md_bitmap_wait_writes()
681 if (!bitmap || !bitmap->mddev) /* no bitmap for this array */ in bitmap_update_sb()
683 if (bitmap->mddev->bitmap_info.external) in bitmap_update_sb()
688 sb->events = cpu_to_le64(bitmap->mddev->events); in bitmap_update_sb()
689 if (bitmap->mddev->events < bitmap->events_cleared) in bitmap_update_sb()
691 bitmap->events_cleared = bitmap->mddev->events; in bitmap_update_sb()
699 sb->daemon_sleep = cpu_to_le32(bitmap->mddev->bitmap_info.daemon_sleep/HZ); in bitmap_update_sb()
700 sb->write_behind = cpu_to_le32(bitmap->mddev->bitmap_info.max_write_behind); in bitmap_update_sb()
702 sb->sync_size = cpu_to_le64(bitmap->mddev->resync_max_sectors); in bitmap_update_sb()
703 sb->chunksize = cpu_to_le32(bitmap->mddev->bitmap_info.chunksize); in bitmap_update_sb()
704 sb->nodes = cpu_to_le32(bitmap->mddev->bitmap_info.nodes); in bitmap_update_sb()
705 sb->sectors_reserved = cpu_to_le32(bitmap->mddev-> in bitmap_update_sb()
770 chunksize = bitmap->mddev->bitmap_info.chunksize; in md_bitmap_new_disk_sb()
779 daemon_sleep = bitmap->mddev->bitmap_info.daemon_sleep; in md_bitmap_new_disk_sb()
785 bitmap->mddev->bitmap_info.daemon_sleep = daemon_sleep; in md_bitmap_new_disk_sb()
791 write_behind = bitmap->mddev->bitmap_info.max_write_behind; in md_bitmap_new_disk_sb()
795 bitmap->mddev->bitmap_info.max_write_behind = write_behind; in md_bitmap_new_disk_sb()
798 sb->sync_size = cpu_to_le64(bitmap->mddev->resync_max_sectors); in md_bitmap_new_disk_sb()
800 memcpy(sb->uuid, bitmap->mddev->uuid, 16); in md_bitmap_new_disk_sb()
804 bitmap->events_cleared = bitmap->mddev->events; in md_bitmap_new_disk_sb()
805 sb->events_cleared = cpu_to_le64(bitmap->mddev->events); in md_bitmap_new_disk_sb()
806 bitmap->mddev->bitmap_info.nodes = 0; in md_bitmap_new_disk_sb()
826 if (!bitmap->storage.file && !bitmap->mddev->bitmap_info.offset) { in md_bitmap_read_sb()
843 sector_t bm_blocks = bitmap->mddev->resync_max_sectors; in md_bitmap_read_sb()
846 (bitmap->mddev->bitmap_info.chunksize >> 9)); in md_bitmap_read_sb()
863 err = read_sb_page(bitmap->mddev, offset, sb_page, 0, in md_bitmap_read_sb()
903 strscpy(bitmap->mddev->bitmap_info.cluster_name, in md_bitmap_read_sb()
908 sb->sync_size = cpu_to_le64(bitmap->mddev->resync_max_sectors); in md_bitmap_read_sb()
910 if (bitmap->mddev->persistent) { in md_bitmap_read_sb()
915 if (memcmp(sb->uuid, bitmap->mddev->uuid, 16)) { in md_bitmap_read_sb()
921 if (!nodes && (events < bitmap->mddev->events)) { in md_bitmap_read_sb()
924 (unsigned long long) bitmap->mddev->events); in md_bitmap_read_sb()
940 bitmap->mddev->bitmap_info.chunksize = chunksize; in md_bitmap_read_sb()
941 err = md_setup_cluster(bitmap->mddev, nodes); in md_bitmap_read_sb()
947 bitmap->cluster_slot = bitmap->mddev->cluster_ops->slot_number(bitmap->mddev); in md_bitmap_read_sb()
954 bitmap->events_cleared = bitmap->mddev->events; in md_bitmap_read_sb()
955 bitmap->mddev->bitmap_info.chunksize = chunksize; in md_bitmap_read_sb()
956 bitmap->mddev->bitmap_info.daemon_sleep = daemon_sleep; in md_bitmap_read_sb()
957 bitmap->mddev->bitmap_info.max_write_behind = write_behind; in md_bitmap_read_sb()
958 bitmap->mddev->bitmap_info.nodes = nodes; in md_bitmap_read_sb()
959 if (bitmap->mddev->bitmap_info.space == 0 || in md_bitmap_read_sb()
960 bitmap->mddev->bitmap_info.space > sectors_reserved) in md_bitmap_read_sb()
961 bitmap->mddev->bitmap_info.space = sectors_reserved; in md_bitmap_read_sb()
965 md_cluster_stop(bitmap->mddev); in md_bitmap_read_sb()
1157 if (mddev_is_clustered(bitmap->mddev)) in md_bitmap_file_set_bit()
1188 if (mddev_is_clustered(bitmap->mddev)) in md_bitmap_file_clear_bit()
1249 mddev_add_trace_msg(bitmap->mddev, in __bitmap_unplug()
1293 static void bitmap_unplug(struct mddev *mddev, bool sync) in bitmap_unplug() argument
1295 struct bitmap *bitmap = mddev->bitmap; in bitmap_unplug()
1322 struct mddev *mddev = bitmap->mddev; in md_bitmap_init_from_disk() local
1331 if (!file && !mddev->bitmap_info.offset) { in md_bitmap_init_from_disk()
1355 if (mddev_is_clustered(mddev)) in md_bitmap_init_from_disk()
1371 ret = read_sb_page(mddev, 0, page, i + node_offset, in md_bitmap_init_from_disk()
1386 if (i == 0 && !mddev->bitmap_info.external) in md_bitmap_init_from_disk()
1442 static void bitmap_write_all(struct mddev *mddev) in bitmap_write_all() argument
1445 struct bitmap *bitmap = mddev->bitmap; in bitmap_write_all()
1482 static void mddev_set_timeout(struct mddev *mddev, unsigned long timeout, in mddev_set_timeout() argument
1488 thread = rcu_dereference(mddev->thread); in mddev_set_timeout()
1504 static void bitmap_daemon_work(struct mddev *mddev) in bitmap_daemon_work() argument
1515 mutex_lock(&mddev->bitmap_info.mutex); in bitmap_daemon_work()
1516 bitmap = mddev->bitmap; in bitmap_daemon_work()
1518 mutex_unlock(&mddev->bitmap_info.mutex); in bitmap_daemon_work()
1522 + mddev->bitmap_info.daemon_sleep)) in bitmap_daemon_work()
1527 mddev_set_timeout(mddev, MAX_SCHEDULE_TIMEOUT, true); in bitmap_daemon_work()
1532 mddev_add_trace_msg(bitmap->mddev, "md bitmap_daemon_work"); in bitmap_daemon_work()
1545 mddev->bitmap_info.external == 0) { in bitmap_daemon_work()
1621 mddev_set_timeout(mddev, mddev->bitmap_info.daemon_sleep, true); in bitmap_daemon_work()
1622 mutex_unlock(&mddev->bitmap_info.mutex); in bitmap_daemon_work()
1675 static int bitmap_startwrite(struct mddev *mddev, sector_t offset, in bitmap_startwrite() argument
1678 struct bitmap *bitmap = mddev->bitmap; in bitmap_startwrite()
1730 static void bitmap_endwrite(struct mddev *mddev, sector_t offset, in bitmap_endwrite() argument
1733 struct bitmap *bitmap = mddev->bitmap; in bitmap_endwrite()
1750 if (!bitmap->mddev->degraded) { in bitmap_endwrite()
1751 if (bitmap->events_cleared < bitmap->mddev->events) { in bitmap_endwrite()
1752 bitmap->events_cleared = bitmap->mddev->events; in bitmap_endwrite()
1809 static bool bitmap_start_sync(struct mddev *mddev, sector_t offset, in bitmap_start_sync() argument
1824 rv |= __bitmap_start_sync(mddev->bitmap, offset, in bitmap_start_sync()
1864 static void bitmap_end_sync(struct mddev *mddev, sector_t offset, in bitmap_end_sync() argument
1867 __bitmap_end_sync(mddev->bitmap, offset, blocks, true); in bitmap_end_sync()
1870 static void bitmap_close_sync(struct mddev *mddev) in bitmap_close_sync() argument
1878 struct bitmap *bitmap = mddev->bitmap; in bitmap_close_sync()
1883 while (sector < bitmap->mddev->resync_max_sectors) { in bitmap_close_sync()
1889 static void bitmap_cond_end_sync(struct mddev *mddev, sector_t sector, in bitmap_cond_end_sync() argument
1894 struct bitmap *bitmap = mddev->bitmap; in bitmap_cond_end_sync()
1903 + bitmap->mddev->bitmap_info.daemon_sleep))) in bitmap_cond_end_sync()
1905 wait_event(bitmap->mddev->recovery_wait, in bitmap_cond_end_sync()
1906 atomic_read(&bitmap->mddev->recovery_active) == 0); in bitmap_cond_end_sync()
1908 bitmap->mddev->curr_resync_completed = sector; in bitmap_cond_end_sync()
1909 set_bit(MD_SB_CHANGE_CLEAN, &bitmap->mddev->sb_flags); in bitmap_cond_end_sync()
1912 while (s < sector && s < bitmap->mddev->resync_max_sectors) { in bitmap_cond_end_sync()
1917 sysfs_notify_dirent_safe(bitmap->mddev->sysfs_completed); in bitmap_cond_end_sync()
1920 static void bitmap_sync_with_cluster(struct mddev *mddev, in bitmap_sync_with_cluster() argument
1924 struct bitmap *bitmap = mddev->bitmap; in bitmap_sync_with_cluster()
1934 bitmap_start_sync(mddev, sector, &blocks, false); in bitmap_sync_with_cluster()
1967 static void bitmap_dirty_bits(struct mddev *mddev, unsigned long s, in bitmap_dirty_bits() argument
1971 struct bitmap *bitmap = mddev->bitmap; in bitmap_dirty_bits()
1981 if (sec < bitmap->mddev->recovery_cp) in bitmap_dirty_bits()
1986 bitmap->mddev->recovery_cp = sec; in bitmap_dirty_bits()
1990 static void bitmap_flush(struct mddev *mddev) in bitmap_flush() argument
1992 struct bitmap *bitmap = mddev->bitmap; in bitmap_flush()
2001 sleep = mddev->bitmap_info.daemon_sleep * 2; in bitmap_flush()
2003 bitmap_daemon_work(mddev); in bitmap_flush()
2005 bitmap_daemon_work(mddev); in bitmap_flush()
2007 bitmap_daemon_work(mddev); in bitmap_flush()
2008 if (mddev->bitmap_info.external) in bitmap_flush()
2009 md_super_wait(mddev); in bitmap_flush()
2025 if (mddev_is_clustered(bitmap->mddev) && bitmap->mddev->cluster_info && in md_bitmap_free()
2026 bitmap->cluster_slot == bitmap->mddev->cluster_ops->slot_number(bitmap->mddev)) in md_bitmap_free()
2027 md_cluster_stop(bitmap->mddev); in md_bitmap_free()
2049 static void bitmap_start_behind_write(struct mddev *mddev) in bitmap_start_behind_write() argument
2051 struct bitmap *bitmap = mddev->bitmap; in bitmap_start_behind_write()
2063 bw, bitmap->mddev->bitmap_info.max_write_behind); in bitmap_start_behind_write()
2066 static void bitmap_end_behind_write(struct mddev *mddev) in bitmap_end_behind_write() argument
2068 struct bitmap *bitmap = mddev->bitmap; in bitmap_end_behind_write()
2077 bitmap->mddev->bitmap_info.max_write_behind); in bitmap_end_behind_write()
2080 static void bitmap_wait_behind_writes(struct mddev *mddev) in bitmap_wait_behind_writes() argument
2082 struct bitmap *bitmap = mddev->bitmap; in bitmap_wait_behind_writes()
2087 mdname(mddev)); in bitmap_wait_behind_writes()
2094 static void bitmap_destroy(struct mddev *mddev) in bitmap_destroy() argument
2096 struct bitmap *bitmap = mddev->bitmap; in bitmap_destroy()
2101 bitmap_wait_behind_writes(mddev); in bitmap_destroy()
2102 if (!mddev->serialize_policy) in bitmap_destroy()
2103 mddev_destroy_serial_pool(mddev, NULL); in bitmap_destroy()
2105 mutex_lock(&mddev->bitmap_info.mutex); in bitmap_destroy()
2106 spin_lock(&mddev->lock); in bitmap_destroy()
2107 mddev->bitmap = NULL; /* disconnect from the md device */ in bitmap_destroy()
2108 spin_unlock(&mddev->lock); in bitmap_destroy()
2109 mutex_unlock(&mddev->bitmap_info.mutex); in bitmap_destroy()
2110 mddev_set_timeout(mddev, MAX_SCHEDULE_TIMEOUT, true); in bitmap_destroy()
2120 static struct bitmap *__bitmap_create(struct mddev *mddev, int slot) in __bitmap_create() argument
2123 sector_t blocks = mddev->resync_max_sectors; in __bitmap_create()
2124 struct file *file = mddev->bitmap_info.file; in __bitmap_create()
2130 BUG_ON(file && mddev->bitmap_info.offset); in __bitmap_create()
2132 if (test_bit(MD_HAS_JOURNAL, &mddev->flags)) { in __bitmap_create()
2134 mdname(mddev)); in __bitmap_create()
2148 bitmap->mddev = mddev; in __bitmap_create()
2151 if (mddev->kobj.sd) in __bitmap_create()
2152 bm = sysfs_get_dirent(mddev->kobj.sd, "bitmap"); in __bitmap_create()
2169 if (!mddev->bitmap_info.external) { in __bitmap_create()
2174 if (test_and_clear_bit(MD_ARRAY_FIRST_USE, &mddev->flags)) in __bitmap_create()
2180 if (mddev->bitmap_info.chunksize == 0 || in __bitmap_create()
2181 mddev->bitmap_info.daemon_sleep == 0) in __bitmap_create()
2190 err = __bitmap_resize(bitmap, blocks, mddev->bitmap_info.chunksize, in __bitmap_create()
2208 static int bitmap_create(struct mddev *mddev, int slot) in bitmap_create() argument
2210 struct bitmap *bitmap = __bitmap_create(mddev, slot); in bitmap_create()
2215 mddev->bitmap = bitmap; in bitmap_create()
2219 static int bitmap_load(struct mddev *mddev) in bitmap_load() argument
2224 struct bitmap *bitmap = mddev->bitmap; in bitmap_load()
2230 rdev_for_each(rdev, mddev) in bitmap_load()
2231 mddev_create_serial_pool(mddev, rdev); in bitmap_load()
2233 if (mddev_is_clustered(mddev)) in bitmap_load()
2234 mddev->cluster_ops->load_bitmaps(mddev, mddev->bitmap_info.nodes); in bitmap_load()
2241 while (sector < mddev->resync_max_sectors) { in bitmap_load()
2243 bitmap_start_sync(mddev, sector, &blocks, false); in bitmap_load()
2246 bitmap_close_sync(mddev); in bitmap_load()
2248 if (mddev->degraded == 0 in bitmap_load()
2249 || bitmap->events_cleared == mddev->events) in bitmap_load()
2252 start = mddev->recovery_cp; in bitmap_load()
2254 mutex_lock(&mddev->bitmap_info.mutex); in bitmap_load()
2256 mutex_unlock(&mddev->bitmap_info.mutex); in bitmap_load()
2263 set_bit(MD_RECOVERY_NEEDED, &bitmap->mddev->recovery); in bitmap_load()
2265 mddev_set_timeout(mddev, mddev->bitmap_info.daemon_sleep, true); in bitmap_load()
2266 md_wakeup_thread(mddev->thread); in bitmap_load()
2277 static void *bitmap_get_from_slot(struct mddev *mddev, int slot) in bitmap_get_from_slot() argument
2282 bitmap = __bitmap_create(mddev, slot); in bitmap_get_from_slot()
2300 static int bitmap_copy_from_slot(struct mddev *mddev, int slot, sector_t *low, in bitmap_copy_from_slot() argument
2308 bitmap = bitmap_get_from_slot(mddev, slot); in bitmap_copy_from_slot()
2322 md_bitmap_set_memory_bits(mddev->bitmap, block, 1); in bitmap_copy_from_slot()
2323 md_bitmap_file_set_bit(mddev->bitmap, block); in bitmap_copy_from_slot()
2336 __bitmap_unplug(mddev->bitmap); in bitmap_copy_from_slot()
2360 if (!bitmap->mddev->bitmap_info.external && in bitmap_get_stats()
2414 long space = bitmap->mddev->bitmap_info.space; in __bitmap_resize()
2421 if (!bitmap->mddev->bitmap_info.external) in __bitmap_resize()
2424 bitmap->mddev->bitmap_info.space = space; in __bitmap_resize()
2433 if (!bitmap->mddev->bitmap_info.external) in __bitmap_resize()
2442 if (bitmap->mddev->bitmap_info.offset || bitmap->mddev->bitmap_info.file) in __bitmap_resize()
2444 !bitmap->mddev->bitmap_info.external, in __bitmap_resize()
2445 mddev_is_clustered(bitmap->mddev) in __bitmap_resize()
2462 bitmap->mddev->pers->quiesce(bitmap->mddev, 1); in __bitmap_resize()
2481 bitmap->mddev->bitmap_info.chunksize = 1UL << (chunkshift + in __bitmap_resize()
2488 if (mddev_is_clustered(bitmap->mddev)) { in __bitmap_resize()
2507 bitmap->mddev->bitmap_info.chunksize = in __bitmap_resize()
2581 bitmap->mddev->pers->quiesce(bitmap->mddev, 0); in __bitmap_resize()
2588 static int bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize, in bitmap_resize() argument
2591 struct bitmap *bitmap = mddev->bitmap; in bitmap_resize()
2600 location_show(struct mddev *mddev, char *page) in location_show() argument
2603 if (mddev->bitmap_info.file) in location_show()
2605 else if (mddev->bitmap_info.offset) in location_show()
2606 len = sprintf(page, "%+lld", (long long)mddev->bitmap_info.offset); in location_show()
2614 location_store(struct mddev *mddev, const char *buf, size_t len) in location_store() argument
2618 rv = mddev_suspend_and_lock(mddev); in location_store()
2622 if (mddev->pers) { in location_store()
2623 if (mddev->recovery || mddev->sync_thread) { in location_store()
2629 if (mddev->bitmap || mddev->bitmap_info.file || in location_store()
2630 mddev->bitmap_info.offset) { in location_store()
2637 bitmap_destroy(mddev); in location_store()
2638 mddev->bitmap_info.offset = 0; in location_store()
2639 if (mddev->bitmap_info.file) { in location_store()
2640 struct file *f = mddev->bitmap_info.file; in location_store()
2641 mddev->bitmap_info.file = NULL; in location_store()
2665 if (mddev->bitmap_info.external == 0 && in location_store()
2666 mddev->major_version == 0 && in location_store()
2667 offset != mddev->bitmap_info.default_offset) { in location_store()
2672 mddev->bitmap_info.offset = offset; in location_store()
2673 rv = bitmap_create(mddev, -1); in location_store()
2677 rv = bitmap_load(mddev); in location_store()
2679 mddev->bitmap_info.offset = 0; in location_store()
2680 bitmap_destroy(mddev); in location_store()
2685 if (!mddev->external) { in location_store()
2689 set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags); in location_store()
2690 md_wakeup_thread(mddev->thread); in location_store()
2694 mddev_unlock_and_resume(mddev); in location_store()
2708 space_show(struct mddev *mddev, char *page) in space_show() argument
2710 return sprintf(page, "%lu\n", mddev->bitmap_info.space); in space_show()
2714 space_store(struct mddev *mddev, const char *buf, size_t len) in space_store() argument
2727 bitmap = mddev->bitmap; in space_store()
2734 mddev->bitmap_info.space = sectors; in space_store()
2742 timeout_show(struct mddev *mddev, char *page) in timeout_show() argument
2745 unsigned long secs = mddev->bitmap_info.daemon_sleep / HZ; in timeout_show()
2746 unsigned long jifs = mddev->bitmap_info.daemon_sleep % HZ; in timeout_show()
2756 timeout_store(struct mddev *mddev, const char *buf, size_t len) in timeout_store() argument
2775 mddev->bitmap_info.daemon_sleep = timeout; in timeout_store()
2776 mddev_set_timeout(mddev, timeout, false); in timeout_store()
2777 md_wakeup_thread(mddev->thread); in timeout_store()
2786 backlog_show(struct mddev *mddev, char *page) in backlog_show() argument
2788 return sprintf(page, "%lu\n", mddev->bitmap_info.max_write_behind); in backlog_show()
2792 backlog_store(struct mddev *mddev, const char *buf, size_t len) in backlog_store() argument
2795 unsigned long old_mwb = mddev->bitmap_info.max_write_behind; in backlog_store()
2804 rv = mddev_suspend_and_lock(mddev); in backlog_store()
2812 rdev_for_each(rdev, mddev) { in backlog_store()
2820 mdname(mddev)); in backlog_store()
2821 mddev_unlock(mddev); in backlog_store()
2825 mddev->bitmap_info.max_write_behind = backlog; in backlog_store()
2826 if (!backlog && mddev->serial_info_pool) { in backlog_store()
2828 if (!mddev->serialize_policy) in backlog_store()
2829 mddev_destroy_serial_pool(mddev, NULL); in backlog_store()
2830 } else if (backlog && !mddev->serial_info_pool) { in backlog_store()
2832 rdev_for_each(rdev, mddev) in backlog_store()
2833 mddev_create_serial_pool(mddev, rdev); in backlog_store()
2836 bitmap_update_sb(mddev->bitmap); in backlog_store()
2838 mddev_unlock_and_resume(mddev); in backlog_store()
2846 chunksize_show(struct mddev *mddev, char *page) in chunksize_show() argument
2848 return sprintf(page, "%lu\n", mddev->bitmap_info.chunksize); in chunksize_show()
2852 chunksize_store(struct mddev *mddev, const char *buf, size_t len) in chunksize_store() argument
2857 if (mddev->bitmap) in chunksize_store()
2868 mddev->bitmap_info.chunksize = csize; in chunksize_store()
2875 static ssize_t metadata_show(struct mddev *mddev, char *page) in metadata_show() argument
2877 if (mddev_is_clustered(mddev)) in metadata_show()
2879 return sprintf(page, "%s\n", (mddev->bitmap_info.external in metadata_show()
2883 static ssize_t metadata_store(struct mddev *mddev, const char *buf, size_t len) in metadata_store() argument
2885 if (mddev->bitmap || in metadata_store()
2886 mddev->bitmap_info.file || in metadata_store()
2887 mddev->bitmap_info.offset) in metadata_store()
2890 mddev->bitmap_info.external = 1; in metadata_store()
2893 mddev->bitmap_info.external = 0; in metadata_store()
2902 static ssize_t can_clear_show(struct mddev *mddev, char *page) in can_clear_show() argument
2907 spin_lock(&mddev->lock); in can_clear_show()
2908 bitmap = mddev->bitmap; in can_clear_show()
2914 spin_unlock(&mddev->lock); in can_clear_show()
2918 static ssize_t can_clear_store(struct mddev *mddev, const char *buf, size_t len) in can_clear_store() argument
2920 struct bitmap *bitmap = mddev->bitmap; in can_clear_store()
2931 if (mddev->degraded) in can_clear_store()
2944 behind_writes_used_show(struct mddev *mddev, char *page) in behind_writes_used_show() argument
2949 spin_lock(&mddev->lock); in behind_writes_used_show()
2950 bitmap = mddev->bitmap; in behind_writes_used_show()
2955 spin_unlock(&mddev->lock); in behind_writes_used_show()
2961 behind_writes_used_reset(struct mddev *mddev, const char *buf, size_t len) in behind_writes_used_reset() argument
2963 struct bitmap *bitmap = mddev->bitmap; in behind_writes_used_reset()
3023 void mddev_set_bitmap_ops(struct mddev *mddev) in mddev_set_bitmap_ops() argument
3025 mddev->bitmap_ops = &bitmap_ops; in mddev_set_bitmap_ops()