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 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? Sounds like it will save you
some trouble:
> If I change my patch, I'd want to update the calculation in st_scsi.c as
> well, to keep them in sync.
Dave
--
David Young OJC Technologies
dyoung%ojctech.com@localhost Urbana, IL * (217) 278-3933
Home |
Main Index |
Thread Index |
Old Index