Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

nilfs2: convert nilfs_segctor_prepare_write to use folios

Use the new folio APIs, saving 17 hidden calls to compound_head().

Link: https://lkml.kernel.org/r/20231114084436.2755-11-konishi.ryusuke@gmail.com
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
ff5710c3 6609e235

+29 -29
+29 -29
fs/nilfs2/segment.c
··· 1665 1665 return 0; 1666 1666 } 1667 1667 1668 - static void nilfs_begin_page_io(struct page *page) 1668 + static void nilfs_begin_folio_io(struct folio *folio) 1669 1669 { 1670 - if (!page || PageWriteback(page)) 1670 + if (!folio || folio_test_writeback(folio)) 1671 1671 /* 1672 1672 * For split b-tree node pages, this function may be called 1673 1673 * twice. We ignore the 2nd or later calls by this check. 1674 1674 */ 1675 1675 return; 1676 1676 1677 - lock_page(page); 1678 - clear_page_dirty_for_io(page); 1679 - set_page_writeback(page); 1680 - unlock_page(page); 1677 + folio_lock(folio); 1678 + folio_clear_dirty_for_io(folio); 1679 + folio_start_writeback(folio); 1680 + folio_unlock(folio); 1681 1681 } 1682 1682 1683 1683 static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci) 1684 1684 { 1685 1685 struct nilfs_segment_buffer *segbuf; 1686 - struct page *bd_page = NULL, *fs_page = NULL; 1686 + struct folio *bd_folio = NULL, *fs_folio = NULL; 1687 1687 1688 1688 list_for_each_entry(segbuf, &sci->sc_segbufs, sb_list) { 1689 1689 struct buffer_head *bh; 1690 1690 1691 1691 list_for_each_entry(bh, &segbuf->sb_segsum_buffers, 1692 1692 b_assoc_buffers) { 1693 - if (bh->b_page != bd_page) { 1694 - if (bd_page) { 1695 - lock_page(bd_page); 1696 - clear_page_dirty_for_io(bd_page); 1697 - set_page_writeback(bd_page); 1698 - unlock_page(bd_page); 1693 + if (bh->b_folio != bd_folio) { 1694 + if (bd_folio) { 1695 + folio_lock(bd_folio); 1696 + folio_clear_dirty_for_io(bd_folio); 1697 + folio_start_writeback(bd_folio); 1698 + folio_unlock(bd_folio); 1699 1699 } 1700 - bd_page = bh->b_page; 1700 + bd_folio = bh->b_folio; 1701 1701 } 1702 1702 } 1703 1703 ··· 1705 1705 b_assoc_buffers) { 1706 1706 set_buffer_async_write(bh); 1707 1707 if (bh == segbuf->sb_super_root) { 1708 - if (bh->b_page != bd_page) { 1709 - lock_page(bd_page); 1710 - clear_page_dirty_for_io(bd_page); 1711 - set_page_writeback(bd_page); 1712 - unlock_page(bd_page); 1713 - bd_page = bh->b_page; 1708 + if (bh->b_folio != bd_folio) { 1709 + folio_lock(bd_folio); 1710 + folio_clear_dirty_for_io(bd_folio); 1711 + folio_start_writeback(bd_folio); 1712 + folio_unlock(bd_folio); 1713 + bd_folio = bh->b_folio; 1714 1714 } 1715 1715 break; 1716 1716 } 1717 - if (bh->b_page != fs_page) { 1718 - nilfs_begin_page_io(fs_page); 1719 - fs_page = bh->b_page; 1717 + if (bh->b_folio != fs_folio) { 1718 + nilfs_begin_folio_io(fs_folio); 1719 + fs_folio = bh->b_folio; 1720 1720 } 1721 1721 } 1722 1722 } 1723 - if (bd_page) { 1724 - lock_page(bd_page); 1725 - clear_page_dirty_for_io(bd_page); 1726 - set_page_writeback(bd_page); 1727 - unlock_page(bd_page); 1723 + if (bd_folio) { 1724 + folio_lock(bd_folio); 1725 + folio_clear_dirty_for_io(bd_folio); 1726 + folio_start_writeback(bd_folio); 1727 + folio_unlock(bd_folio); 1728 1728 } 1729 - nilfs_begin_page_io(fs_page); 1729 + nilfs_begin_folio_io(fs_folio); 1730 1730 } 1731 1731 1732 1732 static int nilfs_segctor_write(struct nilfs_sc_info *sci,