Loading drivers/md/bitmap.c +28 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <linux/file.h> #include <linux/mount.h> #include <linux/buffer_head.h> #include <linux/seq_file.h> #include "md.h" #include "bitmap.h" Loading Loading @@ -1836,6 +1837,33 @@ int bitmap_load(struct mddev *mddev) } EXPORT_SYMBOL_GPL(bitmap_load); void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) { unsigned long chunk_kb; unsigned long flags; if (!bitmap) return; spin_lock_irqsave(&bitmap->lock, flags); chunk_kb = bitmap->mddev->bitmap_info.chunksize >> 10; seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " "%lu%s chunk", bitmap->pages - bitmap->missing_pages, bitmap->pages, (bitmap->pages - bitmap->missing_pages) << (PAGE_SHIFT - 10), chunk_kb ? chunk_kb : bitmap->mddev->bitmap_info.chunksize, chunk_kb ? "KB" : "B"); if (bitmap->file) { seq_printf(seq, ", file: "); seq_path(seq, &bitmap->file->f_path, " \t\n"); } seq_printf(seq, "\n"); spin_unlock_irqrestore(&bitmap->lock, flags); } static ssize_t location_show(struct mddev *mddev, char *page) { Loading drivers/md/bitmap.h +1 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ void bitmap_destroy(struct mddev *mddev); void bitmap_print_sb(struct bitmap *bitmap); void bitmap_update_sb(struct bitmap *bitmap); void bitmap_status(struct seq_file *seq, struct bitmap *bitmap); int bitmap_setallbits(struct bitmap *bitmap); void bitmap_write_all(struct bitmap *bitmap); Loading drivers/md/md.c +1 −22 Original line number Diff line number Diff line Loading @@ -6725,7 +6725,6 @@ static int md_seq_show(struct seq_file *seq, void *v) struct mddev *mddev = v; sector_t sectors; struct md_rdev *rdev; struct bitmap *bitmap; if (v == (void*)1) { struct md_personality *pers; Loading Loading @@ -6813,27 +6812,7 @@ static int md_seq_show(struct seq_file *seq, void *v) } else seq_printf(seq, "\n "); if ((bitmap = mddev->bitmap)) { unsigned long chunk_kb; unsigned long flags; spin_lock_irqsave(&bitmap->lock, flags); chunk_kb = mddev->bitmap_info.chunksize >> 10; seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " "%lu%s chunk", bitmap->pages - bitmap->missing_pages, bitmap->pages, (bitmap->pages - bitmap->missing_pages) << (PAGE_SHIFT - 10), chunk_kb ? chunk_kb : mddev->bitmap_info.chunksize, chunk_kb ? "KB" : "B"); if (bitmap->file) { seq_printf(seq, ", file: "); seq_path(seq, &bitmap->file->f_path, " \t\n"); } seq_printf(seq, "\n"); spin_unlock_irqrestore(&bitmap->lock, flags); } bitmap_status(seq, mddev->bitmap); seq_printf(seq, "\n"); } Loading Loading
drivers/md/bitmap.c +28 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <linux/file.h> #include <linux/mount.h> #include <linux/buffer_head.h> #include <linux/seq_file.h> #include "md.h" #include "bitmap.h" Loading Loading @@ -1836,6 +1837,33 @@ int bitmap_load(struct mddev *mddev) } EXPORT_SYMBOL_GPL(bitmap_load); void bitmap_status(struct seq_file *seq, struct bitmap *bitmap) { unsigned long chunk_kb; unsigned long flags; if (!bitmap) return; spin_lock_irqsave(&bitmap->lock, flags); chunk_kb = bitmap->mddev->bitmap_info.chunksize >> 10; seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " "%lu%s chunk", bitmap->pages - bitmap->missing_pages, bitmap->pages, (bitmap->pages - bitmap->missing_pages) << (PAGE_SHIFT - 10), chunk_kb ? chunk_kb : bitmap->mddev->bitmap_info.chunksize, chunk_kb ? "KB" : "B"); if (bitmap->file) { seq_printf(seq, ", file: "); seq_path(seq, &bitmap->file->f_path, " \t\n"); } seq_printf(seq, "\n"); spin_unlock_irqrestore(&bitmap->lock, flags); } static ssize_t location_show(struct mddev *mddev, char *page) { Loading
drivers/md/bitmap.h +1 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ void bitmap_destroy(struct mddev *mddev); void bitmap_print_sb(struct bitmap *bitmap); void bitmap_update_sb(struct bitmap *bitmap); void bitmap_status(struct seq_file *seq, struct bitmap *bitmap); int bitmap_setallbits(struct bitmap *bitmap); void bitmap_write_all(struct bitmap *bitmap); Loading
drivers/md/md.c +1 −22 Original line number Diff line number Diff line Loading @@ -6725,7 +6725,6 @@ static int md_seq_show(struct seq_file *seq, void *v) struct mddev *mddev = v; sector_t sectors; struct md_rdev *rdev; struct bitmap *bitmap; if (v == (void*)1) { struct md_personality *pers; Loading Loading @@ -6813,27 +6812,7 @@ static int md_seq_show(struct seq_file *seq, void *v) } else seq_printf(seq, "\n "); if ((bitmap = mddev->bitmap)) { unsigned long chunk_kb; unsigned long flags; spin_lock_irqsave(&bitmap->lock, flags); chunk_kb = mddev->bitmap_info.chunksize >> 10; seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " "%lu%s chunk", bitmap->pages - bitmap->missing_pages, bitmap->pages, (bitmap->pages - bitmap->missing_pages) << (PAGE_SHIFT - 10), chunk_kb ? chunk_kb : mddev->bitmap_info.chunksize, chunk_kb ? "KB" : "B"); if (bitmap->file) { seq_printf(seq, ", file: "); seq_path(seq, &bitmap->file->f_path, " \t\n"); } seq_printf(seq, "\n"); spin_unlock_irqrestore(&bitmap->lock, flags); } bitmap_status(seq, mddev->bitmap); seq_printf(seq, "\n"); } Loading