From: Vyacheslav Dubeyko <[email protected]>
Subject: [PATCH 15/24] nilfs2: implement buffer management subsystem debugging 
output

This patch adds debugging output by means of nilfs2_debug() method
into modules that are grouped by buffer management subsystem debugging
output option (CONFIG_NILFS2_DEBUG_BUFFER_MANAGEMENT).

Signed-off-by: Vyacheslav Dubeyko <[email protected]>
CC: Ryusuke Konishi <[email protected]>
---
 fs/nilfs2/page.c |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/fs/nilfs2/page.c b/fs/nilfs2/page.c
index 0ba6798..330f172 100644
--- a/fs/nilfs2/page.c
+++ b/fs/nilfs2/page.c
@@ -47,6 +47,12 @@ __nilfs_get_page_block(struct page *page, unsigned long 
block, pgoff_t index,
        unsigned long first_block;
        struct buffer_head *bh;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu, block %lu, index %lu, "
+                       "blkbits %d, b_state %#lx\n",
+                       page->mapping->host->i_ino,
+                       block, index, blkbits, b_state);
+
        if (!page_has_buffers(page))
                create_empty_buffers(page, 1 << blkbits, b_state);
 
@@ -68,6 +74,10 @@ struct buffer_head *nilfs_grab_buffer(struct inode *inode,
        struct page *page;
        struct buffer_head *bh;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu, blkoff %lu, b_state %#lx\n",
+                       inode->i_ino, blkoff, b_state);
+
        page = grab_cache_page(mapping, index);
        if (unlikely(!page))
                return NULL;
@@ -90,6 +100,10 @@ void nilfs_forget_buffer(struct buffer_head *bh)
 {
        struct page *page = bh->b_page;
 
+       nilfs2_debug(DBG_PAGE,
+               "i_ino %lu, bh->b_blocknr %lu, bh->b_size %lu\n",
+               page->mapping->host->i_ino, bh->b_blocknr, bh->b_size);
+
        lock_buffer(bh);
        clear_buffer_nilfs_volatile(bh);
        clear_buffer_nilfs_checked(bh);
@@ -119,6 +133,10 @@ void nilfs_copy_buffer(struct buffer_head *dbh, struct 
buffer_head *sbh)
        struct page *spage = sbh->b_page, *dpage = dbh->b_page;
        struct buffer_head *bh;
 
+       nilfs2_debug(DBG_PAGE,
+                       "dbh->b_blocknr %lu, sbh->b_blocknr %lu\n",
+                       dbh->b_blocknr, sbh->b_blocknr);
+
        kaddr0 = kmap_atomic(spage);
        kaddr1 = kmap_atomic(dpage);
        memcpy(kaddr1 + bh_offset(dbh), kaddr0 + bh_offset(sbh), sbh->b_size);
@@ -157,6 +175,9 @@ int nilfs_page_buffers_clean(struct page *page)
 {
        struct buffer_head *bh, *head;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu\n", page->mapping->host->i_ino);
+
        bh = head = page_buffers(page);
        do {
                if (buffer_dirty(bh))
@@ -214,6 +235,13 @@ static void nilfs_copy_page(struct page *dst, struct page 
*src, int copy_dirty)
        struct buffer_head *dbh, *dbufs, *sbh, *sbufs;
        unsigned long mask = NILFS_BUFFER_INHERENT_BITS;
 
+       nilfs2_debug(DBG_PAGE,
+                       "ino %lu, dst offset %llu, "
+                       "src offset  %llu, copy_dirty %d\n",
+                       src->mapping->host->i_ino,
+                       page_offset(dst), page_offset(src),
+                       copy_dirty);
+
        BUG_ON(PageWriteback(dst));
 
        sbh = sbufs = page_buffers(src);
@@ -261,6 +289,9 @@ int nilfs_copy_dirty_pages(struct address_space *dmap,
        pgoff_t index = 0;
        int err = 0;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu\n", smap->host->i_ino);
+
        pagevec_init(&pvec, 0);
 repeat:
        if (!pagevec_lookup_tag(&pvec, smap, &index, PAGECACHE_TAG_DIRTY,
@@ -316,6 +347,9 @@ void nilfs_copy_back_pages(struct address_space *dmap,
        pgoff_t index = 0;
        int err;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu\n", smap->host->i_ino);
+
        pagevec_init(&pvec, 0);
 repeat:
        n = pagevec_lookup(&pvec, smap, index, PAGEVEC_SIZE);
@@ -381,6 +415,9 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, 
bool silent)
        unsigned int i;
        pgoff_t index = 0;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu\n", mapping->host->i_ino);
+
        pagevec_init(&pvec, 0);
 
        while (pagevec_lookup_tag(&pvec, mapping, &index, PAGECACHE_TAG_DIRTY,
@@ -449,6 +486,10 @@ unsigned nilfs_page_count_clean_buffers(struct page *page,
        struct buffer_head *bh, *head;
        unsigned nc = 0;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu, from %u, to %u\n",
+                       page->mapping->host->i_ino, from, to);
+
        for (bh = head = page_buffers(page), block_start = 0;
             bh != head || !block_start;
             block_start = block_end, bh = bh->b_this_page) {
@@ -462,6 +503,8 @@ unsigned nilfs_page_count_clean_buffers(struct page *page,
 void nilfs_mapping_init(struct address_space *mapping, struct inode *inode,
                        struct backing_dev_info *bdi)
 {
+       nilfs2_debug(DBG_PAGE, "i_ino %lu\n", inode->i_ino);
+
        mapping->host = inode;
        mapping->flags = 0;
        mapping_set_gfp_mask(mapping, GFP_NOFS);
@@ -485,6 +528,9 @@ int __nilfs_clear_page_dirty(struct page *page)
 {
        struct address_space *mapping = page->mapping;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu\n", page->mapping->host->i_ino);
+
        if (mapping) {
                spin_lock_irq(&mapping->tree_lock);
                if (test_bit(PG_dirty, &page->flags)) {
@@ -524,6 +570,10 @@ unsigned long nilfs_find_uncommitted_extent(struct inode 
*inode,
        struct pagevec pvec;
        struct page *page;
 
+       nilfs2_debug(DBG_PAGE,
+                       "i_ino %lu, start_blk %lu, blkoff %p\n",
+                       inode->i_ino, start_blk, blkoff);
+
        if (inode->i_mapping->nrpages == 0)
                return 0;
 
-- 
1.7.9.5



--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to