mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
Linux-5.19: Remove flags from aops->write_begin
The Linux 5.19 commits: fs: Remove aop flags parameter from grab_cache_page_write_begin() (b7446e7c) fs: Remove flags parameter from aops->write_begin (9d6b0cd7) removed the flags parameter from the address space operations 'write_begin' as well as removing the flags parameter from the Linux function 'grab_cache_page_write_begin'. Add an autoconf test to see if grab_cache_page_write_begin takes 2 or 3 parameters. Use this as a test to determine if the address space operations 'write_begin' takes a flags parameter. Create a version of afs_linux_write_begin that does not take a flags parameter, which also calls grab_cache_page_write_begin without flags. Change-Id: Ib98c615e6964202748c78037c9ecac459fc3372b Reviewed-on: https://gerrit.openafs.org/15041 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Andrew Deason <adeason@sinenomine.net> Reviewed-by: Michael Meffie <mmeffie@sinenomine.net> Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
parent
bfb852197e
commit
52d8df218f
@ -138,7 +138,9 @@ hlist_unhashed(const struct hlist_node *h) {
|
||||
#define AOP_WRITEPAGE_ACTIVATE WRITEPAGE_ACTIVATE
|
||||
#endif
|
||||
|
||||
#if defined(STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_WRITE_BEGIN) && !defined(HAVE_LINUX_GRAB_CACHE_PAGE_WRITE_BEGIN)
|
||||
#if defined(STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_WRITE_BEGIN) && \
|
||||
!defined(HAVE_LINUX_GRAB_CACHE_PAGE_WRITE_BEGIN_WITHFLAGS) && \
|
||||
!defined(HAVE_LINUX_GRAB_CACHE_PAGE_WRITE_BEGIN_NOFLAGS)
|
||||
static inline struct page *
|
||||
grab_cache_page_write_begin(struct address_space *mapping, pgoff_t index,
|
||||
unsigned int flags) {
|
||||
|
@ -3476,6 +3476,33 @@ afs_linux_write_end(struct file *file, struct address_space *mapping,
|
||||
return code;
|
||||
}
|
||||
|
||||
# if defined(HAVE_LINUX_GRAB_CACHE_PAGE_WRITE_BEGIN_NOFLAGS)
|
||||
static int
|
||||
afs_linux_write_begin(struct file *file, struct address_space *mapping,
|
||||
loff_t pos, unsigned len,
|
||||
struct page **pagep, void **fsdata)
|
||||
{
|
||||
struct page *page;
|
||||
pgoff_t index = pos >> PAGE_SHIFT;
|
||||
unsigned int from = pos & (PAGE_SIZE - 1);
|
||||
int code;
|
||||
|
||||
page = grab_cache_page_write_begin(mapping, index);
|
||||
if (!page) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
*pagep = page;
|
||||
|
||||
code = afs_linux_prepare_write(file, page, from, from + len);
|
||||
if (code) {
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
# else
|
||||
static int
|
||||
afs_linux_write_begin(struct file *file, struct address_space *mapping,
|
||||
loff_t pos, unsigned len, unsigned flags,
|
||||
@ -3501,7 +3528,8 @@ afs_linux_write_begin(struct file *file, struct address_space *mapping,
|
||||
|
||||
return code;
|
||||
}
|
||||
#endif
|
||||
# endif /* HAVE_LINUX_GRAB_CACHE_PAGE_WRITE_BEGIN_NOFLAGS */
|
||||
#endif /* STRUCT_ADDRESS_SPACE_OPERATIONS_HAS_WRITE_BEGIN */
|
||||
|
||||
#ifndef STRUCT_DENTRY_OPERATIONS_HAS_D_AUTOMOUNT
|
||||
static void *
|
||||
|
@ -59,9 +59,14 @@ AC_CHECK_LINUX_FUNC([find_task_by_pid],
|
||||
AC_CHECK_LINUX_FUNC([generic_file_aio_read],
|
||||
[#include <linux/fs.h>],
|
||||
[generic_file_aio_read(NULL,NULL,0,0);])
|
||||
AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
|
||||
dnl - linux 5.19 removed the flags parameter, need to test
|
||||
dnl - with and without the flags parameter
|
||||
AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin_withflags],
|
||||
[#include <linux/pagemap.h>],
|
||||
[grab_cache_page_write_begin(NULL, 0, 0);])
|
||||
AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin_noflags],
|
||||
[#include <linux/pagemap.h>],
|
||||
[grab_cache_page_write_begin(NULL, 0);])
|
||||
AC_CHECK_LINUX_FUNC([hlist_unhashed],
|
||||
[#include <linux/list.h>],
|
||||
[hlist_unhashed(0);])
|
||||
|
Loading…
Reference in New Issue
Block a user