buffer: use b_folio in mark_buffer_dirty()
Removes about four calls to compound_head(). Two of them are inline which removes 132 bytes from the kernel text. Link: https://lkml.kernel.org/r/20221215214402.3522366-8-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
c10d91194d
commit
cf1d3417e6
12
fs/buffer.c
12
fs/buffer.c
|
@ -1095,16 +1095,16 @@ void mark_buffer_dirty(struct buffer_head *bh)
|
|||
}
|
||||
|
||||
if (!test_set_buffer_dirty(bh)) {
|
||||
struct page *page = bh->b_page;
|
||||
struct folio *folio = bh->b_folio;
|
||||
struct address_space *mapping = NULL;
|
||||
|
||||
lock_page_memcg(page);
|
||||
if (!TestSetPageDirty(page)) {
|
||||
mapping = page_mapping(page);
|
||||
folio_memcg_lock(folio);
|
||||
if (!folio_test_set_dirty(folio)) {
|
||||
mapping = folio->mapping;
|
||||
if (mapping)
|
||||
__set_page_dirty(page, mapping, 0);
|
||||
__folio_mark_dirty(folio, mapping, 0);
|
||||
}
|
||||
unlock_page_memcg(page);
|
||||
folio_memcg_unlock(folio);
|
||||
if (mapping)
|
||||
__mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue