diff --git a/usr/default_ssc_pm.c b/usr/default_ssc_pm.c index c1e3e8b0..297da117 100644 --- a/usr/default_ssc_pm.c +++ b/usr/default_ssc_pm.c @@ -95,6 +95,8 @@ static struct name_to_media_info media_info[] = { media_type_lto7_data, medium_density_code_lto7}, {"LTO7 WORM", Media_LTO7_WORM, media_type_lto7_worm, medium_density_code_lto7}, + {"LTO7M8", Media_LTO7M8, + media_type_lto7m8_data, medium_density_code_lto7m8}, /* IBM 03592 media */ {"03592 JA", Media_3592_JA, diff --git a/usr/hp_ultrium_pm.c b/usr/hp_ultrium_pm.c index 445c3e1e..d4806083 100644 --- a/usr/hp_ultrium_pm.c +++ b/usr/hp_ultrium_pm.c @@ -69,6 +69,9 @@ static struct density_info density_lto6 = { static struct density_info density_lto7 = { 19107, 127, 5376, 6000000, medium_density_code_lto7, "LTO-CVE", "U-732", "Ultrium 7/32T" }; +static struct density_info density_lto7m8 = { + 19107, 127, 5376, 9000000, medium_density_code_lto7m8, + "LTO-CVE", "U-7M832", "Ultrium 7M8/32T" }; static struct density_info density_lto8 = { 20669, 127, 6656, 12000000, medium_density_code_lto8, "LTO-CVE", "U-832", "Ultrium 8/32T" }; @@ -112,6 +115,8 @@ static struct name_to_media_info media_info[] = { media_type_hp_lto_data, medium_density_code_lto7}, {"LTO7 WORM", Media_LTO7_WORM, media_type_hp_lto_worm, medium_density_code_lto7}, + {"LTO7M8", Media_LTO7M8, + media_type_hp_lto_data, medium_density_code_lto7m8}, {"LTO8", Media_LTO8, media_type_hp_lto_data, medium_density_code_lto8}, {"LTO8 Clean", Media_LTO8_CLEAN, @@ -968,6 +973,7 @@ void init_hp_ult_8(struct lu_phy_attr *lu) add_drive_media_list(lu, LOAD_RO, "LTO7 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO7 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO7 ENCR"); + add_drive_media_list(lu, LOAD_RW, "LTO7M8"); add_drive_media_list(lu, LOAD_RW, "LTO8"); add_drive_media_list(lu, LOAD_RO, "LTO8 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO8 WORM"); diff --git a/usr/ult3580_pm.c b/usr/ult3580_pm.c index 70e78a7c..e329bbab 100644 --- a/usr/ult3580_pm.c +++ b/usr/ult3580_pm.c @@ -69,6 +69,9 @@ static struct density_info density_lto6 = { static struct density_info density_lto7 = { 19107, 127, 5376, 6000000, medium_density_code_lto7, "LTO-CVE", "U-732", "Ultrium 7/32T" }; +static struct density_info density_lto7m8 = { + 19107, 127, 5376, 9000000, medium_density_code_lto7m8, + "LTO-CVE", "U-732", "Ultrium 7M8/32T" }; static struct density_info density_lto8 = { 20669, 127, 6656, 12000000, medium_density_code_lto8, "LTO-CVE", "U-832", "Ultrium 8/32T" }; @@ -112,6 +115,8 @@ static struct name_to_media_info media_info[] = { media_type_lto7_data, medium_density_code_lto7}, {"LTO7 WORM", Media_LTO7_WORM, media_type_lto7_worm, medium_density_code_lto7}, + {"LTO7M8", Media_LTO7M8, + media_type_lto7m8_data, medium_density_code_lto7m8}, {"LTO8", Media_LTO8, media_type_lto8_data, medium_density_code_lto8}, {"LTO8 Clean", Media_LTO8_CLEAN, @@ -408,6 +413,9 @@ static uint8_t ult_media_load(struct lu_phy_attr *lu, int load) case Media_LTO7: lu->mode_media_type = media_type_lto7_data; break; + case Media_LTO7M8: + lu->mode_media_type = media_type_lto7m8_data; + break; case Media_LTO8: lu->mode_media_type = media_type_lto8_data; break; @@ -936,6 +944,7 @@ void init_ult3580_td8(struct lu_phy_attr *lu) add_density_support(&lu->den_list, &density_lto6, 0); add_density_support(&lu->den_list, &density_lto7, 1); + add_density_support(&lu->den_list, &density_lto7m8, 1); add_density_support(&lu->den_list, &density_lto8, 1); add_drive_media_list(lu, LOAD_RW, "LTO6"); @@ -946,6 +955,7 @@ void init_ult3580_td8(struct lu_phy_attr *lu) add_drive_media_list(lu, LOAD_RO, "LTO7 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO7 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO7 ENCR"); + add_drive_media_list(lu, LOAD_RW, "LTO7M8"); add_drive_media_list(lu, LOAD_RW, "LTO8"); add_drive_media_list(lu, LOAD_RO, "LTO8 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO8 WORM"); diff --git a/usr/vtllib.c b/usr/vtllib.c index 8b906691..858f7dfa 100644 --- a/usr/vtllib.c +++ b/usr/vtllib.c @@ -1355,6 +1355,17 @@ unsigned int set_media_params(struct MAM *mamp, char *density) put_unaligned_be32(19107, &mamp->media_info.bits_per_mm); mamp->max_partitions = 2; mamp->num_partitions = 2; + } else if (!(strncmp(density, "LTO7M8", 4))) { + mamp->MediumDensityCode = medium_density_code_lto7m8; + mamp->MediaType = Media_LTO7M8; + put_unaligned_be32(960, &mamp->MediumLength); + put_unaligned_be32(127, &mamp->MediumWidth); + memcpy(&mamp->media_info.description, "Ultrium 7M8/32T", 13); + memcpy(&mamp->media_info.density_name, "U-7M832", 6); + memcpy(&mamp->AssigningOrganization_1, "LTO-CVE", 7); + put_unaligned_be32(19104, &mamp->media_info.bits_per_mm); + mamp->max_partitions = 2; + mamp->num_partitions = 2; } else if (!(strncmp(density, "LTO8", 4))) { mamp->MediumDensityCode = medium_density_code_lto8; mamp->MediaType = Media_LTO8; diff --git a/usr/vtllib.h b/usr/vtllib.h index 6606d89b..f4845f21 100644 --- a/usr/vtllib.h +++ b/usr/vtllib.h @@ -271,6 +271,7 @@ enum Media_Type_list { Media_LTO7, Media_LTO7_CLEAN, Media_LTO7_WORM, + Media_LTO7M8, Media_LTO8, Media_LTO8_CLEAN, Media_LTO8_WORM, diff --git a/usr/vtltape.h b/usr/vtltape.h index 3668ddf3..e30c9eb6 100644 --- a/usr/vtltape.h +++ b/usr/vtltape.h @@ -92,8 +92,7 @@ struct blk_header { #define medium_density_code_lto5 0x58 #define medium_density_code_lto6 0x5a #define medium_density_code_lto7 0x5c -#define medium_density_code_lto7 0x5c -#define medium_density_code_lto8_m8 0x5d +#define medium_density_code_lto7m8 0x5d #define medium_density_code_lto8 0x5e #define medium_density_code_j1a 0x51 @@ -166,6 +165,7 @@ struct blk_header { #define media_type_lto6_worm 0x6c #define media_type_lto7_data 0x78 #define media_type_lto7_worm 0x7c +#define media_type_lto7m8_data 0x78 #define media_type_lto8_data 0x88 #define media_type_lto8_worm 0x8c #define media_type_hp_lto_data 0x00