diff options
author | Stefan Weinhuber <wein@de.ibm.com> | 2009-03-26 10:23:47 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-03-26 10:24:05 -0400 |
commit | b44b0ab3bac16356f03e94b1b49ba9305710c445 (patch) | |
tree | 66dfc19e2164a6a30d19b958ccf4e4a5d210c8d8 /drivers/s390/block/dasd_eckd.h | |
parent | f9a28f7bc5225af476f8d4bb669038da8801b7c4 (diff) |
[S390] dasd: add large volume support
The dasd device driver will now support ECKD devices with more then
65520 cylinders.
In the traditional ECKD adressing scheme each track is addressed
by a 16-bit cylinder and 16-bit head number. The new addressing
scheme makes use of the fact that the actual number of heads is
never larger then 15, so 12 bits of the head number can be redefined
to be part of the cylinder address.
Signed-off-by: Stefan Weinhuber <wein@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd_eckd.h')
-rw-r--r-- | drivers/s390/block/dasd_eckd.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h index 2476f87d21d0..eecfa776db15 100644 --- a/drivers/s390/block/dasd_eckd.h +++ b/drivers/s390/block/dasd_eckd.h | |||
@@ -48,6 +48,11 @@ | |||
48 | #define PSF_ORDER_PRSSD 0x18 | 48 | #define PSF_ORDER_PRSSD 0x18 |
49 | #define PSF_ORDER_SSC 0x1D | 49 | #define PSF_ORDER_SSC 0x1D |
50 | 50 | ||
51 | /* | ||
52 | * Size that is reportet for large volumes in the old 16-bit no_cyl field | ||
53 | */ | ||
54 | #define LV_COMPAT_CYL 0xFFFE | ||
55 | |||
51 | /***************************************************************************** | 56 | /***************************************************************************** |
52 | * SECTION: Type Definitions | 57 | * SECTION: Type Definitions |
53 | ****************************************************************************/ | 58 | ****************************************************************************/ |
@@ -228,7 +233,8 @@ struct dasd_eckd_characteristics { | |||
228 | __u8 factor7; | 233 | __u8 factor7; |
229 | __u8 factor8; | 234 | __u8 factor8; |
230 | __u8 reserved2[3]; | 235 | __u8 reserved2[3]; |
231 | __u8 reserved3[10]; | 236 | __u8 reserved3[6]; |
237 | __u32 long_no_cyl; | ||
232 | } __attribute__ ((packed)); | 238 | } __attribute__ ((packed)); |
233 | 239 | ||
234 | /* elements of the configuration data */ | 240 | /* elements of the configuration data */ |
@@ -406,6 +412,7 @@ struct dasd_eckd_private { | |||
406 | int uses_cdl; | 412 | int uses_cdl; |
407 | struct attrib_data_t attrib; /* e.g. cache operations */ | 413 | struct attrib_data_t attrib; /* e.g. cache operations */ |
408 | struct dasd_rssd_features features; | 414 | struct dasd_rssd_features features; |
415 | u32 real_cyl; | ||
409 | 416 | ||
410 | /* alias managemnet */ | 417 | /* alias managemnet */ |
411 | struct dasd_uid uid; | 418 | struct dasd_uid uid; |