Commit 299910dc authored by Ryusuke Konishi's avatar Ryusuke Konishi Committed by Andrew Morton

nilfs2: do not output warnings when clearing dirty buffers

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.comSigned-off-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 79785f78
...@@ -162,7 +162,7 @@ static int nilfs_writepages(struct address_space *mapping, ...@@ -162,7 +162,7 @@ static int nilfs_writepages(struct address_space *mapping,
int err = 0; int err = 0;
if (sb_rdonly(inode->i_sb)) { if (sb_rdonly(inode->i_sb)) {
nilfs_clear_dirty_pages(mapping, false); nilfs_clear_dirty_pages(mapping);
return -EROFS; return -EROFS;
} }
...@@ -186,7 +186,7 @@ static int nilfs_writepage(struct page *page, struct writeback_control *wbc) ...@@ -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. * have dirty pages that try to be flushed in background.
* So, here we simply discard this dirty page. * So, here we simply discard this dirty page.
*/ */
nilfs_clear_folio_dirty(folio, false); nilfs_clear_folio_dirty(folio);
folio_unlock(folio); folio_unlock(folio);
return -EROFS; return -EROFS;
} }
......
...@@ -411,7 +411,7 @@ nilfs_mdt_write_page(struct page *page, struct writeback_control *wbc) ...@@ -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. * have dirty folios that try to be flushed in background.
* So, here we simply discard this dirty folio. * So, here we simply discard this dirty folio.
*/ */
nilfs_clear_folio_dirty(folio, false); nilfs_clear_folio_dirty(folio);
folio_unlock(folio); folio_unlock(folio);
return -EROFS; return -EROFS;
} }
...@@ -638,10 +638,10 @@ void nilfs_mdt_restore_from_shadow_map(struct inode *inode) ...@@ -638,10 +638,10 @@ void nilfs_mdt_restore_from_shadow_map(struct inode *inode)
if (mi->mi_palloc_cache) if (mi->mi_palloc_cache)
nilfs_palloc_clear_cache(inode); 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_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_copy_back_pages(ii->i_assoc_inode->i_mapping,
NILFS_I(shadow->inode)->i_assoc_inode->i_mapping); NILFS_I(shadow->inode)->i_assoc_inode->i_mapping);
......
...@@ -357,9 +357,8 @@ void nilfs_copy_back_pages(struct address_space *dmap, ...@@ -357,9 +357,8 @@ void nilfs_copy_back_pages(struct address_space *dmap,
/** /**
* nilfs_clear_dirty_pages - discard dirty pages in address space * nilfs_clear_dirty_pages - discard dirty pages in address space
* @mapping: address space with dirty pages for discarding * @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; struct folio_batch fbatch;
unsigned int i; unsigned int i;
...@@ -380,7 +379,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent) ...@@ -380,7 +379,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
* was acquired. Skip processing in that case. * was acquired. Skip processing in that case.
*/ */
if (likely(folio->mapping == mapping)) if (likely(folio->mapping == mapping))
nilfs_clear_folio_dirty(folio, silent); nilfs_clear_folio_dirty(folio);
folio_unlock(folio); folio_unlock(folio);
} }
...@@ -392,20 +391,13 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent) ...@@ -392,20 +391,13 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
/** /**
* nilfs_clear_folio_dirty - discard dirty folio * nilfs_clear_folio_dirty - discard dirty folio
* @folio: dirty folio that will be discarded * @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; struct buffer_head *bh, *head;
BUG_ON(!folio_test_locked(folio)); 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_uptodate(folio);
folio_clear_mappedtodisk(folio); folio_clear_mappedtodisk(folio);
...@@ -419,11 +411,6 @@ void nilfs_clear_folio_dirty(struct folio *folio, bool silent) ...@@ -419,11 +411,6 @@ void nilfs_clear_folio_dirty(struct folio *folio, bool silent)
bh = head; bh = head;
do { do {
lock_buffer(bh); 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); set_mask_bits(&bh->b_state, clear_bits, 0);
unlock_buffer(bh); unlock_buffer(bh);
} while (bh = bh->b_this_page, bh != head); } while (bh = bh->b_this_page, bh != head);
......
...@@ -41,8 +41,8 @@ void nilfs_folio_bug(struct folio *); ...@@ -41,8 +41,8 @@ void nilfs_folio_bug(struct folio *);
int nilfs_copy_dirty_pages(struct address_space *, struct address_space *); int nilfs_copy_dirty_pages(struct address_space *, struct address_space *);
void nilfs_copy_back_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_folio_dirty(struct folio *folio);
void nilfs_clear_dirty_pages(struct address_space *, bool); void nilfs_clear_dirty_pages(struct address_space *mapping);
unsigned int nilfs_page_count_clean_buffers(struct page *, unsigned int, unsigned int nilfs_page_count_clean_buffers(struct page *, unsigned int,
unsigned int); unsigned int);
unsigned long nilfs_find_uncommitted_extent(struct inode *inode, unsigned long nilfs_find_uncommitted_extent(struct inode *inode,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment