mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
mm: fix lockdep issues in writeback handling
Commit2841808f35("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:2841808f35("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
1 changed files with 4 additions and 2 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue