+static int osc_unstable_stats_seq_show(struct seq_file *m, void *v)
+{
+ struct obd_device *dev = m->private;
+ struct client_obd *cli = &dev->u.cli;
+ long pages;
+ int mb;
+
+ pages = atomic_long_read(&cli->cl_unstable_count);
+ mb = (pages * PAGE_CACHE_SIZE) >> 20;
+
+ return seq_printf(m, "unstable_pages: %20ld\n"
+ "unstable_mb: %10d\n",
+ pages, mb);
+}
+LPROC_SEQ_FOPS_RO(osc_unstable_stats);
+
+LPROC_SEQ_FOPS_RO_TYPE(osc, uuid);
+LPROC_SEQ_FOPS_RO_TYPE(osc, connect_flags);
+LPROC_SEQ_FOPS_RO_TYPE(osc, blksize);
+LPROC_SEQ_FOPS_RO_TYPE(osc, kbytestotal);
+LPROC_SEQ_FOPS_RO_TYPE(osc, kbytesfree);
+LPROC_SEQ_FOPS_RO_TYPE(osc, kbytesavail);
+LPROC_SEQ_FOPS_RO_TYPE(osc, filestotal);
+LPROC_SEQ_FOPS_RO_TYPE(osc, filesfree);
+LPROC_SEQ_FOPS_RO_TYPE(osc, server_uuid);
+LPROC_SEQ_FOPS_RO_TYPE(osc, conn_uuid);
+LPROC_SEQ_FOPS_RO_TYPE(osc, timeouts);
+LPROC_SEQ_FOPS_RO_TYPE(osc, state);
+
+LPROC_SEQ_FOPS_WO_TYPE(osc, ping);
+
+LPROC_SEQ_FOPS_RW_TYPE(osc, import);
+LPROC_SEQ_FOPS_RW_TYPE(osc, pinger_recov);
+
+struct lprocfs_seq_vars lprocfs_osc_obd_vars[] = {
+ { .name = "uuid",
+ .fops = &osc_uuid_fops },
+ { .name = "ping",
+ .fops = &osc_ping_fops,
+ .proc_mode = 0222 },
+ { .name = "connect_flags",
+ .fops = &osc_connect_flags_fops },
+ { .name = "blocksize",
+ .fops = &osc_blksize_fops },
+ { .name = "kbytestotal",
+ .fops = &osc_kbytestotal_fops },
+ { .name = "kbytesfree",
+ .fops = &osc_kbytesfree_fops },
+ { .name = "kbytesavail",
+ .fops = &osc_kbytesavail_fops },
+ { .name = "filestotal",
+ .fops = &osc_filestotal_fops },
+ { .name = "filesfree",
+ .fops = &osc_filesfree_fops },
+ { .name = "ost_server_uuid",
+ .fops = &osc_server_uuid_fops },
+ { .name = "ost_conn_uuid",
+ .fops = &osc_conn_uuid_fops },
+ { .name = "active",
+ .fops = &osc_active_fops },
+ { .name = "max_pages_per_rpc",
+ .fops = &osc_obd_max_pages_per_rpc_fops },
+ { .name = "max_rpcs_in_flight",
+ .fops = &osc_max_rpcs_in_flight_fops },
+ { .name = "destroys_in_flight",
+ .fops = &osc_destroys_in_flight_fops },
+ { .name = "max_dirty_mb",
+ .fops = &osc_max_dirty_mb_fops },
+ { .name = "osc_cached_mb",
+ .fops = &osc_cached_mb_fops },
+ { .name = "cur_dirty_bytes",
+ .fops = &osc_cur_dirty_bytes_fops },
+ { .name = "cur_grant_bytes",
+ .fops = &osc_cur_grant_bytes_fops },
+ { .name = "cur_lost_grant_bytes",
+ .fops = &osc_cur_lost_grant_bytes_fops },
+ { .name = "grant_shrink_interval",
+ .fops = &osc_grant_shrink_interval_fops },
+ { .name = "checksums",
+ .fops = &osc_checksum_fops },
+ { .name = "checksum_type",
+ .fops = &osc_checksum_type_fops },
+ { .name = "resend_count",
+ .fops = &osc_resend_count_fops },
+ { .name = "timeouts",
+ .fops = &osc_timeouts_fops },
+ { .name = "contention_seconds",
+ .fops = &osc_contention_seconds_fops },
+ { .name = "lockless_truncate",
+ .fops = &osc_lockless_truncate_fops },
+ { .name = "import",
+ .fops = &osc_import_fops },
+ { .name = "state",
+ .fops = &osc_state_fops },
+ { .name = "pinger_recov",
+ .fops = &osc_pinger_recov_fops },
+ { .name = "unstable_stats",
+ .fops = &osc_unstable_stats_fops },
+ { 0 }
+};