And while I'm on the subject, we're getting ready to write a new hdio ioctl, an extension of HDIO_DRIVE_CMD. The intent here is to be slightly more general-purpose than HDIO_DRIVE_CMD, with an eye to supporting the full set of SMART functionality. Current plan is to have the user pass a struct containing a pointer to the argument list, a pointer to the data buffer, and a data buffer length value. Consider this a design document; any comments and/or feature requests?