Loading mm/backing-dev.c +34 −4 Original line number Diff line number Diff line Loading @@ -52,9 +52,29 @@ 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); get_dirty_limits(&background_thresh, &dirty_thresh, &bdi_thresh, bdi); Loading @@ -64,12 +84,22 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v) "BdiReclaimable: %8lu kB\n" "BdiDirtyThresh: %8lu kB\n" "DirtyThresh: %8lu kB\n" "BackgroundThresh: %8lu kB\n", "BackgroundThresh: %8lu kB\n" "WriteBack threads:%8lu\n" "b_dirty: %8lu\n" "b_io: %8lu\n" "b_more_io: %8lu\n" "bdi_list: %8u\n" "state: %8lx\n" "wb_mask: %8lx\n" "wb_list: %8u\n" "wb_cnt: %8u\n", (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, !list_empty(&bdi->bdi_list), bdi->state, bdi->wb_mask, !list_empty(&bdi->wb_list), bdi->wb_cnt); #undef K return 0; Loading Loading
mm/backing-dev.c +34 −4 Original line number Diff line number Diff line Loading @@ -52,9 +52,29 @@ 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); get_dirty_limits(&background_thresh, &dirty_thresh, &bdi_thresh, bdi); Loading @@ -64,12 +84,22 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v) "BdiReclaimable: %8lu kB\n" "BdiDirtyThresh: %8lu kB\n" "DirtyThresh: %8lu kB\n" "BackgroundThresh: %8lu kB\n", "BackgroundThresh: %8lu kB\n" "WriteBack threads:%8lu\n" "b_dirty: %8lu\n" "b_io: %8lu\n" "b_more_io: %8lu\n" "bdi_list: %8u\n" "state: %8lx\n" "wb_mask: %8lx\n" "wb_list: %8u\n" "wb_cnt: %8u\n", (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, !list_empty(&bdi->bdi_list), bdi->state, bdi->wb_mask, !list_empty(&bdi->wb_list), bdi->wb_cnt); #undef K return 0; Loading