Now the helper is executed with this list of arguments:
TG_PT_Group ID prev_state new_state {explicit/implicit} dev_name

For exmaple:
default_tg_pt_gp 0 Active/Optimized Standby explicit 
iqn.2014-06.com.vstorage:test-2

Signed-off-by: Andrei Vagin <ava...@openvz.org>
---
 drivers/target/target_core_alua.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/target/target_core_alua.c 
b/drivers/target/target_core_alua.c
index a88a51d..c59bf69 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -1028,13 +1028,14 @@ static void core_alua_do_transition_ua(struct 
t10_alua_tg_pt_gp *tg_pt_gp)
        spin_unlock(&tg_pt_gp->tg_pt_gp_lock);
 }
 
-static int core_alua_usermode_helper(struct t10_alua_tg_pt_gp *tg_pt_gp, int 
new_state, int explicit)
+static int core_alua_usermode_helper(struct t10_alua_tg_pt_gp *tg_pt_gp,
+                       struct se_device *l_dev, int new_state, int explicit)
 {
        char *envp[] = { "HOME=/",
                        "TERM=linux",
                        "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
                        NULL };
-       char *argv[7] = {}, str_id[6];
+       char *argv[8] = {}, str_id[6];
        int ret;
 
        if (!tg_pt_gp->tg_pt_gp_usermode_helper)
@@ -1057,7 +1058,8 @@ static int core_alua_usermode_helper(struct 
t10_alua_tg_pt_gp *tg_pt_gp, int new
        argv[3] = core_alua_dump_state(tg_pt_gp->tg_pt_gp_alua_access_state);
        argv[4] = core_alua_dump_state(new_state);
        argv[5] = (explicit) ? "explicit" : "implicit";
-       argv[6] = NULL;
+       argv[6] = config_item_name(&l_dev->dev_group.cg_item);
+       argv[7] = NULL;
 
        ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC | 
UMH_KILLABLE);
        pr_debug("helper command: %s exit code %u (0x%x)\n",
@@ -1068,12 +1070,13 @@ static int core_alua_usermode_helper(struct 
t10_alua_tg_pt_gp *tg_pt_gp, int new
 
 static int core_alua_do_transition_tg_pt(
        struct t10_alua_tg_pt_gp *tg_pt_gp,
+       struct se_device *l_dev,
        int new_state,
        int explicit)
 {
        int prev_state;
 
-       if (core_alua_usermode_helper(tg_pt_gp, new_state, explicit))
+       if (core_alua_usermode_helper(tg_pt_gp, l_dev, new_state, explicit))
                return -EAGAIN;
 
        mutex_lock(&tg_pt_gp->tg_pt_gp_transition_mutex);
@@ -1181,7 +1184,7 @@ int core_alua_do_port_transition(
                 */
                l_tg_pt_gp->tg_pt_gp_alua_port = l_port;
                l_tg_pt_gp->tg_pt_gp_alua_nacl = l_nacl;
-               rc = core_alua_do_transition_tg_pt(l_tg_pt_gp,
+               rc = core_alua_do_transition_tg_pt(l_tg_pt_gp, l_dev,
                                                   new_state, explicit);
                atomic_dec_mb(&lu_gp->lu_gp_ref_cnt);
                return rc;
@@ -1230,7 +1233,7 @@ int core_alua_do_port_transition(
                         * core_alua_do_transition_tg_pt() will always return
                         * success.
                         */
-                       rc = core_alua_do_transition_tg_pt(tg_pt_gp,
+                       rc = core_alua_do_transition_tg_pt(tg_pt_gp, l_dev,
                                        new_state, explicit);
 
                        spin_lock(&dev->t10_alua.tg_pt_gps_lock);
-- 
1.8.3.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to