summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-13 23:15:28 +0300
committerJens Axboe <jens.axboe@oracle.com>2008-01-28 12:54:49 +0300
commit7cedb1f17fb7f4374d11501f61656ae9d3ba47e9 (patch)
treed6257751445618b827c3e41e5b8fde2704c9d716 /include
parent5ed7959ede0936c55e50421a53f153b17080e876 (diff)
downloadlinux-7cedb1f17fb7f4374d11501f61656ae9d3ba47e9.tar.xz
SG: work with the SCSI fixed maximum allocations.
SCSI sg table allocation has a maximum size (of SCSI_MAX_SG_SEGMENTS, currently 128) and this will cause a BUG_ON() in SCSI if something tries an allocation over it. This patch adds a size limit to the chaining allocator to allow the specification of the maximum allocation size for chaining, so we always chain in units of the maximum SCSI allocation size. Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/scatterlist.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index e9cb103417b2..a3d567a974e8 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -207,9 +207,10 @@ void sg_init_one(struct scatterlist *, const void *, unsigned int);
typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t);
typedef void (sg_free_fn)(struct scatterlist *, unsigned int);
-void __sg_free_table(struct sg_table *, sg_free_fn *);
+void __sg_free_table(struct sg_table *, unsigned int, sg_free_fn *);
void sg_free_table(struct sg_table *);
-int __sg_alloc_table(struct sg_table *, unsigned int, gfp_t, sg_alloc_fn *);
+int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, gfp_t,
+ sg_alloc_fn *);
int sg_alloc_table(struct sg_table *, unsigned int, gfp_t);
/*