linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] libata: add ioctls to support SMART
@ 2004-08-30 15:31 John W. Linville
  2004-08-30 17:19 ` Jeff Garzik
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: John W. Linville @ 2004-08-30 15:31 UTC (permalink / raw)
  To: linux-kernel, linux-ide; +Cc: jgarzik

Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
supporting SMART w/ unmodified smartctl and smartd userland binaries.

Not happy w/ loop after failed ata_qc_new_init(), but needed because smartctl
and smartd did not retry after failure.  Likely need an option to wait for
available qc?  Also not sure all the error return codes are correct...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

 drivers/scsi/libata-core.c |  179 +++++++++++++++++++++++++++++++++++++++++++++
 drivers/scsi/libata-scsi.c |   11 ++
 drivers/scsi/libata.h      |    4 +
 3 files changed, 194 insertions(+)

diff -urNp linux-2.6.orig/drivers/scsi/libata-core.c linux-2.6/drivers/scsi/libata-core.c
--- linux-2.6.orig/drivers/scsi/libata-core.c	2004-08-30 09:48:23.000000000 -0400
+++ linux-2.6/drivers/scsi/libata-core.c	2004-08-30 12:10:38.000000000 -0400
@@ -41,12 +41,15 @@
 #include "scsi.h"
 #include <scsi/scsi_host.h>
 #include <linux/libata.h>
+#include <linux/hdreg.h>
 #include <asm/io.h>
 #include <asm/semaphore.h>
 #include <asm/byteorder.h>
 
 #include "libata.h"
 
+#define SECTOR_SIZE	512
+
 static unsigned int ata_busy_sleep (struct ata_port *ap,
 				    unsigned long tmout_pat,
 			    	    unsigned long tmout);
@@ -2897,6 +2900,182 @@ err_out:
 	ata_qc_complete(qc, ATA_ERR);
 }
 
+/**
+ *	ata_task_ioctl - Handler for HDIO_DRIVE_TASK ioctl
+ *	@ap: Port associated with device @dev
+ *	@dev: Device to whom we are issuing command
+ *	@arg: User provided data for issuing command
+ *
+ *	LOCKING:
+ */
+
+int ata_task_ioctl(struct ata_port *ap, struct ata_device *dev,
+		   void __user *arg)
+{
+	unsigned long flags;
+	int rc;
+	int err = 0;
+	u8 status;
+	u8 args[7], *argbuf = args;
+	int argsize = sizeof(args);
+	DECLARE_COMPLETION(wait);
+	struct ata_queued_cmd *qc;
+
+	if (NULL == (void *)arg)
+		return -EINVAL;
+
+	if (!ata_dev_present(dev))
+		return -ENODEV;
+
+	if (copy_from_user(argbuf, arg, argsize))
+		return -EFAULT;
+
+	/* Execute command... */
+	qc = ata_qc_new_init(ap, dev);
+#if 0
+	BUG_ON(qc == NULL);
+#else /* I know this is wrong, still thinking on what else to do... */
+	while (qc == NULL) {
+		msleep(150);
+		qc = ata_qc_new_init(ap, dev);
+	}
+#endif
+
+	qc->tf.protocol = ATA_PROT_NODATA;
+	qc->tf.feature = args[1];
+	qc->tf.nsect = args[2];
+	qc->tf.lbal = args[3];
+	qc->tf.lbam = args[4];
+	qc->tf.lbah = args[5];
+	qc->tf.command = args[0];
+	qc->tf.flags |= ATA_TFLAG_ISADDR;
+
+	qc->waiting = &wait;
+	qc->complete_fn = ata_qc_complete_noop;
+
+	spin_lock_irqsave(&ap->host_set->lock, flags);
+	rc = ata_qc_issue(qc);
+	spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
+	if (rc) {
+		err = -EIO; /* right rc? */
+		goto error;
+	}
+	else
+		wait_for_completion(&wait);
+
+	status = ata_chk_status(ap);
+	if (!ata_ok(status)) {
+		err = -EIO;
+		goto error;
+	}
+
+	if (copy_to_user(arg, argbuf, argsize))
+		err = -EFAULT;
+
+error:
+	return err;
+}
+
+/**
+ *	ata_task_ioctl - Handler for HDIO_DRIVE_CMD ioctl
+ *	@ap: Port associated with device @dev
+ *	@dev: Device to whom we are issuing command
+ *	@arg: User provided data for issuing command
+ *
+ *	LOCKING:
+ */
+
+int ata_cmd_ioctl(struct ata_port *ap, struct ata_device *dev,
+		  void __user *arg)
+{
+	unsigned long flags;
+	int rc;
+	int err = 0;
+	u8 status;
+	u8 args[4], *argbuf = args;
+	int argsize = sizeof(args);
+	DECLARE_COMPLETION(wait);
+	struct ata_queued_cmd *qc;
+
+	if (NULL == (void *)arg)
+		return -EINVAL;
+
+	if (!ata_dev_present(dev))
+		return -ENODEV;
+
+	if (copy_from_user(args, arg, argsize))
+		return -EFAULT;
+
+	/* Execute command... */
+	qc = ata_qc_new_init(ap, dev);
+#if 0
+	BUG_ON(qc == NULL);
+#else /* I know this is wrong, still thinking on what else to do... */
+	while (qc == NULL) {
+		msleep(150);
+		qc = ata_qc_new_init(ap, dev);
+	}
+#endif
+
+	if (args[3]) {
+		argsize = sizeof(args) + (SECTOR_SIZE * args[3]);
+		argbuf = kmalloc(argsize, GFP_KERNEL);
+		if (argbuf == NULL)
+			return -ENOMEM;
+		memcpy(argbuf, args, sizeof(args)); /* is this necessary? */
+
+		ata_sg_init_one(qc, (argbuf + sizeof(args)),
+				(argsize - sizeof(args)));
+
+		qc->pci_dma_dir = PCI_DMA_FROMDEVICE;
+		qc->tf.protocol = ATA_PROT_PIO;
+	} else {
+		qc->tf.protocol = ATA_PROT_NODATA;
+	}
+
+	qc->nsect = args[3];
+	qc->tf.feature = args[2];
+	if (args[0] == WIN_SMART) { /* hack -- ide driver does this too... */
+		qc->tf.nsect = args[3];
+		qc->tf.lbal = args[1];
+		qc->tf.lbam = 0x4f;
+		qc->tf.lbah = 0xc2;
+	} else {
+		qc->tf.nsect = args[1];
+	}
+	qc->tf.command = args[0];
+	qc->tf.flags |= ATA_TFLAG_ISADDR;
+
+	qc->waiting = &wait;
+	qc->complete_fn = ata_qc_complete_noop;
+
+	spin_lock_irqsave(&ap->host_set->lock, flags);
+	rc = ata_qc_issue(qc);
+	spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
+	if (rc) {
+		err = -EIO; /* right rc? */
+		goto error;
+	}
+	else
+		wait_for_completion(&wait);
+
+	status = ata_chk_status(ap);
+	if (!ata_ok(status)) {
+		err = -EIO;
+		goto error;
+	}
+
+	if (copy_to_user((void *)arg, argbuf, argsize))
+		err = -EFAULT;
+error:
+	if (argsize > sizeof(args))
+		kfree(argbuf);
+
+	return err;
+}
+
 int ata_port_start (struct ata_port *ap)
 {
 	struct pci_dev *pdev = ap->host_set->pdev;
diff -urNp linux-2.6.orig/drivers/scsi/libata.h linux-2.6/drivers/scsi/libata.h
--- linux-2.6.orig/drivers/scsi/libata.h	2004-08-30 09:49:09.000000000 -0400
+++ linux-2.6/drivers/scsi/libata.h	2004-08-30 09:59:12.000000000 -0400
@@ -43,6 +43,10 @@ extern void ata_dev_select(struct ata_po
                            unsigned int wait, unsigned int can_sleep);
 extern void ata_tf_to_host_nolock(struct ata_port *ap, struct ata_taskfile *tf);
 extern void swap_buf_le16(u16 *buf, unsigned int buf_words);
+extern int ata_task_ioctl(struct ata_port *ap, struct ata_device *dev,
+			  void __user *arg);
+extern int ata_cmd_ioctl(struct ata_port *ap, struct ata_device *dev,
+			 void __user *arg);
 
 
 /* libata-scsi.c */
diff -urNp linux-2.6.orig/drivers/scsi/libata-scsi.c linux-2.6/drivers/scsi/libata-scsi.c
--- linux-2.6.orig/drivers/scsi/libata-scsi.c	2004-08-30 09:49:50.000000000 -0400
+++ linux-2.6/drivers/scsi/libata-scsi.c	2004-08-30 09:59:12.000000000 -0400
@@ -29,6 +29,7 @@
 #include "scsi.h"
 #include <scsi/scsi_host.h>
 #include <linux/libata.h>
+#include <linux/hdreg.h>
 #include <asm/uaccess.h>
 
 #include "libata.h"
@@ -99,6 +100,16 @@ int ata_scsi_ioctl(struct scsi_device *s
 			return -EINVAL;
 		return 0;
 
+	case HDIO_DRIVE_CMD:
+		if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
+			return -EACCES;
+		return ata_cmd_ioctl(ap, dev, arg);
+
+	case HDIO_DRIVE_TASK:
+		if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
+			return -EACCES;
+		return ata_task_ioctl(ap, dev, arg);
+
 	default:
 		rc = -EOPNOTSUPP;
 		break;

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 15:31 [patch] libata: add ioctls to support SMART John W. Linville
@ 2004-08-30 17:19 ` Jeff Garzik
  2004-08-30 17:42   ` Andy Warner
  2004-08-30 17:35 ` Brad Campbell
  2004-08-30 17:47 ` Prakash K. Cheemplavam
  2 siblings, 1 reply; 11+ messages in thread
From: Jeff Garzik @ 2004-08-30 17:19 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-kernel, linux-ide

John W. Linville wrote:
> Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
> supporting SMART w/ unmodified smartctl and smartd userland binaries.

First let me say that it's a damn fine first attempt, and people should 
be able to use this for SMART until support is merged officially.


> Not happy w/ loop after failed ata_qc_new_init(), but needed because smartctl
> and smartd did not retry after failure.  Likely need an option to wait for
> available qc?  Also not sure all the error return codes are correct...

I'd like to implement it a bit differently, and I think this different 
method will solve some of the open questions you have.

Take a look at http://www.t10.org/ftp/t10/document.04/04-260r2.pdf

I would like to implement HDIO_DRIVE_CMD and HDIO_DRIVE_TASK completely 
inside libata-scsi.c.  These ioctls should translate the ioctl arguments 
into an ATA-passthru SCSI command, and use the standard "issue a scsi 
command" kernel API to submit the command and wait for a result.

That implies, then, that you would add code to libata-scsi.c that 
translates the ATA-passthru SCSI command into an ATA command using the 
ata_scsi_translate() infrastructure.

Note that you'll need to make up a SCSI opcode, inside the SCSI 
vendor-specific opcode space, since the ATA-passthru hasn't yet been 
assigned an official SCSI opcode.  SPC-3 
(http://www.t10.org/ftp/t10/drafts/spc3/spc3r20a.pdf) lists the 
available opcodes in section C.3, denoted with a 'V' across all columns.

Once libata-scsi.c can handle the ATA-passthru SCSI command, 
implementing HDIO_DRIVE_{TASK,CMD} should be quite trivial.

And SMART support will be complete :)

	Jeff



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 15:31 [patch] libata: add ioctls to support SMART John W. Linville
  2004-08-30 17:19 ` Jeff Garzik
@ 2004-08-30 17:35 ` Brad Campbell
  2004-08-30 17:44   ` Jeff Garzik
  2004-08-30 17:47 ` Prakash K. Cheemplavam
  2 siblings, 1 reply; 11+ messages in thread
From: Brad Campbell @ 2004-08-30 17:35 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-ide

John W. Linville wrote:
> Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
> supporting SMART w/ unmodified smartctl and smartd userland binaries.
> 
> Not happy w/ loop after failed ata_qc_new_init(), but needed because smartctl
> and smartd did not retry after failure.  Likely need an option to wait for
> available qc?  Also not sure all the error return codes are correct...
> 

YYYYYYYYYYEeeeeeeeeeeeeeeeeeeeeeeeeeehhhhhhhhhhaaaaaaaaaaaaaaaaaaa!!!!!!!!

I know it's a bit kludgy and does not really fit the philosophy of libata but it works and it lets 
me keep an eye on my drives *now*.

Although just for good measure I'll probably unmount and stop my raid arrays before I use it on the 
disks. Whats it like for locking on a busy system?

Regards,
Brad


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 17:19 ` Jeff Garzik
@ 2004-08-30 17:42   ` Andy Warner
  2004-08-30 17:58     ` Jeff Garzik
  0 siblings, 1 reply; 11+ messages in thread
From: Andy Warner @ 2004-08-30 17:42 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: John W. Linville, linux-kernel, linux-ide

Jeff Garzik wrote:
> [...]
> That implies, then, that you would add code to libata-scsi.c that 
> translates the ATA-passthru SCSI command into an ATA command using the 
> ata_scsi_translate() infrastructure.

Speaking of which - I'm working on this and want to find like
minded people playing in the libata-scsi.c/04-262r<n>.pdf
sandbox, and collaborate with them.

If you're one of these people, ping me off list and we
can pool our efforts.
-- 
andyw@pobox.com

Andy Warner		Voice: (612) 801-8549	Fax: (208) 575-5634

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 17:35 ` Brad Campbell
@ 2004-08-30 17:44   ` Jeff Garzik
  0 siblings, 0 replies; 11+ messages in thread
From: Jeff Garzik @ 2004-08-30 17:44 UTC (permalink / raw)
  To: Brad Campbell; +Cc: John W. Linville, linux-ide, Linux Kernel

Brad Campbell wrote:
> John W. Linville wrote:
> 
>> Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
>> supporting SMART w/ unmodified smartctl and smartd userland binaries.
>>
>> Not happy w/ loop after failed ata_qc_new_init(), but needed because 
>> smartctl
>> and smartd did not retry after failure.  Likely need an option to wait 
>> for
>> available qc?  Also not sure all the error return codes are correct...
>>
> 
> YYYYYYYYYYEeeeeeeeeeeeeeeeeeeeeeeeeeehhhhhhhhhhaaaaaaaaaaaaaaaaaaa!!!!!!!!
> 
> I know it's a bit kludgy and does not really fit the philosophy of 
> libata but it works and it lets me keep an eye on my drives *now*.
> 
> Although just for good measure I'll probably unmount and stop my raid 
> arrays before I use it on the disks. Whats it like for locking on a busy 
> system?

I wouldn't trust it on a busy system yet -- it submits the command to 
the device without checking if there is a command already outstanding.

The patch could _definitely_ corrupt data or lock your hardware, since 
it bypasses the SCSI mechanism that ensures that only one command is 
executing at a time.

	Jeff




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 15:31 [patch] libata: add ioctls to support SMART John W. Linville
  2004-08-30 17:19 ` Jeff Garzik
  2004-08-30 17:35 ` Brad Campbell
@ 2004-08-30 17:47 ` Prakash K. Cheemplavam
  2004-08-30 17:51   ` John W. Linville
  2004-08-31  8:47   ` Prakash K. Cheemplavam
  2 siblings, 2 replies; 11+ messages in thread
From: Prakash K. Cheemplavam @ 2004-08-30 17:47 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-kernel, linux-ide, jgarzik

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

John W. Linville wrote:
| Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
| supporting SMART w/ unmodified smartctl and smartd userland binaries.
|
| Not happy w/ loop after failed ata_qc_new_init(), but needed because
smartctl
| and smartd did not retry after failure.  Likely need an option to wait for
| available qc?  Also not sure all the error return codes are correct...

Hi,

I just tried to give it a go with libata from 2.6.9-rc1. I had to fix
one rejects but the patching seemed to go fine beside that. Nevertheless
after a boot with patched libata I get:

smartctl -a /dev/sda
smartctl version 5.30 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: ATA      SAMSUNG SP1614N  Version: TM10
Serial number: 0735J1FW702444
Device type: disk
Local Time is: Mon Aug 30 19:44:23 2004 CEST
Device does not support SMART

Device does not support Error Counter logging

[GLTSD (Global Logging Target Save Disable) set. Enable Save with '-S on']
Device does not support Self Test logging


I am pretty sure my drive supports SMART. I hope that I understood your
post correctly that with this patch it should work.

Cheers,

Prakash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBM2gkxU2n/+9+t5gRAh1ZAJ0T1/zurwQZg7ddQx4X2aS5x8UMIgCg0hra
3D+Bhyp5MKpLVGdh7WIdPYA=
=Axdm
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 17:47 ` Prakash K. Cheemplavam
@ 2004-08-30 17:51   ` John W. Linville
  2004-08-31  8:47   ` Prakash K. Cheemplavam
  1 sibling, 0 replies; 11+ messages in thread
From: John W. Linville @ 2004-08-30 17:51 UTC (permalink / raw)
  To: linux-ide

Prakash K. Cheemplavam wrote:
> 
> I am pretty sure my drive supports SMART. I hope that I understood your
> post correctly that with this patch it should work.

Prakash,

You need "-d ata" on the smartctl command line (and in smartd.conf, if
using smartd) in order for this to work:

	smartctl -d ata -a /dev/sda

John


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 17:42   ` Andy Warner
@ 2004-08-30 17:58     ` Jeff Garzik
  0 siblings, 0 replies; 11+ messages in thread
From: Jeff Garzik @ 2004-08-30 17:58 UTC (permalink / raw)
  To: Andy Warner; +Cc: John W. Linville, linux-kernel, linux-ide

Andy Warner wrote:
> Jeff Garzik wrote:
> 
>>[...]
>>That implies, then, that you would add code to libata-scsi.c that 
>>translates the ATA-passthru SCSI command into an ATA command using the 
>>ata_scsi_translate() infrastructure.
> 
> 
> Speaking of which - I'm working on this and want to find like
> minded people playing in the libata-scsi.c/04-262r<n>.pdf
> sandbox, and collaborate with them.
> 
> If you're one of these people, ping me off list and we
> can pool our efforts.

I am trying convince someone to do it for me, since I'm working on new 
controller support ATM ;-)

It shouldn't be hard -- just a new function "ata_scsi_passthru_xlat" 
that translates the 04-262r<n>.pdf opcode into struct ata_taskfile. 
That's all that's needed for Step One.

John mentioned he might look at it...  but why don't you guys (and 
everyone else interested) just work publicly on linux-ide?  Share the 
knowledge and patches :)

	Jeff

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-30 17:47 ` Prakash K. Cheemplavam
  2004-08-30 17:51   ` John W. Linville
@ 2004-08-31  8:47   ` Prakash K. Cheemplavam
  2004-08-31  8:52     ` Jeff Garzik
  1 sibling, 1 reply; 11+ messages in thread
From: Prakash K. Cheemplavam @ 2004-08-31  8:47 UTC (permalink / raw)
  Cc: John W. Linville, linux-kernel, linux-ide, jgarzik

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Prakash K. Cheemplavam wrote:
| John W. Linville wrote:
| | Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
| | supporting SMART w/ unmodified smartctl and smartd userland binaries.
~ > I just tried to give it a go with libata from 2.6.9-rc1. I had to fix
| one rejects but the patching seemed to go fine beside that. Nevertheless
| after a boot with patched libata I get:
|
| smartctl -a /dev/sda
[snip]

| Device does not support SMART

Just wanted

Just wanted to say that smartctl -a -d ata /dev/sda works, as John
Linville and now Bruce aLlen suggested to try.

Cheers,

Prakash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBNDsqxU2n/+9+t5gRAinMAJ0W6sfKD4LV7uv6X9XUxWeng2dWjQCfVolo
CXg7ylDp8eb6SI+C4GZz/Bk=
=N/WZ
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-31  8:47   ` Prakash K. Cheemplavam
@ 2004-08-31  8:52     ` Jeff Garzik
  2004-08-31  8:59       ` Prakash K. Cheemplavam
  0 siblings, 1 reply; 11+ messages in thread
From: Jeff Garzik @ 2004-08-31  8:52 UTC (permalink / raw)
  To: Prakash K. Cheemplavam; +Cc: John W. Linville, linux-kernel, linux-ide

Prakash K. Cheemplavam wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Prakash K. Cheemplavam wrote:
> | John W. Linville wrote:
> | | Support for HDIO_DRIVE_CMD and HDIO_DRIVE_TASK in libata.  Useful for
> | | supporting SMART w/ unmodified smartctl and smartd userland binaries.
> ~ > I just tried to give it a go with libata from 2.6.9-rc1. I had to fix
> | one rejects but the patching seemed to go fine beside that. Nevertheless
> | after a boot with patched libata I get:
> |
> | smartctl -a /dev/sda
> [snip]
> 
> | Device does not support SMART
> 
> Just wanted
> 
> Just wanted to say that smartctl -a -d ata /dev/sda works, as John
> Linville and now Bruce aLlen suggested to try.


As I noted in another email, be careful...  that patch bypasses the SCSI 
command synchronization, so you could potentially send a SMART command 
to the hardware while another command is still in progress.

	Jeff



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [patch] libata: add ioctls to support SMART
  2004-08-31  8:52     ` Jeff Garzik
@ 2004-08-31  8:59       ` Prakash K. Cheemplavam
  0 siblings, 0 replies; 11+ messages in thread
From: Prakash K. Cheemplavam @ 2004-08-31  8:59 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: John W. Linville, linux-kernel, linux-ide

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jeff Garzik wrote:
| Prakash K. Cheemplavam wrote:
|> Just wanted to say that smartctl -a -d ata /dev/sda works, as John
|> Linville and now Bruce aLlen suggested to try.
|
| As I noted in another email, be careful...  that patch bypasses the SCSI
| command synchronization, so you could potentially send a SMART command
| to the hardware while another command is still in progress.

Yup, I read your warning, so I won't run a background monitor. In fact
jusr gave it a quick try and saw all is fine and then I am not going to
touch it for now. ;-)

Prakash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBND3UxU2n/+9+t5gRAl9qAKDzA+TNzFDAwpV+JSSHbrLf8EVZFQCg85Ad
b8mJa7ZBgt13V/sT2MRVeiI=
=haAQ
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2004-08-31  8:59 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-30 15:31 [patch] libata: add ioctls to support SMART John W. Linville
2004-08-30 17:19 ` Jeff Garzik
2004-08-30 17:42   ` Andy Warner
2004-08-30 17:58     ` Jeff Garzik
2004-08-30 17:35 ` Brad Campbell
2004-08-30 17:44   ` Jeff Garzik
2004-08-30 17:47 ` Prakash K. Cheemplavam
2004-08-30 17:51   ` John W. Linville
2004-08-31  8:47   ` Prakash K. Cheemplavam
2004-08-31  8:52     ` Jeff Garzik
2004-08-31  8:59       ` Prakash K. Cheemplavam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).