]> git.ipfire.org Git - thirdparty/linux.git/commit - lib/scatterlist.c
scatterlist: allow chaining to preallocated chunks
authorChristoph Hellwig <hch@lst.de>
Tue, 15 Apr 2014 12:38:31 +0000 (14:38 +0200)
committerChristoph Hellwig <hch@lst.de>
Fri, 25 Jul 2014 21:16:21 +0000 (17:16 -0400)
commitc53c6d6a68b13b1dff2892551b56cfdc07887d9e
tree8bd6ddc1ff0f33e357ad6c230f62fd7b1cf1b28a
parentf6d47e74fcb2814225e429c94355ad1c551daffb
scatterlist: allow chaining to preallocated chunks

Blk-mq drivers usually preallocate their S/G list as part of the request,
but if we want to support the very large S/G lists currently supported by
the SCSI code that would tie up a lot of memory in the preallocated request
pool.  Add support to the scatterlist code so that it can initialize a
S/G list that uses a preallocated first chunks and dynamically allocated
additional chunks.  That way the scsi-mq code can preallocate a first
page worth of S/G entries as part of the request, and dynamically extend
the S/G list when needed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Webb Scales <webbnh@hp.com>
Acked-by: Jens Axboe <axboe@kernel.dk>
Tested-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Robert Elliott <elliott@hp.com>
drivers/scsi/scsi_lib.c
include/linux/scatterlist.h
lib/scatterlist.c