OpenAFS Master Repository branch, master, updated. openafs-devel-1_9_1-237-ge7737ed

Gerrit Code Review
Thu, 8 Dec 2022 16:33:45 -0500

The following commit has been merged in the master branch:
commit e7737edb932a1c4d55a2551a44e481b40310c96d
Author: Cheyenne Wills <>
Date:   Fri Nov 18 08:41:50 2022 -0700

    Linux: Check for block_dirty_folio
    The build for the openafs Linux kernel module fails on RHEL9.1 with an
    undefined function reference for block_dirty_folio().
    RedHat 9.1 includes the Linux commit:
      fs: Add aops->dirty_folio (6f31a5a261db)
    which added the dirty_folio member to the address_space_operations
    However RedHat 9.1 does not include the following 2 Linux commits:
      fs: Convert __set_page_dirty_buffers to block_dirty_folio (e621900ad2)
    which introduced block_dirty_folio() as a function that could be used to
    handle the address_space_operations's dirty_folio operation.
      fs: Remove aops ->set_page_dirty (3a3bae50af)
    which removed the set_page_dirty member in the address_space_operations
    The openafs commit:
      Linux-5.18 replace set_page_dirty with dirty_folio (6aa129e743e88)
    introduced an autoconf test that checks for the presence of aops'
    dirty_folio member and assumed that the Linux function
    block_dirty_folio() was also provided (since all three of the above
    Linux commits were added in Linux-5.18-rc1).
    Without the (e621900ad2) commit, the openafs Linux kernel module fails
    to build since block_dirty_folio() is not defined by Linux.
    Introduce new autoconf tests that checks for the presence of the
    block_dirty_folio() function.
    Change the preprocessor conditional within LINUX/osi_vnodeops.c to only
    use dirty_folio if aops has dirty_folio and block_dirty_folio() is
    available.  When block_dirty_folio() is not available, we continue to
    use the older set_page_dirty method, which remains a valid method until
    its removal by the (3a3bae50af) Linux commit.
    Note: Reviewing the Linux source for RedHat 9.1 shows that there is only
    one location that is defining the dirty_folio member and it is providing
    its own function instead of relying on block_dirty_folio.
    Change-Id: If8f7bba3fa779e344ba1d51f7a837197586142bd
    Tested-by: BuildBot <>
    Reviewed-by: Andrew Deason <>
    Reviewed-by: Benjamin Kaduk <>

 src/afs/LINUX/osi_vnodeops.c | 3 ++-
 src/cf/linux-kernel-func.m4  | 7 +++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

OpenAFS Master Repository