Whamcloud - gitweb
LU-10341 hsm: filter kkuc write by client UUID
[fs/lustre-release.git] / lustre / mdc / mdc_request.c
index 070286b..5fef216 100644 (file)
@@ -2158,7 +2158,8 @@ static int mdc_ioc_hsm_ct_start(struct obd_export *exp,
  * @param val KUC message (kuc_hdr + hsm_action_list)
  * @param len total length of message
  */
-static int mdc_hsm_copytool_send(size_t len, void *val)
+static int mdc_hsm_copytool_send(const struct obd_uuid *uuid,
+                                size_t len, void *val)
 {
        struct kuc_hdr          *lh = (struct kuc_hdr *)val;
        struct hsm_action_list  *hal = (struct hsm_action_list *)(lh + 1);
@@ -2184,7 +2185,7 @@ static int mdc_hsm_copytool_send(size_t len, void *val)
               lh->kuc_msglen, hal->hal_count, hal->hal_fsname);
 
        /* Broadcast to HSM listeners */
-       rc = libcfs_kkuc_group_put(KUC_GRP_HSM, lh);
+       rc = libcfs_kkuc_group_put(uuid, KUC_GRP_HSM, lh);
 
        RETURN(rc);
 }
@@ -2204,9 +2205,6 @@ static int mdc_hsm_ct_reregister(void *data, void *cb_arg)
        if (kcd == NULL || kcd->kcd_magic != KKUC_CT_DATA_MAGIC)
                return -EPROTO;
 
-       if (!obd_uuid_equals(&kcd->kcd_uuid, &imp->imp_obd->obd_uuid))
-               return 0;
-
        CDEBUG(D_HA, "%s: recover copytool registration to MDT (archive=%#x)\n",
               imp->imp_obd->obd_name, kcd->kcd_archive);
        rc = mdc_ioc_hsm_ct_register(imp, kcd->kcd_archive);
@@ -2222,8 +2220,8 @@ static int mdc_hsm_ct_reregister(void *data, void *cb_arg)
 static int mdc_kuc_reregister(struct obd_import *imp)
 {
        /* re-register HSM agents */
-       return libcfs_kkuc_group_foreach(KUC_GRP_HSM, mdc_hsm_ct_reregister,
-                                        (void *)imp);
+       return libcfs_kkuc_group_foreach(&imp->imp_obd->obd_uuid, KUC_GRP_HSM,
+                                        mdc_hsm_ct_reregister, imp);
 }
 
 static int mdc_set_info_async(const struct lu_env *env,
@@ -2262,7 +2260,8 @@ static int mdc_set_info_async(const struct lu_env *env,
                 RETURN(rc);
         }
         if (KEY_IS(KEY_HSM_COPYTOOL_SEND)) {
-                rc = mdc_hsm_copytool_send(vallen, val);
+               rc = mdc_hsm_copytool_send(&imp->imp_obd->obd_uuid, vallen,
+                                          val);
                 RETURN(rc);
         }
 
@@ -2590,11 +2589,6 @@ static int mdc_precleanup(struct obd_device *obd)
        ENTRY;
 
        osc_precleanup_common(obd);
-
-       /* Failsafe, ok if racy */
-       if (obd->obd_type->typ_refcnt <= 1)
-               libcfs_kkuc_group_rem(0, KUC_GRP_HSM);
-
        mdc_changelog_cdev_finish(obd);
 
        obd_cleanup_client_import(obd);