Beispiel #1
0
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");
}
Beispiel #2
0
static void init_9840_mode_pages(struct lu_phy_attr *lu)
{
	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);
}
Beispiel #3
0
/* Table 6-29 Supported Mode pages
 * Sony SDX-900V v2.1 SCSI Reference Guide
 */
static void init_ait_mode_pages(struct lu_phy_attr *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_mode_ait_device_configuration(lu);
}
Beispiel #4
0
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");
}
Beispiel #5
0
static void init_03592_mode_pages(struct lu_phy_attr *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_power_condition(lu);
	add_mode_information_exception(lu);
	add_mode_medium_configuration(lu);
}
Beispiel #6
0
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");
}
Beispiel #7
0
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");
}
Beispiel #8
0
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");
}
Beispiel #9
0
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");
}
Beispiel #10
0
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");
}
Beispiel #11
0
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");
}