Why is m_blksize unsigned 32bit?
Do you want to repeat the story of '640KB are enough'?
Please make m_blksize an uint64 for the sake of future users who want
to address more than 4GB as block.

On Wed, Dec 2, 2009 at 5:34 PM, Garrett D'Amore <gdamore at sun.com> wrote:
> Okay, I'm going to propose solving this properly.  The solution is that the
> following structure:
>
> struct bd_media {
>   uint64_t        m_nblks;
>   boolean_t        m_readonly;
> };
>
> Will grow a new member expressing the block size:
>
> struct bd_media {
>   uint64_t        m_nblks;
>   uint32_t         m_blksize;
>   boolean_t        m_readonly;
> };
>
> *However*, in order to keep things simple and efficient in the code, the
> rule is that the blksize *must* be a power of two.  If the block size is not
> a power of two, then the driver will have to do the RMW thing to fake one
> up.  (With the associated performance penalties.)
>
> This should allow non-spinning media to work fine with blkdev, even with
> larger block sizes.
>
> Note that I can only test 512 byte blocks, so architecturally the solution
> will be complete, but the resulting code *may* have bugs that I won't know
> about until we have media with larger block size requirements.
>
>   - Garrett
>
> Darren J Moffat wrote:
>>
>> Garrett D'Amore wrote:
>>>
>>> Darren J Moffat wrote:
>>>>
>>>> With the updated name I have only one possible small issue.
>>>>
>>>> You said the driver is hardcoded to 512 byte blocks, yet the industry is
>>>> moving towards 4k blocks.  Is that likely to be an issue for devices driven
>>>> by 'blkdev' ?
>>>
>>> I don't think so.  If the application (or other code) issues smaller
>>> I/Os, the underlying driver will have to implement as RMW.   If the
>>> filesystem or app code uses 4K aligned and sized buffers, then there won't
>>> be a need to do RMW.
>>
>> I understood how that side would work.
>>
>>> We might need to change the code slightly to express the 4K size in the
>>> various ioctls, but that can happen latter when I run into such a device.
>>>  (The current devices supported by this device driver all use 512 byte
>>> blocks.)
>>
>> My concern is when there are devices that use 4K size blocks instead of
>> 512 byte blocks.  Is there anything in the architecture of bd that means
>> they can't easily be supported by this bd driver ?
>>
>
> _______________________________________________
> opensolaris-arc mailing list
> opensolaris-arc at opensolaris.org
>



-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     olga.kryzhanovska at gmail.com   \-`\-'----.
 `'-..-| /     Solaris/BSD//C/C++ programmer   \ |-..-'`
      /\/\                                     /\/\
      `--`                                      `--`

Reply via email to