2008-01-05 16:39:07

by Ondrej Zary

[permalink] [raw]
Subject: [PATCH] libata and starting/stopping ATAPI floppy devices

Hello,
I switched to libata drivers for my onboard PATA controller (PIIX4) recently.
Everything works fine except that kernel tries to start not only my hard
drive (sda) but also LS-120 floppy drive (sdb) which does not like it:

sd 0:0:0:0: [sda] Starting disk
ata1.00: configured for UDMA/33
sd 0:0:0:0: [sda] 58633344 512-byte hardware sectors (30020 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support
DPO or FUA
sd 1:0:1:0: [sdb] Starting disk
ata2.00: configured for UDMA/33
ata2.01: configured for PIO2
sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0


The question is: is it correct? Or a patch like this should be applied?

--- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09 22:31:38.000000000 +0200
+++ linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05 15:50:16.000000000 +0100
@@ -802,7 +802,8 @@

blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);

- sdev->manage_start_stop = 1;
+ if (dev->class == ATA_DEV_ATA)
+ sdev->manage_start_stop = 1;

if (dev)
ata_scsi_dev_config(sdev, dev);


--
Ondrej Zary


2008-01-09 02:41:32

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH] libata and starting/stopping ATAPI floppy devices

Ondrej Zary wrote:
> Hello,
> I switched to libata drivers for my onboard PATA controller (PIIX4) recently.
> Everything works fine except that kernel tries to start not only my hard
> drive (sda) but also LS-120 floppy drive (sdb) which does not like it:
>
> sd 0:0:0:0: [sda] Starting disk
> ata1.00: configured for UDMA/33
> sd 0:0:0:0: [sda] 58633344 512-byte hardware sectors (30020 MB)
> sd 0:0:0:0: [sda] Write Protect is off
> sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support
> DPO or FUA
> sd 1:0:1:0: [sdb] Starting disk
> ata2.00: configured for UDMA/33
> ata2.01: configured for PIO2
> sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
> sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
> sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0
>
>
> The question is: is it correct? Or a patch like this should be applied?

Yeah, looks good to me. Please reformat the message w/ S-O-B.

Acked-by: Tejun Heo <[email protected]>

--
tejun

2008-01-09 17:53:46

by Ondrej Zary

[permalink] [raw]
Subject: Re: [PATCH] libata and starting/stopping ATAPI floppy devices

On Wednesday 09 January 2008 03:41:16 Tejun Heo wrote:
> Ondrej Zary wrote:
> > Hello,
> > I switched to libata drivers for my onboard PATA controller (PIIX4)
> > recently. Everything works fine except that kernel tries to start not
> > only my hard drive (sda) but also LS-120 floppy drive (sdb) which does
> > not like it:
> >
> > sd 0:0:0:0: [sda] Starting disk
> > ata1.00: configured for UDMA/33
> > sd 0:0:0:0: [sda] 58633344 512-byte hardware sectors (30020 MB)
> > sd 0:0:0:0: [sda] Write Protect is off
> > sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't
> > support DPO or FUA
> > sd 1:0:1:0: [sdb] Starting disk
> > ata2.00: configured for UDMA/33
> > ata2.01: configured for PIO2
> > sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
> > sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
> > sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0
> >
> >
> > The question is: is it correct? Or a patch like this should be applied?
>
> Yeah, looks good to me. Please reformat the message w/ S-O-B.
>
> Acked-by: Tejun Heo <[email protected]>

Prevent libata from starting/stopping non-ATA devices (like ATAPI floppy
drives) as they don't seem to like it:

sd 1:0:1:0: [sdb] Starting disk
ata2.01: configured for PIO2
sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0

Signed-off-by: Ondrej Zary <[email protected]>

--- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09 22:31:38.000000000 +0200
+++ linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05 15:50:16.000000000 +0100
@@ -802,7 +802,8 @@

blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);

- sdev->manage_start_stop = 1;
+ if (dev->class == ATA_DEV_ATA)
+ sdev->manage_start_stop = 1;

if (dev)
ata_scsi_dev_config(sdev, dev);


--
Ondrej Zary

2008-01-09 23:41:31

by Tejun Heo

[permalink] [raw]
Subject: [PATCH] libata and starting/stopping ATAPI floppy devices

From: Ondrej Zary <[email protected]>

Prevent libata from starting/stopping non-ATA devices (like ATAPI floppy
drives) as they don't seem to like it:

sd 1:0:1:0: [sdb] Starting disk
ata2.01: configured for PIO2
sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0

Signed-off-by: Ondrej Zary <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>
---
Trimmed message body and reformatted such that it's script friendly.

drivers/ata/libata-scsi.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09 22:31:38.000000000 +0200
+++ linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05 15:50:16.000000000 +0100
@@ -802,7 +802,8 @@

blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);

- sdev->manage_start_stop = 1;
+ if (dev->class == ATA_DEV_ATA)
+ sdev->manage_start_stop = 1;

if (dev)
ata_scsi_dev_config(sdev, dev);

2008-01-10 01:06:35

by Robert Hancock

[permalink] [raw]
Subject: Re: [PATCH] libata and starting/stopping ATAPI floppy devices

Tejun Heo wrote:
> From: Ondrej Zary <[email protected]>
>
> Prevent libata from starting/stopping non-ATA devices (like ATAPI floppy
> drives) as they don't seem to like it:
>
> sd 1:0:1:0: [sdb] Starting disk
> ata2.01: configured for PIO2
> sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
> sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
> sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0

Well, all that error is saying is "No medium present". We could just
make sd suppress that error on disk starting/stopping..

>
> Signed-off-by: Ondrej Zary <[email protected]>
> Signed-off-by: Tejun Heo <[email protected]>
> ---
> Trimmed message body and reformatted such that it's script friendly.
>
> drivers/ata/libata-scsi.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> --- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09 22:31:38.000000000 +0200
> +++ linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05 15:50:16.000000000 +0100
> @@ -802,7 +802,8 @@
>
> blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);
>
> - sdev->manage_start_stop = 1;
> + if (dev->class == ATA_DEV_ATA)
> + sdev->manage_start_stop = 1;
>
> if (dev)
> ata_scsi_dev_config(sdev, dev);


--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from [email protected]
Home Page: http://www.roberthancock.com/

2008-01-10 17:43:10

by Ondrej Zary

[permalink] [raw]
Subject: Re: [PATCH] libata and starting/stopping ATAPI floppy devices

On Thursday 10 January 2008 02:05:23 Robert Hancock wrote:
> Tejun Heo wrote:
> > From: Ondrej Zary <[email protected]>
> >
> > Prevent libata from starting/stopping non-ATA devices (like ATAPI floppy
> > drives) as they don't seem to like it:
> >
> > sd 1:0:1:0: [sdb] Starting disk
> > ata2.01: configured for PIO2
> > sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
> > sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
> > sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0
>
> Well, all that error is saying is "No medium present". We could just
> make sd suppress that error on disk starting/stopping..

Yes, provided that the start/stop command is valid for ATAPI drives and is the
correct thing to do. I don't know.

>
> > Signed-off-by: Ondrej Zary <[email protected]>
> > Signed-off-by: Tejun Heo <[email protected]>
> > ---
> > Trimmed message body and reformatted such that it's script friendly.
> >
> > drivers/ata/libata-scsi.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > --- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09
> > 22:31:38.000000000 +0200 +++
> > linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05
> > 15:50:16.000000000 +0100 @@ -802,7 +802,8 @@
> >
> > blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);
> >
> > - sdev->manage_start_stop = 1;
> > + if (dev->class == ATA_DEV_ATA)
> > + sdev->manage_start_stop = 1;
> >
> > if (dev)
> > ata_scsi_dev_config(sdev, dev);



--
Ondrej Zary

2008-01-10 22:22:10

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH] libata and starting/stopping ATAPI floppy devices

Tejun Heo wrote:
> From: Ondrej Zary <[email protected]>
>
> Prevent libata from starting/stopping non-ATA devices (like ATAPI floppy
> drives) as they don't seem to like it:
>
> sd 1:0:1:0: [sdb] Starting disk
> ata2.01: configured for PIO2
> sd 1:0:1:0: [sdb] Result: hostbyte=0x00 driverbyte=0x08
> sd 1:0:1:0: [sdb] Sense Key : 0x2 [current]
> sd 1:0:1:0: [sdb] ASC=0x3a ASCQ=0x0
>
> Signed-off-by: Ondrej Zary <[email protected]>
> Signed-off-by: Tejun Heo <[email protected]>
> ---
> Trimmed message body and reformatted such that it's script friendly.
>
> drivers/ata/libata-scsi.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> --- linux-2.6.23-orig/drivers/ata/libata-scsi.c 2007-10-09 22:31:38.000000000 +0200
> +++ linux-2.6.23-pentium/drivers/ata/libata-scsi.c 2008-01-05 15:50:16.000000000 +0100
> @@ -802,7 +802,8 @@
>
> blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);
>
> - sdev->manage_start_stop = 1;
> + if (dev->class == ATA_DEV_ATA)
> + sdev->manage_start_stop = 1;
>
> if (dev)

applied #upstream-fixes manually. not sure why git-am didn't like it,
but patch(1) did.