On Tue, Dec 08 2015, Arkadiusz Miskiewicz wrote: > On Monday 07 of December 2015, Arkadiusz Miskiewicz wrote: > >> Anyway I would expect my problem to be related to badblock lists which >> numbers are close to dmesg error message: [ 848.988518] Buffer I/O error >> on dev md7, logical block 3907148544, async page read >> >> > >> http://sprunge.us/XSWI >> >> But how to repair these if write() also fails and >> http://www.spinics.net/lists/raid/msg49325.html suggests that write should >> "fix" these (by using replacement blocks I guess) ? > > Tried to get rid of badblock lists (well, corruption in that area is better > than no access at all): > > mdadm --assemble /dev/md7 --force --update=no-bbl > mdadm: Cannot remove active bbl from /dev/sdae1 > mdadm: Cannot remove active bbl from /dev/sdag1 > mdadm: Cannot remove active bbl from /dev/sdai1 > mdadm: Cannot remove active bbl from /dev/sdn1 > mdadm: Cannot remove active bbl from /dev/sdg > mdadm: Cannot remove active bbl from /dev/sdad1 > mdadm: /dev/md7 has been started with 10 drives. > > Is there a way to archieve that anyway? > You probably have bad blocks in multiple disks in the one stripe (look in /sys/block/md7/md/dev-*/badblocks or something like that to see). To get rid of these you would need to write to every block in the stripe. I guess I should try to find a way to make that easier. If you like you could hack mdadm to allow you to remove the bbl even though they aren't empty. In super1.c look for: } else if (strcmp(update, "no-bbl") == 0) { if (sb->feature_map & __cpu_to_le32(MD_FEATURE_BAD_BLOCKS)) pr_err("Cannot remove active bbl from %s\n",devname); else { sb->bblog_size = 0; sb->bblog_shift = 0; sb->bblog_offset = 0; } and change it to be unconditional and also to clear MD_FEATURE_BAD_BLOCKS. No warranty expressed or implied. NeilBrown
Attachment:
signature.asc
Description: PGP signature