void init_hp_ult_4(struct lu_phy_attr *lu) { init_ult_inquiry(lu); ssc_pm.name = pm_name_lto4; ssc_pm.lu = lu; personality_module_register(&ssc_pm); /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_control_extension(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_device_configuration_extention(lu); add_mode_medium_partition(lu); add_mode_power_condition(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_mode_ult_encr_mode_pages(lu); /* Extra for LTO-4 */ add_mode_vendor_25h_mode_pages(lu); add_mode_encryption_mode_attribute(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); ssc_pm.native_drive_density = &density_lto4; ssc_pm.update_encryption_mode = update_ult_encryption_mode, ssc_pm.encryption_capabilities = encr_capabilities_ult, ssc_pm.kad_validation = hp_lto_kad_validation, ssc_pm.clear_WORM = clear_ult_WORM, ssc_pm.set_WORM = set_ult_WORM, /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin); register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout); add_density_support(&lu->den_list, &density_lto2, 0); add_density_support(&lu->den_list, &density_lto3, 1); add_density_support(&lu->den_list, &density_lto4, 1); add_drive_media_list(lu, LOAD_RO, "LTO2"); add_drive_media_list(lu, LOAD_RO, "LTO2 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3"); add_drive_media_list(lu, LOAD_RO, "LTO3 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO4"); add_drive_media_list(lu, LOAD_RO, "LTO4 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO4 WORM"); }
void init_t10kA_ssc(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace mode pages at %p +++", &lu->mode_pg); ssc_pm.name = pm_name_t10kA; ssc_pm.lu = lu; personality_module_register(&ssc_pm); /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; init_t10k_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); ssc_pm.native_drive_density = &density_t10kA; register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin); register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout); register_ops(lu, LOAD_DISPLAY, ssc_load_display); init_t10k_inquiry(lu); add_density_support(&lu->den_list, &density_t10kA, 1); add_drive_media_list(lu, LOAD_RW, "T10KA"); add_drive_media_list(lu, LOAD_RO, "T10KA Clean"); }
void init_3592_j1a(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_j1a; ssc_pm.lu = lu; ssc_pm.drive_type = drive_3592_J1A; ssc_pm.native_drive_density = &density_j1a; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 5; ssc_personality_module_register(&ssc_pm); init_3592_inquiry(lu); init_03592_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); add_density_support(&lu->den_list, &density_j1a, 1); add_drive_media_list(lu, LOAD_RW, "03592 JA"); add_drive_media_list(lu, LOAD_RO, "03592 JA Clean"); add_drive_media_list(lu, LOAD_RW, "03592 JA WORM"); }
void init_9840A_ssc(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_9840A; ssc_pm.lu = lu; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = FALSE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = TRUE; ssc_pm.drive_ANSI_VERSION = 5; ssc_pm.native_drive_density = &density_9840A; ssc_personality_module_register(&ssc_pm); init_9840_inquiry(lu); init_9840_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); register_ops(lu, LOAD_DISPLAY, ssc_load_display, NULL, NULL); add_density_support(&lu->den_list, &density_9840A, 1); add_drive_media_list(lu, LOAD_RW, "9840A"); add_drive_media_list(lu, LOAD_RO, "9840A Clean"); }
void init_ait3_ssc(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace mode pages at %p +++", &lu->mode_pg); ssc_pm.name = name_ait_3; ssc_pm.lu = lu; personality_module_register(&ssc_pm); /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; init_ait_inquiry(lu); init_ait_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); ssc_pm.native_drive_density = &density_ait3; add_density_support(&lu->den_list, &density_ait1, 0); add_density_support(&lu->den_list, &density_ait2, 1); add_density_support(&lu->den_list, &density_ait3, 1); add_drive_media_list(lu, LOAD_RO, "AIT1"); add_drive_media_list(lu, LOAD_RO, "AIT1 Clean"); add_drive_media_list(lu, LOAD_RW, "AIT2"); add_drive_media_list(lu, LOAD_RO, "AIT2 Clean"); add_drive_media_list(lu, LOAD_RW, "AIT3"); add_drive_media_list(lu, LOAD_RO, "AIT3 Clean"); }
void init_hp_ult_3(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_lto3; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_lto3; ssc_pm.clear_WORM = clear_ult_WORM; ssc_pm.set_WORM = set_ult_WORM; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 5; personality_module_register(&ssc_pm); init_ult_inquiry(lu); /* Based on 9th edition of IBM SCSI Reference */ add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_device_configuration_extention(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_mode_behavior_configuration(lu); add_mode_vendor_25h_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; add_density_support(&lu->den_list, &density_lto1, 0); add_density_support(&lu->den_list, &density_lto2, 1); add_density_support(&lu->den_list, &density_lto3, 1); add_drive_media_list(lu, LOAD_RO, "LTO1"); add_drive_media_list(lu, LOAD_RO, "LTO1 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO2"); add_drive_media_list(lu, LOAD_RO, "LTO2 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3"); add_drive_media_list(lu, LOAD_RO, "LTO3 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3 WORM"); }
void init_sdlt600_ssc(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_sdlt600; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_sdlt600; ssc_pm.clear_WORM = clear_dlt_WORM; ssc_pm.set_WORM = set_dlt_WORM; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 5; personality_module_register(&ssc_pm); init_sdlt_inquiry(lu); add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_control_extension(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_device_configuration_extention(lu); add_mode_medium_partition(lu); add_mode_power_condition(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; add_density_support(&lu->den_list, &density_sdlt220, 0); add_density_support(&lu->den_list, &density_sdlt320, 1); add_density_support(&lu->den_list, &density_sdlt600, 1); add_drive_media_list(lu, LOAD_RO, "SDLT 220"); add_drive_media_list(lu, LOAD_RW, "SDLT 320"); add_drive_media_list(lu, LOAD_RO, "SDLT 320 Clean"); add_drive_media_list(lu, LOAD_RW, "SDLT 600"); add_drive_media_list(lu, LOAD_RO, "SDLT 600 Clean"); add_drive_media_list(lu, LOAD_RW, "SDLT 600 WORM"); }
void init_dlt8000_ssc(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_dlt8000; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_dlt4; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = FALSE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = FALSE; ssc_pm.drive_supports_SPR = FALSE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 2; personality_module_register(&ssc_pm); init_dlt_inquiry(lu); add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_medium_partition(lu); add_mode_information_exception(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; /* Don't support PERSISTENT RESERVATION */ register_ops(lu, PERSISTENT_RESERVE_IN, spc_illegal_op, NULL, NULL); register_ops(lu, PERSISTENT_RESERVE_OUT, spc_illegal_op, NULL, NULL); add_density_support(&lu->den_list, &density_dlt2, 0); add_density_support(&lu->den_list, &density_dlt3, 1); add_density_support(&lu->den_list, &density_dlt4, 1); add_drive_media_list(lu, LOAD_RO, "DLT3"); add_drive_media_list(lu, LOAD_RW, "DLT4"); add_drive_media_list(lu, LOAD_RO, "DLT4 Clean"); }
void init_3592_E06(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace mode pages at %p +++", &lu->mode_pg); ssc_pm.name = pm_name_e06; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_e06; ssc_pm.encryption_capabilities = encr_capabilities_3592; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = TRUE; ssc_pm.drive_ANSI_VERSION = 5; ssc_personality_module_register(&ssc_pm); init_3592_inquiry(lu); init_03592_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); ssc_pm.drive_type = drive_3592_E06; register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin, NULL, NULL); register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout, NULL, NULL); add_density_support(&lu->den_list, &density_j1a, 0); add_density_support(&lu->den_list, &density_e05, 1); add_density_support(&lu->den_list, &density_e06, 1); add_drive_media_list(lu, LOAD_RW, "03592 JA"); add_drive_media_list(lu, LOAD_RO, "03592 JA Clean"); add_drive_media_list(lu, LOAD_RW, "03592 JA WORM"); add_drive_media_list(lu, LOAD_RW, "03592 JB"); add_drive_media_list(lu, LOAD_RO, "03592 JB Clean"); add_drive_media_list(lu, LOAD_RW, "03592 JB WORM"); add_drive_media_list(lu, LOAD_RW, "03592 JC"); add_drive_media_list(lu, LOAD_RO, "03592 JC Clean"); add_drive_media_list(lu, LOAD_RW, "03592 JC WORM"); }
void init_ult3580_td1(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_lto1; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_lto1; /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = FALSE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 5; ssc_personality_module_register(&ssc_pm); init_ult_inquiry(lu); /* IBM Ultrium SCSI Reference (5edition - Oct 2001) * lists these mode pages */ add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_information_exception(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; add_density_support(&lu->den_list, &density_lto1, 1); add_drive_media_list(lu, LOAD_RW, "LTO1"); add_drive_media_list(lu, LOAD_RO, "LTO1 Clean"); }
void init_ait4_ssc(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace mode pages at %p +++", &lu->mode_pg); ssc_pm.name = name_ait_4; ssc_pm.lu = lu; personality_module_register(&ssc_pm); /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; init_ait_inquiry(lu); init_ait_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); ssc_pm.native_drive_density = &density_ait4; ssc_pm.clear_WORM = clear_ait_WORM, ssc_pm.set_WORM = set_ait_WORM, ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 10; /* Capacity units in KBytes */ register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin); register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout); add_density_support(&lu->den_list, &density_ait2, 0); add_density_support(&lu->den_list, &density_ait3, 1); add_density_support(&lu->den_list, &density_ait4, 1); add_drive_media_list(lu, LOAD_RO, "AIT2"); add_drive_media_list(lu, LOAD_RO, "AIT2 Clean"); add_drive_media_list(lu, LOAD_RW, "AIT3"); add_drive_media_list(lu, LOAD_RO, "AIT3 Clean"); add_drive_media_list(lu, LOAD_RW, "AIT4"); add_drive_media_list(lu, LOAD_RO, "AIT4 Clean"); add_drive_media_list(lu, LOAD_RW, "AIT4 WORM"); }
void init_hp_ult_2(struct lu_phy_attr *lu) { init_ult_inquiry(lu); ssc_pm.name = pm_name_lto2; ssc_pm.lu = lu; personality_module_register(&ssc_pm); ssc_pm.native_drive_density = &density_lto2; /* Drive capabilities need to be defined before mode pages */ ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; /* Based on 9th edition of IBM SCSI Reference */ add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_mode_behavior_configuration(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; add_density_support(&lu->den_list, &density_lto1, 1); add_density_support(&lu->den_list, &density_lto2, 1); add_drive_media_list(lu, LOAD_RW, "LTO1"); add_drive_media_list(lu, LOAD_RO, "LTO1 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO2"); add_drive_media_list(lu, LOAD_RO, "LTO2 Clean"); }
void init_9940B_ssc(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace mode pages at %p +++", &lu->mode_pg); ssc_pm.name = pm_name_9940B; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_9940B; ssc_pm.drive_supports_WORM = FALSE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = TRUE; ssc_pm.drive_ANSI_VERSION = 5; ssc_personality_module_register(&ssc_pm); init_9840_inquiry(lu); init_9840_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); register_ops(lu, LOAD_DISPLAY, ssc_load_display, NULL, NULL); add_density_support(&lu->den_list, &density_9940A, 1); add_density_support(&lu->den_list, &density_9940B, 1); add_drive_media_list(lu, LOAD_RW, "9940A"); add_drive_media_list(lu, LOAD_RO, "9940A Clean"); add_drive_media_list(lu, LOAD_RW, "9940B"); add_drive_media_list(lu, LOAD_RO, "9940B Clean"); }
void init_hp_ult_6(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_lto6; ssc_pm.lu = lu; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = TRUE; ssc_pm.drive_ANSI_VERSION = 5; ssc_pm.native_drive_density = &density_lto6; ssc_pm.update_encryption_mode = update_ult_encryption_mode; ssc_pm.encryption_capabilities = encr_capabilities_ult; ssc_pm.kad_validation = hp_lto_kad_validation; ssc_pm.clear_WORM = clear_ult_WORM; ssc_pm.set_WORM = set_ult_WORM; personality_module_register(&ssc_pm); init_ult_inquiry(lu); add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_control_extension(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_device_configuration_extention(lu); add_mode_medium_partition(lu); add_mode_power_condition(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_mode_ult_encr_mode_pages(lu); /* Extra for LTO-5 */ add_mode_vendor_25h_mode_pages(lu); add_mode_encryption_mode_attribute(lu); /* Supports non-zero programable early warning */ update_prog_early_warning(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; register_ops(lu, SECURITY_PROTOCOL_IN, ssc_spin, NULL, NULL); register_ops(lu, SECURITY_PROTOCOL_OUT, ssc_spout, NULL, NULL); add_density_support(&lu->den_list, &density_lto4, 0); add_density_support(&lu->den_list, &density_lto5, 1); add_density_support(&lu->den_list, &density_lto6, 1); add_drive_media_list(lu, LOAD_RO, "LTO4"); add_drive_media_list(lu, LOAD_RO, "LTO4 Clean"); add_drive_media_list(lu, LOAD_RO, "LTO4 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO5"); add_drive_media_list(lu, LOAD_RO, "LTO5 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO5 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO5 ENCR"); add_drive_media_list(lu, LOAD_RW, "LTO6"); add_drive_media_list(lu, LOAD_RO, "LTO6 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO6 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO6 ENCR"); }
void init_ult3580_td4(struct lu_phy_attr *lu) { ssc_pm.name = pm_name_lto4; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_lto4; ssc_pm.update_encryption_mode = update_ult_encryption_mode; ssc_pm.encryption_capabilities = encr_capabilities_ult; ssc_pm.kad_validation = td4_kad_validation; ssc_pm.clear_WORM = clear_ult_WORM; ssc_pm.set_WORM = set_ult_WORM; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = TRUE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = TRUE; ssc_pm.drive_supports_SPR = TRUE; ssc_pm.drive_supports_SP = TRUE; ssc_pm.drive_ANSI_VERSION = 5; ssc_personality_module_register(&ssc_pm); init_ult_inquiry(lu); add_mode_page_rw_err_recovery(lu); add_mode_disconnect_reconnect(lu); add_mode_control(lu); add_mode_control_extension(lu); add_mode_data_compression(lu); add_mode_device_configuration(lu); add_mode_device_configuration_extention(lu); add_mode_medium_partition(lu); add_mode_power_condition(lu); add_mode_information_exception(lu); add_mode_medium_configuration(lu); add_mode_ult_encr_mode_pages(lu); /* Extra for LTO-4 */ add_mode_vendor_25h_mode_pages(lu); add_mode_encryption_mode_attribute(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); /* Capacity units in MBytes */ ((struct priv_lu_ssc *)lu->lu_private)->capacity_unit = 1L << 20; add_density_support(&lu->den_list, &density_lto2, 0); add_density_support(&lu->den_list, &density_lto3, 1); add_density_support(&lu->den_list, &density_lto4, 1); add_drive_media_list(lu, LOAD_RO, "LTO2"); add_drive_media_list(lu, LOAD_RO, "LTO2 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3"); add_drive_media_list(lu, LOAD_RO, "LTO3 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO3 WORM"); add_drive_media_list(lu, LOAD_RW, "LTO4"); add_drive_media_list(lu, LOAD_RO, "LTO4 Clean"); add_drive_media_list(lu, LOAD_RW, "LTO4 WORM"); }
void init_default_ssc(struct lu_phy_attr *lu) { MHVTL_DBG(3, "+++ Trace +++"); ssc_pm.name = pm_name; ssc_pm.lu = lu; ssc_pm.native_drive_density = &density_default; ssc_pm.drive_supports_append_only_mode = FALSE; ssc_pm.drive_supports_early_warning = FALSE; ssc_pm.drive_supports_prog_early_warning = FALSE; ssc_pm.drive_supports_WORM = FALSE; ssc_pm.drive_supports_SPR = FALSE; ssc_pm.drive_supports_SP = FALSE; ssc_pm.drive_ANSI_VERSION = 2; ssc_personality_module_register(&ssc_pm); init_default_inquiry(lu); init_default_mode_pages(lu); add_log_write_err_counter(lu); add_log_read_err_counter(lu); add_log_sequential_access(lu); add_log_temperature_page(lu); add_log_tape_alert(lu); add_log_tape_usage(lu); add_log_tape_capacity(lu); add_log_data_compression(lu); add_density_support(&lu->den_list, &density_default, 1); /* LTO media */ add_drive_media_list(lu, LOAD_RW, "LTO1"); add_drive_media_list(lu, LOAD_RW, "LTO2"); add_drive_media_list(lu, LOAD_RW, "LTO3"); add_drive_media_list(lu, LOAD_RW, "LTO4"); add_drive_media_list(lu, LOAD_RW, "LTO5"); /* DDS media */ add_drive_media_list(lu, LOAD_RW, "DDS1"); add_drive_media_list(lu, LOAD_RW, "DDS2"); add_drive_media_list(lu, LOAD_RW, "DDS3"); add_drive_media_list(lu, LOAD_RW, "DDS4"); add_drive_media_list(lu, LOAD_RW, "DDS5"); /* DLT media */ add_drive_media_list(lu, LOAD_RW, "DLT2"); add_drive_media_list(lu, LOAD_RW, "DLT3"); add_drive_media_list(lu, LOAD_RW, "DLT4"); add_drive_media_list(lu, LOAD_RW, "SDLT"); add_drive_media_list(lu, LOAD_RW, "SDLT 220"); add_drive_media_list(lu, LOAD_RW, "SDLT 320"); add_drive_media_list(lu, LOAD_RW, "SDLT 600"); /* STK T10000 */ add_drive_media_list(lu, LOAD_RW, "T10KA"); add_drive_media_list(lu, LOAD_RW, "T10KB"); add_drive_media_list(lu, LOAD_RW, "T10KC"); /* STK 9x40 */ add_drive_media_list(lu, LOAD_RW, "9840A"); add_drive_media_list(lu, LOAD_RW, "9840B"); add_drive_media_list(lu, LOAD_RW, "9840C"); add_drive_media_list(lu, LOAD_RW, "9840D"); add_drive_media_list(lu, LOAD_RW, "9940A"); add_drive_media_list(lu, LOAD_RW, "9940B"); /* AIT media */ add_drive_media_list(lu, LOAD_RW, "AIT1"); add_drive_media_list(lu, LOAD_RW, "AIT2"); add_drive_media_list(lu, LOAD_RW, "AIT3"); add_drive_media_list(lu, LOAD_RW, "AIT4"); /* IBM 03592 series */ add_drive_media_list(lu, LOAD_RW, "03592 JA"); add_drive_media_list(lu, LOAD_RW, "03592 JB"); add_drive_media_list(lu, LOAD_RW, "03592 JC"); /* Don't support PERSISTENT RESERVATION */ register_ops(lu, PERSISTENT_RESERVE_IN, spc_illegal_op, NULL, NULL); register_ops(lu, PERSISTENT_RESERVE_OUT, spc_illegal_op, NULL, NULL); }