Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Nov 2004 15:03:59 -0500
From:      Eduard Martinescu <martines@rochester.rr.com>
To:        =?ISO-8859-1?Q?S=F8ren?= Schmidt <sos@DeepCore.dk>
Cc:        freebsd-current@freebsd.org
Subject:   Re: ATAng support for reading from register on ATAREQUEST command?
Message-ID:  <1101067439.10224.3.camel@sauron.crafts4life.com>
In-Reply-To: <41A0835B.9040404@DeepCore.dk>
References:   <20041119171236.DNZH20678.lakermmtao09.cox.net@smtp.east.cox.net> <41A0835B.9040404@DeepCore.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
Matt/S=F8ren,

I did send S=F8ren a patch to implement an optional READ parameter to the
IOCTL, but he decided instead to ALWAYS read back the registers on any
ATA_R_CONTROL command.

Smartmontools has been updated to take this into account, and the next
stable version should be more accurate.

Ed

On Sun, 2004-11-21 at 13:00 +0100, S=F8ren Schmidt wrote:
> Matt Kucenski wrote:
> > I am trying to develop a program that will allow modifications to the=
 Host Protected Area settings and one of the commands (READ NATIVE MAX AD=
DRESS) 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=
 with ATAng.  There is a comment in their code that another command (ATA_=
CMD_READ_REG) patch has been submitted to ATAng, but it does not appear t=
o have made it into any of the latest sources.
> >=20
> > Can anyone offer any information on this?
>=20
> 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
>=20
> Plain text document attachment (ata-smart-patch)
> Index: ata-all.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> 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 =3D iocmd->u.request.u.ata.command;
> -	     request->u.ata.feature =3D iocmd->u.request.u.ata.feature;
> -	     request->u.ata.lba =3D iocmd->u.request.u.ata.lba;
> -	     request->u.ata.count =3D iocmd->u.request.u.ata.count;
> +	    request->u.ata.command =3D iocmd->u.request.u.ata.command;
> +	    request->u.ata.feature =3D iocmd->u.request.u.ata.feature;
> +	    request->u.ata.lba =3D iocmd->u.request.u.ata.lba;
> +	    request->u.ata.count =3D iocmd->u.request.u.ata.count;
>  	}
> =20
>  	request->timeout =3D iocmd->u.request.timeout;
> @@ -566,6 +566,10 @@
> =20
>  	ata_queue_request(request);
> =20
> +	iocmd->u.request.u.ata.command =3D request->u.ata.command;
> +	iocmd->u.request.u.ata.feature =3D request->u.ata.feature;
> +	iocmd->u.request.u.ata.lba =3D request->u.ata.lba;
> +	iocmd->u.request.u.ata.count =3D request->u.ata.count;
>  	if (request->result)
>  	    iocmd->u.request.error =3D request->result;
>  	else {
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.o=
rg"
--=20
Eduard Martinescu <martines@rochester.rr.com>



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