Weird RAID/SATA problem [ once was Re: 2.6.17-mm3 ]

From: Neil Brown
Date: Sat Jul 01 2006 - 06:52:48 EST


On Saturday July 1, reuben-lkml@xxxxxxxx wrote:
> >>
> >> md: super_written gets error=-5, uptodate=0
> >>
> >> messages on the console that didn't seem to want to stop...
> >
> > '5' == EIO
> >
> > We try to write the superblock and we get EIO - something wrong somewhere.
> >
> > What sort of device are we writing to here? What controller, what
> > driver (if you know), what drives?
>
> The two raid-1 disks are the Seagate ST380817AS SATA disks on the onboard
> controller. The motherboard is an Intel D945GNT motherboard. See dmesg..
>
> > Can you write to the device without using md?
>
> Yes.
>

So... When md writes a superblock to this device, it reliably (or
close to reliably) gets EIO. When mkfs writes, it works fine.

Only difference I can think of is still barriers... Does this patch
make any difference?

NeilBrown

(For readers on linux-kernel who are wondering where the history of
this thread is - you won't find it. We were having a discussion in
private and finally got embarrassed about keeping such gems to
ourselves so we decided to share)


Signed-off-by: Neil Brown <neilb@xxxxxxx>

### Diffstat output
./drivers/md/md.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff .prev/drivers/md/md.c ./drivers/md/md.c
--- .prev/drivers/md/md.c 2006-07-01 12:12:14.000000000 +1000
+++ ./drivers/md/md.c 2006-07-01 20:48:44.000000000 +1000
@@ -454,7 +454,7 @@ void md_super_write(mddev_t *mddev, mdk_
bio->bi_rw = rw;

atomic_inc(&mddev->pending_writes);
- if (!test_bit(BarriersNotsupp, &rdev->flags)) {
+ if (0 && !test_bit(BarriersNotsupp, &rdev->flags)) {
struct bio *rbio;
rw |= (1<<BIO_RW_BARRIER);
rbio = bio_clone(bio, GFP_NOIO);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/