]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nilfs2: do not output warnings when clearing dirty buffers
authorRyusuke Konishi <konishi.ryusuke@gmail.com>
Thu, 6 Feb 2025 18:14:30 +0000 (03:14 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Feb 2025 12:50:10 +0000 (13:50 +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 0ba855ed548ea5ba37f0281a87270c849d38d66b..452fb23d2e4c429e1e294c91cc362b5de4fec21f 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 d0808953296ac884f1ac35d9e7aa582478c480fb..233954e22448736814c05e93b1a7932217155800 100644 (file)
@@ -411,7 +411,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;
        }
@@ -634,10 +634,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 b4e2192e87967f97e917c4a945ebfa6ace195808..a5ff408f2e43ae854a4f1aed2447698e4737ef81 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 21ddcdd4d63e553fa5da1e8fa93d805e5cea57c8..f5432f6a2fb6fe3c6237baac2cb73fb53ad5d28c 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);
 unsigned int nilfs_page_count_clean_buffers(struct page *, unsigned int,
                                            unsigned int);
 unsigned long nilfs_find_uncommitted_extent(struct inode *inode,