On Fri, Sep 29, 2006 at 04:05:58PM +0100, Stephen Gran wrote:
> This one time, at band camp, Andrew Pollock said:
> > On Fri, Sep 29, 2006 at 09:32:20AM +0100, Stephen Gran wrote:
> > > This one time, at band camp, Andrew Pollock said:
> > > > Whilst playing around with hdparm -C on some IDE drives connected via
> > > > IDE-USB adapters, it became apparent that it was reporting standby, when
> > > > it really should have been reporting unknown. This is apparent when
> > > > running hdparm under strace. It gets an ENOTTY back from the ioctl()
> > > > call, and then goes on to report the drive being in a standby state. It
> > > > should, according to the manpage, be reporting "unknown".
> > >
> > > Can yuo send me the complete strace output? What you're reporting is
> > > not exactly what I see in the code, so I'd like to look it over.
> >
> > Attached.
> >
> > regards
> >
> > Andrew
>
> > write(1, "/dev/sda:\n", 10) = 10
> > ioctl(3, 0x31f, 0xafe04e40) = -1 EINVAL (Invalid argument)
> > write(1, " drive state is: standby\n", 26) = 26
>
> Ah. EINVAL makes a whole lot more sense than ENOTTY. I am going to
> copy upstream on this and see where we get.
I'm pretty sure I was seeing ENOTTY on an ATA over Ethernet block device.
Yeah, I did.
> Can you try this patch and see if it reports correct behavior for you?
>
> Index: hdparm.c
> ===================================================================
> --- hdparm.c (revision 113)
> +++ hdparm.c (working copy)
> @@ -1237,7 +1237,7 @@
> unsigned char args[4] = {WIN_CHECKPOWERMODE1,0,0,0};
> const char *state;
> if (ioctl(fd, HDIO_DRIVE_CMD, &args)
> - && (args[0] == WIN_CHECKPOWERMODE2) /* try again with 0x98 */
> + && (args[0] = WIN_CHECKPOWERMODE2) /* try again with 0x98 */
> && ioctl(fd, HDIO_DRIVE_CMD, &args)) {
> if (errno != EIO || args[0] != 0 || args[1] != 0)
> state = "unknown";
I'll try and rebuilt it tonight and let you know.
regards
Andrew
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]