diff options
| -rw-r--r-- | fs/ceph/debugfs.c | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c index 98365e74cb4a..777f6ceb5259 100644 --- a/fs/ceph/debugfs.c +++ b/fs/ceph/debugfs.c | |||
| @@ -124,18 +124,48 @@ static int mdsc_show(struct seq_file *s, void *p) | |||
| 124 | return 0; | 124 | return 0; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | static int caps_show_cb(struct inode *inode, struct ceph_cap *cap, void *p) | ||
| 128 | { | ||
| 129 | struct seq_file *s = p; | ||
| 130 | |||
| 131 | seq_printf(s, "0x%-17lx%-17s%-17s\n", inode->i_ino, | ||
| 132 | ceph_cap_string(cap->issued), | ||
| 133 | ceph_cap_string(cap->implemented)); | ||
| 134 | return 0; | ||
| 135 | } | ||
| 136 | |||
| 127 | static int caps_show(struct seq_file *s, void *p) | 137 | static int caps_show(struct seq_file *s, void *p) |
| 128 | { | 138 | { |
| 129 | struct ceph_fs_client *fsc = s->private; | 139 | struct ceph_fs_client *fsc = s->private; |
| 130 | int total, avail, used, reserved, min; | 140 | struct ceph_mds_client *mdsc = fsc->mdsc; |
| 141 | int total, avail, used, reserved, min, i; | ||
| 131 | 142 | ||
| 132 | ceph_reservation_status(fsc, &total, &avail, &used, &reserved, &min); | 143 | ceph_reservation_status(fsc, &total, &avail, &used, &reserved, &min); |
| 133 | seq_printf(s, "total\t\t%d\n" | 144 | seq_printf(s, "total\t\t%d\n" |
| 134 | "avail\t\t%d\n" | 145 | "avail\t\t%d\n" |
| 135 | "used\t\t%d\n" | 146 | "used\t\t%d\n" |
| 136 | "reserved\t%d\n" | 147 | "reserved\t%d\n" |
| 137 | "min\t%d\n", | 148 | "min\t\t%d\n\n", |
| 138 | total, avail, used, reserved, min); | 149 | total, avail, used, reserved, min); |
| 150 | seq_printf(s, "ino issued implemented\n"); | ||
| 151 | seq_printf(s, "-----------------------------------------------\n"); | ||
| 152 | |||
| 153 | mutex_lock(&mdsc->mutex); | ||
| 154 | for (i = 0; i < mdsc->max_sessions; i++) { | ||
| 155 | struct ceph_mds_session *session; | ||
| 156 | |||
| 157 | session = __ceph_lookup_mds_session(mdsc, i); | ||
| 158 | if (!session) | ||
| 159 | continue; | ||
| 160 | mutex_unlock(&mdsc->mutex); | ||
| 161 | mutex_lock(&session->s_mutex); | ||
| 162 | ceph_iterate_session_caps(session, caps_show_cb, s); | ||
| 163 | mutex_unlock(&session->s_mutex); | ||
| 164 | ceph_put_mds_session(session); | ||
| 165 | mutex_lock(&mdsc->mutex); | ||
| 166 | } | ||
| 167 | mutex_unlock(&mdsc->mutex); | ||
| 168 | |||
| 139 | return 0; | 169 | return 0; |
| 140 | } | 170 | } |
| 141 | 171 | ||
