block size check in __getblk_slow

Jonathan Neuschäfer j.neuschaefer at gmx.net
Wed Jun 29 15:43:24 EDT 2011


On Mon, Jun 27, 2011 at 02:23:24PM +0530, piyush moghe wrote:
> Hi All,
> 
> I am new to linux kernel code and interested in filesystems and block I/O.
> 
> While going through the block read code ( in __bread function ) I found that
> when we try to read the block ( __getblk ) we first check for the block
> buffer page in page cache ( using __find_get_block function ) and if not we
> do a slow path ( using __getblk_slow function which checks page in cache
> again and if not found again then allocate a buffer page in cache ).
> 
> Now my problem is, as part of __getblk_slow  we compare block size with bdev
> logical block size and also check that block size should not be less than
> 512 and not greater than PAGE_SIZE ( 4K, for PAGE_SHIFT set to 13 )
>  although these all checks can be moved to upper level function i.e __getblk
> and that too before calling __find_get_block ( to find block in page cache )
> so as to avoid looking for block in page cache if the size is invalid.
Sounds reasonable.

> 
> Please let me know your comments on this.

I think this is advanced enough to be discussed on the LKML, just send
an RFC (request for comments) patch and someone should comment. But
LKML can be a bit harsh if you're not used to it.

If you want to discuss it here, you might also want to send a patch
in addition to your thoughts, it's just a lot easier to get the context
and the exact thing you're trying to do from a patch than from mere
words.

HTH,
	Jonathan Neuschäfer



More information about the Kernelnewbies mailing list