tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Implement mode_select for atapi tape drives



On Sat, Aug 08, 2009 at 12:49:33PM -0500, David Young wrote:
> On Sat, Aug 08, 2009 at 05:28:37AM -0700, Paul Goyette wrote:
> > On Sat, 8 Aug 2009, Marc Balmer wrote:
> >
> >>> The attached patch implements the mode_select operation for atapi 
> >>> tape drives.  It is enabled only via a new quirk setting, so existing 
> >>> drives that haven't explicitly been determined to support this op 
> >>> won't even attempt it.  (This is essentially the same patch as in PR 
> >>> kern/34832.)
> >>>
> >>> I've been running this in my own systems for about 3 1/2 years now, 
> >>> with my Seagate STT3401A (Travan 20/40GB) drive.  I'll submit a 
> >>> separate patch later with a cleaned-up quick setting for this drive.
> >>>
> >>> This patch is actually required for the above tape drive to operate  
> >>> properly under NetBSD.  The drive supports both 512-byte and 
> >>> 1024-byte block sizes, but defaults to 1024-bytes.  Without this 
> >>> patch there it isn't possible to write 512-byte records to the tape!
> >>>
> >>> Any objections to committing this?
> >>
> >> Why do you use
> >>
> >> memset(&atapi_select, 0, atapi_select_len);
> >>
> >> instead of
> >>
> >> memset(&atapi_select, 0, sizeof(atapi_select));
> >>
> >> and zap the u_int atapi_select_len variable?
> >
> > Good question!
> >
> > Basically, this whole routine was copied almost verbatim from the  
> > equivalent code in sys/dev/scsipi/st_scsi.c which also calculates the  
> > number of bytes to clear.  Since it worked, I never looked any further.
> 
> Why haven't you extracted the code from sys/dev/atapi/ and from
> sys/dev/scsipi/ for reuse in both places?

Rather, the code from st_atapi.c and st_scsi.c.

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 278-3933


Home | Main Index | Thread Index | Old Index