Re: [PATCH 4/5] block: introduce helpers for allocating IO buffers from slab

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

 



On Thu, Oct 18, 2018 at 04:42:07PM +0200, Christoph Hellwig wrote:
> This all seems quite complicated.
> 
> I think the interface we'd want is more one that has a little
> cache of a single page in the queue, and a little bitmap which
> sub-page size blocks of it are used.
> 
> Something like (pseudo code minus locking):
> 
> void *blk_alloc_sector_buffer(struct block_device *bdev, gfp_t gfp)
> {
> 	unsigned block_size = block_size(bdev);
> 
> 	if (blocksize >= PAGE_SIZE)
> 		return (void *)__get_free_pages(gfp, get_order(blocksize));
> 
> 	if (bdev->fragment_cache_page) {
> 		[ <find fragment in bdev->fragment_cache_page using
> 		  e.g. bitmap and return if found]
> 	}
> 
> 	bdev->fragment_cache_page = (void *)__get_free_page(gfp);
> 	goto find_again;
> }

This looks a lot like page_frag_alloc() except I think page_frag_alloc()
may be more efficient.



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux