From 5bb53889f6caa7d7c3ee9a7ec7281208c0569325 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 26 Jul 2011 18:31:58 +0000 Subject: [PATCH] scstadmin: Port ALUA support to new sysfs interface git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@3772 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- .../scst-0.9.10/lib/SCST/SCST.pm | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/scstadmin/scstadmin.sysfs/scst-0.9.10/lib/SCST/SCST.pm b/scstadmin/scstadmin.sysfs/scst-0.9.10/lib/SCST/SCST.pm index 950fd4026..0f09c650d 100644 --- a/scstadmin/scstadmin.sysfs/scst-0.9.10/lib/SCST/SCST.pm +++ b/scstadmin/scstadmin.sysfs/scst-0.9.10/lib/SCST/SCST.pm @@ -35,6 +35,7 @@ SCST_QUEUE_RES => 'last_sysfs_mgmt_res', IN_SCST_HANDLERS => 'device_driver', IN_SCST_DEVICES => 'device', IN_SCST_TARGETS => 'target_driver', +IN_SCST_DEV_GROUPS => 'device_groups', SCST_ADD_TGT => 'add_target', SCST_ADD_TGT_PARAMS => 'add_target_parameters', SCST_TGTT_ATTR => 'driver_attributes', @@ -329,15 +330,6 @@ sub SCST_DEVICES_DIR { } } -# Device groups. -sub SCST_DEV_GROUP_DIR { - if (-d SCST_ROOT_OLD) { - return SCST_ROOT_OLD . '/' . SCST_DEV_GROUPS; - } else { - die("New /sys interface for device groups not yet supported."); - } -} - # Target drivers. sub SCST_TARGETS_DIR { if (-d SCST_ROOT_OLD) { @@ -347,6 +339,11 @@ sub SCST_TARGETS_DIR { } } +# ALUA Device groups. +sub SCST_DEV_GROUP_DIR { + return make_path(SCST_ROOT_DIR(), SCST_DEV_GROUPS); +} + sub new { my $this = shift; my $debug = shift; @@ -1583,7 +1580,8 @@ sub addDeviceGroup { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), SCST_MGMT_IO); } @@ -1617,7 +1615,8 @@ sub removeDeviceGroup { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), SCST_MGMT_IO); } @@ -1671,7 +1670,9 @@ sub addDeviceGroupDevice { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_DEVICES) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_DEVICES, SCST_MGMT_IO); } @@ -1710,7 +1711,9 @@ sub addTargetGroup { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_TGROUPS) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, SCST_MGMT_IO); } @@ -1754,7 +1757,9 @@ sub addTargetGroupTarget { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_TGROUPS, $tgroup) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, SCST_MGMT_IO); @@ -1798,7 +1803,9 @@ sub removeDeviceGroupDevice { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_DEVICES) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_DEVICES, SCST_MGMT_IO); } @@ -1837,7 +1844,9 @@ sub removeTargetGroup { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_TGROUPS) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, SCST_MGMT_IO); } @@ -1881,7 +1890,9 @@ sub removeTargetGroupTarget { my ($path, $cmd); if (new_sysfs_interface()) { - die("New /sys interface for device groups not yet supported."); + $path = make_path(SCST_ROOT_DIR(), SCST_MGMT_IO); + $cmd = "in " . make_path(IN_SCST_DEV_GROUPS, $group, + SCST_DG_TGROUPS, $tgroup) . " "; } else { $path = make_path(SCST_DEV_GROUP_DIR(), $group, SCST_DG_TGROUPS, $tgroup, SCST_MGMT_IO);