On Wed, Feb 26, 2025 at 07:51:39AM -0800, Christoph Hellwig wrote: > Directly assign b_addr based on the tmpfs folios without a detour > through pages, reuse the folio_put path used for non-tmpfs buffers > and replace all references to pages in comments with folios. > > Partially based on a patch from Dave Chinner <dchinner@xxxxxxxxxx>. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/xfs/xfs_buf.c | 6 ++---- > fs/xfs/xfs_buf_mem.c | 34 ++++++++++------------------------ > fs/xfs/xfs_buf_mem.h | 6 ++---- > 3 files changed, 14 insertions(+), 32 deletions(-) > <snip> > diff --git a/fs/xfs/xfs_buf_mem.h b/fs/xfs/xfs_buf_mem.h > index eed4a7b63232..67d525cc1513 100644 > --- a/fs/xfs/xfs_buf_mem.h > +++ b/fs/xfs/xfs_buf_mem.h > @@ -19,16 +19,14 @@ int xmbuf_alloc(struct xfs_mount *mp, const char *descr, > struct xfs_buftarg **btpp); > void xmbuf_free(struct xfs_buftarg *btp); > > -int xmbuf_map_page(struct xfs_buf *bp); > -void xmbuf_unmap_page(struct xfs_buf *bp); > bool xmbuf_verify_daddr(struct xfs_buftarg *btp, xfs_daddr_t daddr); > void xmbuf_trans_bdetach(struct xfs_trans *tp, struct xfs_buf *bp); > int xmbuf_finalize(struct xfs_buf *bp); > #else > # define xfs_buftarg_is_mem(...) (false) > -# define xmbuf_map_page(...) (-ENOMEM) > -# define xmbuf_unmap_page(...) ((void)0) > # define xmbuf_verify_daddr(...) (false) > #endif /* CONFIG_XFS_MEMORY_BUFS */ > > +int xmbuf_map_backing_mem(struct xfs_buf *bp); Does this actually work if CONFIG_XFS_MEMORY_BUFS=n ? I guess the compiler will see: if (false) return xmbuf_map_backing_mem(bp); and optimize it out, right? But these subtleties make my eyes twitch. --D > + > #endif /* __XFS_BUF_MEM_H__ */ > -- > 2.45.2 > >