Re: FYI: BUG in SATA Promise 300 TX4 (2.6.24 - 2.6.27-3) w/Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Peter Favrholdt wrote:
> Hi Tejun & list
> 
> Tejun Heo wrote:
>> Peter Favrholdt wrote:
>>> I tried removing sata_promise the nice way using modprobe:
>>>
>>> # modprobe -r -f sata_promise
>>> FATAL: Module sata_promise is in use.
>>>
>>> then the not-so-nice way using rmmod -f and inserting it again. It
>>> doesn't work. Here are the relevant parts from dmesg (removing and
>>> inserting):
>>
>> Oh... you first need to wait for the kernel to be done with the devices.
>>  ie. unmount all filesystems living on those && wait till EH finishes.
> 
> I didn't have any filesystems mounted but learned that the 4 disks
> participate in a md raid5 set. To be sure I tried everything again from
> the beginning (reboot) without enabling md on the four drives. Here are
> the results:
> 
> 1. started the four dd processes which ran to completion without any
> errors. Started them again and this time sda failed as usual.
> 
> 2. modprobe -r sata_promise - no warnings/errors: removed successfully
> 
> 3. modprobe sata_promise - only three drives show up
> 
> 4. modprobe -r sata_promise - no warnings/errors: removed successfully
> 
> 5. modprobe sata_promise - more channels complain - no drives are found
> 
> dmesg:
> 
> [21626.490086] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x1380000
> action 0x6 frozen
> [21626.490096] ata1: SError: { 10B8B Dispar BadCRC TrStaTrns }
> [21626.490105] ata1.00: cmd 25/00:00:00:1f:e6/00:02:01:00:00/e0 tag 0
> dma 262144 in
> [21626.490107]          res 40/00:28:00:00:00/00:00:00:00:00/40 Emask
> 0x4 (timeout)
> [21626.490110] ata1.00: status: { DRDY }
> [21626.490162] ata1: hard resetting link
> [21631.881055] ata1: link is slow to respond, please be patient (ready=-19)
> [21636.500030] ata1: COMRESET failed (errno=-16)
> [21636.500068] ata1: hard resetting link

COMRESETs are failing with EBUSY while ata_sff_check_ready() is
returning ENODEV.  Hmmm... Does the attached patch change anything?

-- 
tejun
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index ba9a257..a06af2c 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -709,8 +709,13 @@ static int pdc_pata_softreset(struct ata_link *link, unsigned int *class,
 static int pdc_sata_hardreset(struct ata_link *link, unsigned int *class,
 			      unsigned long deadline)
 {
+	const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context);
+	bool online;
+	int rc;
+
 	pdc_reset_port(link->ap);
-	return sata_sff_hardreset(link, class, deadline);
+	rc = sata_link_hardreset(link, timing, deadline, &online, NULL);
+	return online ? -EAGAIN : rc;
 }
 
 static void pdc_error_handler(struct ata_port *ap)

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux