예제 #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");
}
예제 #2
0
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");
}
예제 #3
0
파일: ibm_03592_pm.c 프로젝트: fishky/mhvtl
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");
}
예제 #4
0
파일: stk9x40_pm.c 프로젝트: fishky/mhvtl
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");
}
예제 #5
0
파일: ait_pm.c 프로젝트: aroundrobin/mhvtl
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");
}
예제 #6
0
파일: hp_ultrium_pm.c 프로젝트: kisee/mhvtl
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");
}
예제 #7
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");
}
예제 #8
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");
}
예제 #9
0
파일: ibm_03592_pm.c 프로젝트: fishky/mhvtl
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");
}
예제 #10
0
파일: ult3580_pm.c 프로젝트: qiuyi21/mhvtl
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");
}
예제 #11
0
파일: ait_pm.c 프로젝트: aroundrobin/mhvtl
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");
}
예제 #12
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");
}
예제 #13
0
파일: stk9x40_pm.c 프로젝트: fishky/mhvtl
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");
}
예제 #14
0
파일: hp_ultrium_pm.c 프로젝트: kisee/mhvtl
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");
}
예제 #15
0
파일: ult3580_pm.c 프로젝트: qiuyi21/mhvtl
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");
}
예제 #16
0
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);
}