mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
mm: fix lockdep issues in writeback handling
Commit 2841808f35ee ("mm: remove BDI_CAP_WRITEBACK_ACCT") removed
BDI_CAP_WRITEBACK_ACCT flag and refactored code that depend on it.
Unfortunately it also moved some variable intialization out of guarded
scope in writeback handling, what triggers a true lockdep warning. Fix
this by moving initialization to the proper place.
Fixes: 2841808f35ee ("mm: remove BDI_CAP_WRITEBACK_ACCT")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
3f29d59e92
commit
ebbe7d7bb1
@ -3014,7 +3014,7 @@ bool __folio_end_writeback(struct folio *folio)
|
||||
|
||||
if (mapping && mapping_use_writeback_tags(mapping)) {
|
||||
struct inode *inode = mapping->host;
|
||||
struct bdi_writeback *wb = inode_to_wb(inode);
|
||||
struct bdi_writeback *wb;
|
||||
unsigned long flags;
|
||||
|
||||
xa_lock_irqsave(&mapping->i_pages, flags);
|
||||
@ -3022,6 +3022,7 @@ bool __folio_end_writeback(struct folio *folio)
|
||||
__xa_clear_mark(&mapping->i_pages, folio_index(folio),
|
||||
PAGECACHE_TAG_WRITEBACK);
|
||||
|
||||
wb = inode_to_wb(inode);
|
||||
wb_stat_mod(wb, WB_WRITEBACK, -nr);
|
||||
__wb_writeout_add(wb, nr);
|
||||
if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
|
||||
@ -3054,7 +3055,7 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
|
||||
if (mapping && mapping_use_writeback_tags(mapping)) {
|
||||
XA_STATE(xas, &mapping->i_pages, folio_index(folio));
|
||||
struct inode *inode = mapping->host;
|
||||
struct bdi_writeback *wb = inode_to_wb(inode);
|
||||
struct bdi_writeback *wb;
|
||||
unsigned long flags;
|
||||
bool on_wblist;
|
||||
|
||||
@ -3065,6 +3066,7 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
|
||||
on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
|
||||
|
||||
xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
|
||||
wb = inode_to_wb(inode);
|
||||
wb_stat_mod(wb, WB_WRITEBACK, nr);
|
||||
if (!on_wblist) {
|
||||
wb_inode_writeback_start(wb);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user