From: NeilBrown 1/ When init from disk, it is a BUG if there is nowhere to init from, 2/ use seq_path to print path in /proc/mdstat Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- drivers/md/bitmap.c | 8 +------- drivers/md/md.c | 11 +++++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff -puN drivers/md/bitmap.c~md-a-couple-of-tidyups-relating-to-the-bitmap-file drivers/md/bitmap.c --- 25/drivers/md/bitmap.c~md-a-couple-of-tidyups-relating-to-the-bitmap-file 2005-04-26 01:25:01.267874136 -0700 +++ 25-akpm/drivers/md/bitmap.c 2005-04-26 01:25:01.273873224 -0700 @@ -769,13 +769,7 @@ static int bitmap_init_from_disk(struct chunks = bitmap->chunks; file = bitmap->file; - if (!file) { /* no file, dirty all the in-memory bits */ - printk(KERN_INFO "%s: no bitmap file, doing full recovery\n", - bmname(bitmap)); - bitmap_set_memory_bits(bitmap, 0, - chunks << CHUNK_BLOCK_SHIFT(bitmap), 1); - return 0; - } + BUG_ON(!file); #if INJECT_FAULTS_3 outofdate = 1; diff -puN drivers/md/md.c~md-a-couple-of-tidyups-relating-to-the-bitmap-file drivers/md/md.c --- 25/drivers/md/md.c~md-a-couple-of-tidyups-relating-to-the-bitmap-file 2005-04-26 01:25:01.269873832 -0700 +++ 25-akpm/drivers/md/md.c 2005-04-26 01:25:01.276872768 -0700 @@ -3211,10 +3211,8 @@ static int md_seq_show(struct seq_file * seq_printf(seq, "\n "); if ((bitmap = mddev->bitmap)) { - char *buf, *path; unsigned long chunk_kb; unsigned long flags; - buf = kmalloc(PAGE_SIZE, GFP_KERNEL); spin_lock_irqsave(&bitmap->lock, flags); chunk_kb = bitmap->chunksize >> 10; seq_printf(seq, "bitmap: %lu/%lu pages [%luKB], " @@ -3225,13 +3223,14 @@ static int md_seq_show(struct seq_file * << (PAGE_SHIFT - 10), chunk_kb ? chunk_kb : bitmap->chunksize, chunk_kb ? "KB" : "B"); - if (bitmap->file && buf) { - path = file_path(bitmap->file, buf, PAGE_SIZE); - seq_printf(seq, ", file: %s", path ? path : ""); + if (bitmap->file) { + seq_printf(seq, ", file: "); + seq_path(seq, bitmap->file->f_vfsmnt, + bitmap->file->f_dentry," \t\n"); } + seq_printf(seq, "\n"); spin_unlock_irqrestore(&bitmap->lock, flags); - kfree(buf); } seq_printf(seq, "\n"); _