diff options
| author | NeilBrown <neilb@suse.de> | 2012-03-19 12:46:40 +1100 | 
|---|---|---|
| committer | NeilBrown <neilb@suse.de> | 2012-03-19 12:46:40 +1100 | 
| commit | 57148964d946614ffc6621539096ded1e7d896ab (patch) | |
| tree | d4bdadf58d740fcdb3c65063a5706cc3902f2b9b | |
| parent | 4ba97dff719b4cbeb7a4f6beddd2feb7404102d8 (diff) | |
md/bitmap: move printing of bitmap status to bitmap.c
The part of /proc/mdstat which describes the bitmap should really
be generated by code in bitmap.c.  So move it there.
Signed-off-by: NeilBrown <neilb@suse.de>
| -rw-r--r-- | drivers/md/bitmap.c | 28 | ||||
| -rw-r--r-- | drivers/md/bitmap.h | 1 | ||||
| -rw-r--r-- | drivers/md/md.c | 23 | 
3 files changed, 30 insertions, 22 deletions
| diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 2c5dbc6248d3..04df18e8885f 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c @@ -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" @@ -1836,6 +1837,33 @@ out:  }  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)  { diff --git a/drivers/md/bitmap.h b/drivers/md/bitmap.h index 557e3e8ea73b..e196e6a560e8 100644 --- a/drivers/md/bitmap.h +++ b/drivers/md/bitmap.h @@ -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); diff --git a/drivers/md/md.c b/drivers/md/md.c index 4566b61373d5..26591cc8ee87 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -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; @@ -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");  	} | 
