Whamcloud - gitweb
LU-10193 osd-ldiskfs: backup index object with plain format
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_lproc.c
index 8b018cf..0c93d27 100644 (file)
@@ -37,7 +37,6 @@
 #define DEBUG_SUBSYSTEM S_OSD
 
 #include <lprocfs_status.h>
-#include <lustre/lustre_idl.h>
 
 #include "osd_internal.h"
 
@@ -351,7 +350,7 @@ lprocfs_osd_force_sync_seq_write(struct file *file, const char __user *buffer,
 
        return rc == 0 ? count : rc;
 }
-LPROC_SEQ_FOPS_WO_TYPE(ldiskfs, osd_force_sync);
+LPROC_SEQ_FOPS_WR_ONLY(ldiskfs, osd_force_sync);
 
 static int ldiskfs_osd_pdo_seq_show(struct seq_file *m, void *data)
 {
@@ -384,7 +383,7 @@ static int ldiskfs_osd_auto_scrub_seq_show(struct seq_file *m, void *data)
        if (unlikely(dev->od_mnt == NULL))
                return -EINPROGRESS;
 
-       seq_printf(m, "%d\n", !dev->od_noscrub);
+       seq_printf(m, "%lld\n", dev->od_auto_scrub_interval);
        return 0;
 }
 
@@ -406,7 +405,7 @@ ldiskfs_osd_auto_scrub_seq_write(struct file *file, const char __user *buffer,
        if (rc)
                return rc;
 
-       dev->od_noscrub = !val;
+       dev->od_auto_scrub_interval = val;
        return count;
 }
 LPROC_SEQ_FOPS(ldiskfs_osd_auto_scrub);
@@ -524,7 +523,8 @@ static int ldiskfs_osd_oi_scrub_seq_show(struct seq_file *m, void *data)
        if (unlikely(dev->od_mnt == NULL))
                return -EINPROGRESS;
 
-       return osd_scrub_dump(m, dev);
+       osd_scrub_dump(m, dev);
+       return 0;
 }
 LPROC_SEQ_FOPS_RO(ldiskfs_osd_oi_scrub);
 
@@ -645,6 +645,41 @@ int osd_register_proc_index_in_idif(struct osd_device *osd)
 }
 #endif
 
+static int ldiskfs_osd_index_backup_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;
+
+       seq_printf(m, "%d\n", dev->od_index_backup_policy);
+       return 0;
+}
+
+static ssize_t ldiskfs_osd_index_backup_seq_write(struct file *file,
+                                                 const char __user *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);
+       __s64 val;
+       int rc;
+
+       LASSERT(dev != NULL);
+       if (unlikely(dev->od_mnt == NULL))
+               return -EINPROGRESS;
+
+       rc = lprocfs_str_to_s64(buffer, count, &val);
+       if (rc)
+               return rc;
+
+       dev->od_index_backup_policy = val;
+       return count;
+}
+LPROC_SEQ_FOPS(ldiskfs_osd_index_backup);
+
 LPROC_SEQ_FOPS_RO_TYPE(ldiskfs, dt_blksize);
 LPROC_SEQ_FOPS_RO_TYPE(ldiskfs, dt_kbytestotal);
 LPROC_SEQ_FOPS_RO_TYPE(ldiskfs, dt_kbytesfree);
@@ -687,6 +722,8 @@ struct lprocfs_vars lprocfs_osd_obd_vars[] = {
          .fops =       &ldiskfs_osd_wcache_fops        },
        { .name =       "readcache_max_filesize",
          .fops =       &ldiskfs_osd_readcache_fops     },
+       { .name =       "index_backup",
+         .fops =       &ldiskfs_osd_index_backup_fops  },
        { NULL }
 };