]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nilfs2: do not output warnings when clearing dirty buffers
authorRyusuke Konishi <konishi.ryusuke@gmail.com>
Fri, 7 Feb 2025 14:23:47 +0000 (23:23 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Mar 2025 11:47:23 +0000 (12:47 +0100)
commit 299910dcb4525ac0274f3efa9527876315ba4f67 upstream.

After detecting file system corruption and degrading to a read-only mount,
dirty folios and buffers in the page cache are cleared, and a large number
of warnings are output at that time, often filling up the kernel log.

In this case, since the degrading to a read-only mount is output to the
kernel log, these warnings are not very meaningful, and are rather a
nuisance in system management and debugging.

The related nilfs2-specific page/folio routines have a silent argument
that suppresses the warning output, but since it is not currently used
meaningfully, remove both the silent argument and the warning output.

[konishi.ryusuke@gmail.com: adjusted for page/folio conversion]
Link: https://lkml.kernel.org/r/20240816090128.4561-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Stable-dep-of: ca76bb226bf4 ("nilfs2: do not force clear folio if buffer is referenced")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nilfs2/inode.c
fs/nilfs2/mdt.c
fs/nilfs2/page.c
fs/nilfs2/page.h

index 7203c8f1211138f04f59fe88678dd1308167233d..b7873d2fb4eff158f95683a8bb0efc2286b7a268 100644 (file)
@@ -162,7 +162,7 @@ static int nilfs_writepages(struct address_space *mapping,
        int err = 0;
 
        if (sb_rdonly(inode->i_sb)) {
-               nilfs_clear_dirty_pages(mapping, false);
+               nilfs_clear_dirty_pages(mapping);
                return -EROFS;
        }
 
@@ -185,7 +185,7 @@ static int nilfs_writepage(struct page *page, struct writeback_control *wbc)
                 * have dirty pages that try to be flushed in background.
                 * So, here we simply discard this dirty page.
                 */
-               nilfs_clear_dirty_page(page, false);
+               nilfs_clear_dirty_page(page);
                unlock_page(page);
                return -EROFS;
        }
index c1f9649164897b48d55993ddb26d64e59641df05..1a907acc701d70f1bc34f7eb5592bbe0988d4701 100644 (file)
@@ -410,7 +410,7 @@ nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc)
                 * have dirty pages that try to be flushed in background.
                 * So, here we simply discard this dirty page.
                 */
-               nilfs_clear_dirty_page(page, false);
+               nilfs_clear_dirty_page(page);
                unlock_page(page);
                return -EROFS;
        }
@@ -631,10 +631,10 @@ void nilfs_mdt_restore_from_shadow_map(struct inode *inode)
        if (mi->mi_palloc_cache)
                nilfs_palloc_clear_cache(inode);
 
-       nilfs_clear_dirty_pages(inode->i_mapping, true);
+       nilfs_clear_dirty_pages(inode->i_mapping);
        nilfs_copy_back_pages(inode->i_mapping, shadow->inode->i_mapping);
 
-       nilfs_clear_dirty_pages(ii->i_assoc_inode->i_mapping, true);
+       nilfs_clear_dirty_pages(ii->i_assoc_inode->i_mapping);
        nilfs_copy_back_pages(ii->i_assoc_inode->i_mapping,
                              NILFS_I(shadow->inode)->i_assoc_inode->i_mapping);
 
index d2d6d5c761e8db60931562c02058e6d32d0ecac5..93f24fa3ab1077b782e84bcf16d31924ec554e81 100644 (file)
@@ -354,9 +354,8 @@ repeat:
 /**
  * nilfs_clear_dirty_pages - discard dirty pages in address space
  * @mapping: address space with dirty pages for discarding
- * @silent: suppress [true] or print [false] warning messages
  */
-void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
+void nilfs_clear_dirty_pages(struct address_space *mapping)
 {
        struct pagevec pvec;
        unsigned int i;
@@ -377,7 +376,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
                         * was acquired.  Skip processing in that case.
                         */
                        if (likely(page->mapping == mapping))
-                               nilfs_clear_dirty_page(page, silent);
+                               nilfs_clear_dirty_page(page);
 
                        unlock_page(page);
                }
@@ -389,19 +388,11 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
 /**
  * nilfs_clear_dirty_page - discard dirty page
  * @page: dirty page that will be discarded
- * @silent: suppress [true] or print [false] warning messages
  */
-void nilfs_clear_dirty_page(struct page *page, bool silent)
+void nilfs_clear_dirty_page(struct page *page)
 {
-       struct inode *inode = page->mapping->host;
-       struct super_block *sb = inode->i_sb;
-
        BUG_ON(!PageLocked(page));
 
-       if (!silent)
-               nilfs_warn(sb, "discard dirty page: offset=%lld, ino=%lu",
-                          page_offset(page), inode->i_ino);
-
        ClearPageUptodate(page);
        ClearPageMappedToDisk(page);
        ClearPageChecked(page);
@@ -417,11 +408,6 @@ void nilfs_clear_dirty_page(struct page *page, bool silent)
                bh = head = page_buffers(page);
                do {
                        lock_buffer(bh);
-                       if (!silent)
-                               nilfs_warn(sb,
-                                          "discard dirty block: blocknr=%llu, size=%zu",
-                                          (u64)bh->b_blocknr, bh->b_size);
-
                        set_mask_bits(&bh->b_state, clear_bits, 0);
                        unlock_buffer(bh);
                } while (bh = bh->b_this_page, bh != head);
index 62b9bb469e92f3e58bd2378a8da979acb8364466..a5b9b5a457ab293db9f3f93da4276cc6e2d00d66 100644 (file)
@@ -41,8 +41,8 @@ void nilfs_page_bug(struct page *);
 
 int nilfs_copy_dirty_pages(struct address_space *, struct address_space *);
 void nilfs_copy_back_pages(struct address_space *, struct address_space *);
-void nilfs_clear_dirty_page(struct page *, bool);
-void nilfs_clear_dirty_pages(struct address_space *, bool);
+void nilfs_clear_dirty_page(struct page *page);
+void nilfs_clear_dirty_pages(struct address_space *mapping);
 void nilfs_mapping_init(struct address_space *mapping, struct inode *inode);
 unsigned int nilfs_page_count_clean_buffers(struct page *, unsigned int,
                                            unsigned int);