Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Nov 2004 13:00:27 +0100
From:      =?ISO-8859-1?Q?S=F8ren_Schmidt?= <sos@DeepCore.dk>
To:        m.kucenski@computer.org
Cc:        freebsd-current@freebsd.org
Subject:   Re: ATAng support for reading from register on ATAREQUEST command?
Message-ID:  <41A0835B.9040404@DeepCore.dk>
In-Reply-To: <20041119171236.DNZH20678.lakermmtao09.cox.net@smtp.east.cox.net>
References:  <20041119171236.DNZH20678.lakermmtao09.cox.net@smtp.east.cox.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------060904080909000102080101
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

Matt Kucenski wrote:
> I am trying to develop a program that will allow modifications to the H=
ost Protected Area settings and one of the commands (READ NATIVE MAX ADDR=
ESS) returns the native max address back in the register (LBA high, low, =
mid).
>=20
> I have been looking at the smartmontools project for pointers on how to=
 write this code and according to that source, this is not possible yet w=
ith ATAng.  There is a comment in their code that another command (ATA_CM=
D_READ_REG) patch has been submitted to ATAng, but it does not appear to =
have made it into any of the latest sources.
>=20
> Can anyone offer any information on this?

The following patch returns the register values in the request you sent=20
through ioctl call. That should do the trick without any new calls..


--=20

-S=F8ren


--------------060904080909000102080101
Content-Type: text/plain;
 name="ata-smart-patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ata-smart-patch"

Index: ata-all.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-all.c,v
retrieving revision 1.233
diff -u -r1.233 ata-all.c
--- ata-all.c	19 Oct 2004 20:13:38 -0000	1.233
+++ ata-all.c	19 Nov 2004 18:59:55 -0000
@@ -546,10 +546,10 @@
 	    bcopy(iocmd->u.request.u.atapi.ccb, request->u.atapi.ccb, 16);
 	}
 	else {
-	     request->u.ata.command = iocmd->u.request.u.ata.command;
-	     request->u.ata.feature = iocmd->u.request.u.ata.feature;
-	     request->u.ata.lba = iocmd->u.request.u.ata.lba;
-	     request->u.ata.count = iocmd->u.request.u.ata.count;
+	    request->u.ata.command = iocmd->u.request.u.ata.command;
+	    request->u.ata.feature = iocmd->u.request.u.ata.feature;
+	    request->u.ata.lba = iocmd->u.request.u.ata.lba;
+	    request->u.ata.count = iocmd->u.request.u.ata.count;
 	}
 
 	request->timeout = iocmd->u.request.timeout;
@@ -566,6 +566,10 @@
 
 	ata_queue_request(request);
 
+	iocmd->u.request.u.ata.command = request->u.ata.command;
+	iocmd->u.request.u.ata.feature = request->u.ata.feature;
+	iocmd->u.request.u.ata.lba = request->u.ata.lba;
+	iocmd->u.request.u.ata.count = request->u.ata.count;
 	if (request->result)
 	    iocmd->u.request.error = request->result;
 	else {

--------------060904080909000102080101--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41A0835B.9040404>