summaryrefslogtreecommitdiff
path: root/drivers/s390/block/scm_blk.h
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2014-12-05 15:41:47 (GMT)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-12-08 08:42:44 (GMT)
commitde88d0d28fe932637eb5b7ebf9e638256cf07979 (patch)
tree832876b01901d8c29c09ea170bc69f8dacfec25d /drivers/s390/block/scm_blk.h
parent9d4df77fab7347a74a9938521ffad8d8fab2671d (diff)
downloadlinux-de88d0d28fe932637eb5b7ebf9e638256cf07979.tar.xz
s390/scm_block: allocate aidaw pages only when necessary
AOBs (the structure describing the HW request) need to be 4K aligned but very little of that page is actually used. With this patch we place aidaws at the end of the AOB page and only allocate a separate page for aidaws when we have to (lists of aidaws must not cross page boundaries). Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/scm_blk.h')
-rw-r--r--drivers/s390/block/scm_blk.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/block/scm_blk.h b/drivers/s390/block/scm_blk.h
index a315ef0..6334e16 100644
--- a/drivers/s390/block/scm_blk.h
+++ b/drivers/s390/block/scm_blk.h
@@ -30,6 +30,7 @@ struct scm_blk_dev {
struct scm_request {
struct scm_blk_dev *bdev;
+ struct aidaw *next_aidaw;
struct request *request;
struct aob *aob;
struct list_head list;
@@ -54,7 +55,7 @@ void scm_blk_irq(struct scm_device *, void *, int);
void scm_request_finish(struct scm_request *);
void scm_request_requeue(struct scm_request *);
-struct aidaw *scm_aidaw_alloc(void);
+struct aidaw *scm_aidaw_fetch(struct scm_request *scmrq, unsigned int bytes);
int scm_drv_init(void);
void scm_drv_cleanup(void);