diff options
author | Stephen M. Cameron <scameron@beardog.cce.hp.com> | 2009-09-17 14:48:31 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-10-01 15:15:45 -0400 |
commit | 9cef0d2f4f68a5a2c6ea0495f958a074d21fbd07 (patch) | |
tree | aee97fb9d8de37c0aee1fec563192e29a2425c70 /drivers/block/cciss.h | |
parent | e272afecaf18912e971374df4605496975942e5c (diff) |
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 | |||
45 | * to prevent it from being opened or it's | 45 | * to prevent it from being opened or it's |
46 | * queue from being started. | 46 | * queue from being started. |
47 | */ | 47 | */ |
48 | struct device *dev; | 48 | struct device dev; |
49 | __u8 serial_no[16]; /* from inquiry page 0x83, | 49 | __u8 serial_no[16]; /* from inquiry page 0x83, |
50 | * not necc. null terminated. | 50 | * not necc. null terminated. |
51 | */ | 51 | */ |
52 | char vendor[VENDOR_LEN + 1]; /* SCSI vendor string */ | 52 | char vendor[VENDOR_LEN + 1]; /* SCSI vendor string */ |
53 | char model[MODEL_LEN + 1]; /* SCSI model string */ | 53 | char model[MODEL_LEN + 1]; /* SCSI model string */ |
54 | char rev[REV_LEN + 1]; /* SCSI revision string */ | 54 | char rev[REV_LEN + 1]; /* SCSI revision string */ |
55 | char device_initialized; /* indicates whether dev is initialized */ | ||
55 | } drive_info_struct; | 56 | } drive_info_struct; |
56 | 57 | ||
57 | struct ctlr_info | 58 | struct ctlr_info |
@@ -87,7 +88,7 @@ struct ctlr_info | |||
87 | BYTE cciss_read_capacity; | 88 | BYTE cciss_read_capacity; |
88 | 89 | ||
89 | // information about each logical volume | 90 | // information about each logical volume |
90 | drive_info_struct drv[CISS_MAX_LUN]; | 91 | drive_info_struct *drv[CISS_MAX_LUN]; |
91 | 92 | ||
92 | struct access_method access; | 93 | struct access_method access; |
93 | 94 | ||