diff options
author | Stephen M. Cameron <scameron@beardog.cce.hp.com> | 2009-09-17 20:48:31 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-10-01 21:15:45 +0200 |
commit | 9cef0d2f4f68a5a2c6ea0495f958a074d21fbd07 (patch) | |
tree | aee97fb9d8de37c0aee1fec563192e29a2425c70 /drivers/block/cciss.h | |
parent | cciss: Add usage_count attribute to each logical drive in /sys (diff) | |
download | linux-9cef0d2f4f68a5a2c6ea0495f958a074d21fbd07.tar.xz linux-9cef0d2f4f68a5a2c6ea0495f958a074d21fbd07.zip |
cciss: Dynamically allocate the drive_info_struct for each logical drive.
cciss: Dynamically allocate the drive_info_struct for each logical drive.
This reduces the size of the per-hba ctlr_info structure from 106936
bytes to 8132 bytes. That's on 32-bit systems. On 64-bit systems, the
improvement is even bigger. Without this, the ctlr_info struct is so big
that the driver won't even load on a 64 bit system if CISS_MAX_LUN was
at it's current setting of 1024 logical drives.
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/block/cciss.h')
-rw-r--r-- | drivers/block/cciss.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/block/cciss.h b/drivers/block/cciss.h index 5188f713d1b0..31524cf42c77 100644 --- a/drivers/block/cciss.h +++ b/drivers/block/cciss.h @@ -45,13 +45,14 @@ typedef struct _drive_info_struct * to prevent it from being opened or it's * queue from being started. */ - struct device *dev; + struct device dev; __u8 serial_no[16]; /* from inquiry page 0x83, * not necc. null terminated. */ char vendor[VENDOR_LEN + 1]; /* SCSI vendor string */ char model[MODEL_LEN + 1]; /* SCSI model string */ char rev[REV_LEN + 1]; /* SCSI revision string */ + char device_initialized; /* indicates whether dev is initialized */ } drive_info_struct; struct ctlr_info @@ -87,7 +88,7 @@ struct ctlr_info BYTE cciss_read_capacity; // information about each logical volume - drive_info_struct drv[CISS_MAX_LUN]; + drive_info_struct *drv[CISS_MAX_LUN]; struct access_method access; |