staging: lustre: mdc: deactive MDT permanently
authorwang di <di.wang@intel.com>
Thu, 27 Oct 2016 22:11:50 +0000 (18:11 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 30 Oct 2016 15:00:11 +0000 (11:00 -0400)
Add active proc entry for MDC, and mark MDC to
be inactive once the MDC is deactivated.

Signed-off-by: wang di <di.wang@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6586
Reviewed-on: http://review.whamcloud.com/14747
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/lmv/lmv_obd.c
drivers/staging/lustre/lustre/mdc/lproc_mdc.c

index 7a8d1c8..12e8b1e 100644 (file)
@@ -62,6 +62,7 @@ static void lmv_activate_target(struct lmv_obd *lmv,
 
        tgt->ltd_active = activate;
        lmv->desc.ld_active_tgt_count += (activate ? 1 : -1);
+       tgt->ltd_exp->exp_obd->obd_inactive = !activate;
 }
 
 /**
index 5fdee9e..76b9afc 100644 (file)
 #include "../include/lprocfs_status.h"
 #include "mdc_internal.h"
 
+static ssize_t active_show(struct kobject *kobj, struct attribute *attr,
+                          char *buf)
+{
+       struct obd_device *dev = container_of(kobj, struct obd_device,
+                                             obd_kobj);
+
+       return sprintf(buf, "%u\n", !dev->u.cli.cl_import->imp_deactive);
+}
+
+static ssize_t active_store(struct kobject *kobj, struct attribute *attr,
+                           const char *buffer, size_t count)
+{
+       struct obd_device *dev = container_of(kobj, struct obd_device,
+                                             obd_kobj);
+       unsigned long val;
+       int rc;
+
+       rc = kstrtoul(buffer, 10, &val);
+       if (rc)
+               return rc;
+
+       if (val < 0 || val > 1)
+               return -ERANGE;
+
+       /* opposite senses */
+       if (dev->u.cli.cl_import->imp_deactive == val) {
+               rc = ptlrpc_set_import_active(dev->u.cli.cl_import, val);
+               if (rc)
+                       count = rc;
+       } else {
+               CDEBUG(D_CONFIG, "activate %lu: ignoring repeat request\n", val);
+       }
+       return count;
+}
+LUSTRE_RW_ATTR(active);
+
 static ssize_t max_rpcs_in_flight_show(struct kobject *kobj,
                                       struct attribute *attr,
                                       char *buf)
@@ -153,6 +189,7 @@ static struct lprocfs_vars lprocfs_mdc_obd_vars[] = {
 };
 
 static struct attribute *mdc_attrs[] = {
+       &lustre_attr_active.attr,
        &lustre_attr_max_rpcs_in_flight.attr,
        &lustre_attr_max_mod_rpcs_in_flight.attr,
        &lustre_attr_max_pages_per_rpc.attr,