| title: | PATCH 09 11 writeback add some debug inode |
|
Not meant for inclusion, just to monitor what is going on while testing
this stuff.
Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx
---
mm/backing-dev.c | 43 +++++++++++++++++++++++++++++++++++++++----
1 files changed, 39 insertions(+), 4 deletions(-)
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 89d6eea..314b739 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -43,9 +43,33 @@ static void bdi_debug_init(void)
static int bdi_debug_stats_show(struct seq_file *m, void *v)
{
struct backing_dev_info *bdi = m- private;
+ struct bdi_writeback *wb;
unsigned long background_thresh;
unsigned long dirty_thresh;
unsigned long bdi_thresh;
+ unsigned long nr_dirty, nr_io, nr_more_io, nr_wb;
+ struct inode *inode;
+
+ /*
+ * inode lock is enough here, the bdi- wb_list is protected by
+ * RCU on the reader side
+ */
+ nr_wb = nr_dirty = nr_io = nr_more_io = 0;
+ spin_lock(&inode_lock);
+ list_for_each_entry(wb, &bdi- wb_list, list) {
+ nr_wb++;
+ list_for_each_entry(inode, &wb- b_dirty, i_list)
+ nr_dirty++;
+ list_for_each_entry(inode, &wb- b_io, i_list)
+ nr_io++;
+ list_for_each_entry(inode, &wb- b_more_io, i_list)
+ nr_more_io++;
+ }
+ spin_unlock(&inode_lock);
+
+ nr_dirty <<= (PAGE_CACHE_SHIFT - 10);
+ nr_io <<= (PAGE_CACHE_SHIFT - 10);
+ nr_more_io <<= (PAGE_CACHE_SHIFT - 10);
get_dirty_limits(&background_thresh, &dirty_thresh, &bdi_thresh, bdi);
@@ -55,12 +79,23 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v)
"BdiReclaimable: %8lu kB
"
"BdiDirtyThresh: %8lu kB
"
"DirtyThresh: %8lu kB
"
- "BackgroundThresh: %8lu kB
",
+ "BackgroundThresh: %8lu kB
"
+ "WriteBack threads:%8lu
"
+ "b_dirty: %8lu
"
+ "b_io: %8lu
"
+ "b_more_io: %8lu
"
+ "bdi: %8p
"
+ "bdi_list: %8u
"
+ "state: %8lx
"
+ "wb_mask: %8lx
"
+ "wb_list: %8u
"
+ "wb_cnt: %8u
",
(unsigned long) K(bdi_stat(bdi, BDI_WRITEBACK)),
(unsigned long) K(bdi_stat(bdi, BDI_RECLAIMABLE)),
- K(bdi_thresh),
- K(dirty_thresh),
- K(background_thresh));
+ K(bdi_thresh), K(dirty_thresh),
+ K(background_thresh), nr_wb, nr_dirty, nr_io, nr_more_io,
+ bdi, !list_empty(&bdi- bdi_list), bdi- state, bdi- wb_mask,
+ !list_empty(&bdi- wb_list), bdi- wb_cnt);
#undef K
return 0;
--
1.6.3.rc0.1.gf800
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at rel="nofollow" vger.kernel.org/majordomo-info.html vger.kernel.org/majordomo-info.html
|