]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nilfs2: do not output warnings when clearing dirty buffers
authorRyusuke Konishi <konishi.ryusuke@gmail.com>
Fri, 16 Aug 2024 09:01:28 +0000 (18:01 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 2 Sep 2024 03:43:35 +0000 (20:43 -0700)
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.

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>
fs/nilfs2/inode.c
fs/nilfs2/mdt.c
fs/nilfs2/page.c
fs/nilfs2/page.h

index 7340a01d80e1fddaebee1b0267d24b11bf0f1b54..c39bc940e6f2c077affa0602d25aa6d8b03dc78d 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;
        }
 
@@ -186,7 +186,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_folio_dirty(folio, false);
+               nilfs_clear_folio_dirty(folio);
                folio_unlock(folio);
                return -EROFS;
        }
index 4f792a0ad0f0ffcacee9e3d19bb2e6a2239a629d..ceb7dc0b5badd3578d51d6216c719e100cba3a51 100644 (file)
@@ -411,7 +411,7 @@ nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc)
                 * have dirty folios that try to be flushed in background.
                 * So, here we simply discard this dirty folio.
                 */
-               nilfs_clear_folio_dirty(folio, false);
+               nilfs_clear_folio_dirty(folio);
                folio_unlock(folio);
                return -EROFS;
        }
@@ -638,10 +638,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 14e470fb88706a403f4e31954906f07492314482..7797903e014e997552358f55542df7e526133357 100644 (file)
@@ -357,9 +357,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 folio_batch fbatch;
        unsigned int i;
@@ -380,7 +379,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
                         * was acquired.  Skip processing in that case.
                         */
                        if (likely(folio->mapping == mapping))
-                               nilfs_clear_folio_dirty(folio, silent);
+                               nilfs_clear_folio_dirty(folio);
 
                        folio_unlock(folio);
                }
@@ -392,20 +391,13 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
 /**
  * nilfs_clear_folio_dirty - discard dirty folio
  * @folio: dirty folio that will be discarded
- * @silent: suppress [true] or print [false] warning messages
  */
-void nilfs_clear_folio_dirty(struct folio *folio, bool silent)
+void nilfs_clear_folio_dirty(struct folio *folio)
 {
-       struct inode *inode = folio->mapping->host;
-       struct super_block *sb = inode->i_sb;
        struct buffer_head *bh, *head;
 
        BUG_ON(!folio_test_locked(folio));
 
-       if (!silent)
-               nilfs_warn(sb, "discard dirty page: offset=%lld, ino=%lu",
-                          folio_pos(folio), inode->i_ino);
-
        folio_clear_uptodate(folio);
        folio_clear_mappedtodisk(folio);
 
@@ -419,11 +411,6 @@ void nilfs_clear_folio_dirty(struct folio *folio, bool silent)
                bh = head;
                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 7e1a2c455a100d115be1c36d2fd1460dd3b33197..64521a03a19e06f44e5f5464bb9feb36e0da828d 100644 (file)
@@ -41,8 +41,8 @@ void nilfs_folio_bug(struct folio *);
 
 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_folio_dirty(struct folio *, bool);
-void nilfs_clear_dirty_pages(struct address_space *, bool);
+void nilfs_clear_folio_dirty(struct folio *folio);
+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,