+/**
+ * Show MDT policy for handling dirty metadata under a lock being cancelled.
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ *
+ * \retval 0 on success
+ * \retval negative value on error
+ */
+static int mdt_slc_seq_show(struct seq_file *m, void *data)
+{
+ struct obd_device *obd = m->private;
+ struct lu_target *tgt = obd->u.obt.obt_lut;
+ char *slc_states[] = {"never", "blocking", "always" };
+
+ seq_printf(m, "%s\n", slc_states[tgt->lut_sync_lock_cancel]);
+ return 0;
+}
+LPROC_SEQ_FOPS_RO(mdt_slc);
+
+/**
+ * Show MDT async commit count.
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ *
+ * \retval 0 on success
+ * \retval negative value on error
+ */
+static int mdt_async_commit_count_seq_show(struct seq_file *m, void *data)
+{
+ struct obd_device *obd = m->private;
+ struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
+
+ seq_printf(m, "%d\n", atomic_read(&mdt->mdt_async_commit_count));
+ return 0;
+}
+
+static ssize_t
+mdt_async_commit_count_seq_write(struct file *file, const char __user *buffer,
+ size_t count, loff_t *off)
+{
+ struct seq_file *m = file->private_data;
+ struct obd_device *obd = m->private;
+ struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev);
+ __s64 val;
+ int rc;
+
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+
+ if (val < INT_MIN || val > INT_MAX)
+ return -ERANGE;
+
+ atomic_set(&mdt->mdt_async_commit_count, val);
+
+ return count;
+}
+LPROC_SEQ_FOPS(mdt_async_commit_count);
+
+/**
+ * Show MDT sync count.
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ *
+ * \retval 0 on success
+ * \retval negative value on error
+ */
+static int mdt_sync_count_seq_show(struct seq_file *m, void *data)
+{
+ struct obd_device *obd = m->private;
+ struct lu_target *tgt = obd->u.obt.obt_lut;
+
+ seq_printf(m, "%d\n", atomic_read(&tgt->lut_sync_count));
+ return 0;
+}
+
+static ssize_t
+mdt_sync_count_seq_write(struct file *file, const char __user *buffer,
+ size_t count, loff_t *off)
+{
+ struct seq_file *m = file->private_data;
+ struct obd_device *obd = m->private;
+ struct lu_target *tgt = obd->u.obt.obt_lut;
+ __s64 val;
+ int rc;
+
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+
+ if (val < INT_MIN || val > INT_MAX)
+ return -ERANGE;
+
+ atomic_set(&tgt->lut_sync_count, val);
+
+ return count;
+}
+LPROC_SEQ_FOPS(mdt_sync_count);
+
+