Whamcloud - gitweb
LU-5577 osc: change cl_extent_tax and *grants to unsigned
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_lproc.c
index ddaa169..6c4d47d 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -38,7 +38,7 @@
  * Author: Mikhail Pershin <tappro@sun.com>
  */
 
-#define DEBUG_SUBSYSTEM S_CLASS
+#define DEBUG_SUBSYSTEM S_OSD
 
 #include <lprocfs_status.h>
 #include <lustre/lustre_idl.h>
@@ -154,7 +154,8 @@ static void brw_stats_show(struct seq_file *seq, struct brw_stats *brw_stats)
 
        display_brw_stats(seq, "I/O time (1/1000s)", "ios",
                          &brw_stats->hist[BRW_R_IO_TIME],
-                         &brw_stats->hist[BRW_W_IO_TIME], 1000 / HZ);
+                         &brw_stats->hist[BRW_W_IO_TIME],
+                         jiffies_to_msecs(1000) / MSEC_PER_SEC);
 
         display_brw_stats(seq, "disk I/O size", "ios",
                           &brw_stats->hist[BRW_R_DISK_IOSIZE],
@@ -402,6 +403,79 @@ ldiskfs_osd_auto_scrub_seq_write(struct file *file, const char *buffer,
 }
 LPROC_SEQ_FOPS(ldiskfs_osd_auto_scrub);
 
+static int ldiskfs_osd_full_scrub_ratio_seq_show(struct seq_file *m, void *data)
+{
+       struct osd_device *dev = osd_dt_dev((struct dt_device *)m->private);
+
+       LASSERT(dev != NULL);
+       if (unlikely(dev->od_mnt == NULL))
+               return -EINPROGRESS;
+
+       return seq_printf(m, LPU64"\n", dev->od_full_scrub_ratio);
+}
+
+static ssize_t
+ldiskfs_osd_full_scrub_ratio_seq_write(struct file *file, const char *buffer,
+                                      size_t count, loff_t *off)
+{
+       struct seq_file   *m = file->private_data;
+       struct dt_device  *dt = m->private;
+       struct osd_device *dev = osd_dt_dev(dt);
+       int val, rc;
+
+       LASSERT(dev != NULL);
+       if (unlikely(dev->od_mnt == NULL))
+               return -EINPROGRESS;
+
+       rc = lprocfs_write_helper(buffer, count, &val);
+       if (rc != 0)
+               return rc;
+
+       if (val < 0)
+               return -EINVAL;
+
+       dev->od_full_scrub_ratio = val;
+       return count;
+}
+LPROC_SEQ_FOPS(ldiskfs_osd_full_scrub_ratio);
+
+static int ldiskfs_osd_full_scrub_speed_seq_show(struct seq_file *m, void *data)
+{
+       struct osd_device *dev = osd_dt_dev((struct dt_device *)m->private);
+
+       LASSERT(dev != NULL);
+       if (unlikely(dev->od_mnt == NULL))
+               return -EINPROGRESS;
+
+       return seq_printf(m, LPU64" (bad OI mappings/minute)\n",
+                         dev->od_full_scrub_speed);
+}
+
+static ssize_t
+ldiskfs_osd_full_scrub_speed_seq_write(struct file *file, const char *buffer,
+                                      size_t count, loff_t *off)
+{
+       struct seq_file   *m = file->private_data;
+       struct dt_device  *dt = m->private;
+       struct osd_device *dev = osd_dt_dev(dt);
+       int val, rc;
+
+       LASSERT(dev != NULL);
+       if (unlikely(dev->od_mnt == NULL))
+               return -EINPROGRESS;
+
+       rc = lprocfs_write_helper(buffer, count, &val);
+       if (rc != 0)
+               return rc;
+
+       if (val < 0)
+               return -EINVAL;
+
+       dev->od_full_scrub_speed = val;
+       return count;
+}
+LPROC_SEQ_FOPS(ldiskfs_osd_full_scrub_speed);
+
 static int
 ldiskfs_osd_track_declares_assert_seq_show(struct seq_file *m, void *data)
 {
@@ -438,7 +512,7 @@ static int ldiskfs_osd_oi_scrub_seq_show(struct seq_file *m, void *data)
 }
 LPROC_SEQ_FOPS_RO(ldiskfs_osd_oi_scrub);
 
-int ldiskfs_osd_readcache_seq_show(struct seq_file *m, void *data)
+static int ldiskfs_osd_readcache_seq_show(struct seq_file *m, void *data)
 {
        struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private);
 
@@ -449,7 +523,7 @@ int ldiskfs_osd_readcache_seq_show(struct seq_file *m, void *data)
        return seq_printf(m, LPU64"\n", osd->od_readcache_max_filesize);
 }
 
-ssize_t
+static ssize_t
 ldiskfs_osd_readcache_seq_write(struct file *file, const char *buffer,
                                size_t count, loff_t *off)
 {
@@ -537,6 +611,10 @@ struct lprocfs_seq_vars lprocfs_osd_obd_vars[] = {
          .fops =       &ldiskfs_osd_pdo_fops           },
        { .name =       "auto_scrub",
          .fops =       &ldiskfs_osd_auto_scrub_fops    },
+       { .name =       "full_scrub_ratio",
+         .fops =       &ldiskfs_osd_full_scrub_ratio_fops      },
+       { .name =       "full_scrub_speed",
+         .fops =       &ldiskfs_osd_full_scrub_speed_fops      },
        { .name =       "oi_scrub",
          .fops =       &ldiskfs_osd_oi_scrub_fops      },
        { .name =       "read_cache_enable",