+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osp_device *osp = dt2osp_dev(dt);
+
+ return sprintf(buf, "%u\n",
+ atomic_read(&osp->opd_sync_rpcs_in_progress) +
+ atomic_read(&osp->opd_sync_changes));
+}
+LUSTRE_RO_ATTR(destroys_in_flight);
+
+/**
+ * Show changes synced from previous mount
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ * \retval 0 on success
+ * \retval negative number on error
+ */
+static ssize_t old_sync_processed_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
+{
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osp_device *osp = dt2osp_dev(dt);
+
+ return sprintf(buf, "%d\n", osp->opd_sync_prev_done);
+}
+LUSTRE_RO_ATTR(old_sync_processed);
+
+/**
+ * Show maximum number of RPCs in flight
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ * \retval 0 on success
+ * \retval negative number on error
+ */
+static ssize_t lfsck_max_rpcs_in_flight_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
+{
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct lu_device *lu = dt2lu_dev(dt);
+ struct obd_device *obd = lu->ld_obd;
+ u32 max;
+
+ max = obd_get_max_rpcs_in_flight(&obd->u.cli);
+ return sprintf(buf, "%u\n", max);
+}
+
+/**
+ * Change maximum number of RPCs in flight
+ *
+ * \param[in] file proc file
+ * \param[in] buffer string which represents maximum number of RPCs in flight
+ * \param[in] count \a buffer length
+ * \param[in] off unused for single entry
+ * \retval \a count on success
+ * \retval negative number on error
+ */
+static ssize_t lfsck_max_rpcs_in_flight_store(struct kobject *kobj,
+ struct attribute *attr,
+ const char *buffer,
+ size_t count)
+{
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct lu_device *lu = dt2lu_dev(dt);
+ struct obd_device *obd = lu->ld_obd;
+ unsigned int val;
+ int rc;
+
+ rc = kstrtouint(buffer, 0, &val);
+ if (rc)
+ return rc;
+
+ rc = obd_set_max_rpcs_in_flight(&obd->u.cli, val);
+ return rc ? rc : count;
+}
+LUSTRE_RW_ATTR(lfsck_max_rpcs_in_flight);
+
+ssize_t ping_show(struct kobject *kobj, struct attribute *attr,
+ char *buffer)
+{
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct lu_device *lu = dt2lu_dev(dt);
+ struct obd_device *obd = lu->ld_obd;
+ int rc;
+
+ LPROCFS_CLIMP_CHECK(obd);
+ rc = ptlrpc_obd_ping(obd);
+ LPROCFS_CLIMP_EXIT(obd);
+
+ return rc;
+}
+LUSTRE_RO_ATTR(ping);
+
+ssize_t osp_conn_uuid_show(struct kobject *kobj, struct attribute *attr,
+ char *buf)
+{
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct lu_device *lu = dt2lu_dev(dt);
+ struct obd_device *obd = lu->ld_obd;
+ struct ptlrpc_connection *conn;
+ ssize_t count;
+
+ LPROCFS_CLIMP_CHECK(obd);
+ conn = obd->u.cli.cl_import->imp_connection;
+ if (conn && obd->u.cli.cl_import)
+ count = sprintf(buf, "%s\n", conn->c_remote_uuid.uuid);
+ else
+ count = sprintf(buf, "%s\n", "<none>");
+
+ LPROCFS_CLIMP_EXIT(obd);
+ return count;
+}
+
+LUSTRE_ATTR(ost_conn_uuid, 0444, osp_conn_uuid_show, NULL);
+LUSTRE_ATTR(mdt_conn_uuid, 0444, osp_conn_uuid_show, NULL);
+
+LDEBUGFS_SEQ_FOPS_RO_TYPE(osp, connect_flags);
+LDEBUGFS_SEQ_FOPS_RO_TYPE(osp, server_uuid);
+LDEBUGFS_SEQ_FOPS_RO_TYPE(osp, timeouts);
+
+LPROC_SEQ_FOPS_RW_TYPE(osp, import);
+LDEBUGFS_SEQ_FOPS_RO_TYPE(osp, state);
+
+/**
+ * Show high watermark (in megabytes). If available free space at OST is grater
+ * than high watermark and object allocation for OST is disabled, enable it.
+ *
+ * \param[in] m seq_file handle
+ * \param[in] data unused for single entry
+ * \retval 0 on success
+ * \retval negative number on error
+ */
+static int osp_reserved_mb_high_seq_show(struct seq_file *m, void *data)
+{
+ struct obd_device *dev = m->private;