1*f9693befSMartin Matuskadnl # 2*f9693befSMartin Matuskadnl # Supported mkdir() interfaces checked newest to oldest. 3*f9693befSMartin Matuskadnl # 4*f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_MKDIR], [ 5*f9693befSMartin Matuska dnl # 6*f9693befSMartin Matuska dnl # 5.12 API change 7*f9693befSMartin Matuska dnl # The struct user_namespace arg was added as the first argument to 8*f9693befSMartin Matuska dnl # mkdir() 9*f9693befSMartin Matuska dnl # 10*f9693befSMartin Matuska ZFS_LINUX_TEST_SRC([mkdir_user_namespace], [ 11*f9693befSMartin Matuska #include <linux/fs.h> 12*f9693befSMartin Matuska 13*f9693befSMartin Matuska int mkdir(struct user_namespace *userns, 14*f9693befSMartin Matuska struct inode *inode, struct dentry *dentry, 15*f9693befSMartin Matuska umode_t umode) { return 0; } 16*f9693befSMartin Matuska 17*f9693befSMartin Matuska static const struct inode_operations 18*f9693befSMartin Matuska iops __attribute__ ((unused)) = { 19*f9693befSMartin Matuska .mkdir = mkdir, 20*f9693befSMartin Matuska }; 21*f9693befSMartin Matuska ],[]) 22*f9693befSMartin Matuska 23*f9693befSMartin Matuska dnl # 24*f9693befSMartin Matuska dnl # 3.3 API change 25*f9693befSMartin Matuska dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a 26*f9693befSMartin Matuska dnl # umode_t type rather than an int. The expectation is that any backport 27*f9693befSMartin Matuska dnl # would also change all three prototypes. However, if it turns out that 28*f9693befSMartin Matuska dnl # some distribution doesn't backport the whole thing this could be 29*f9693befSMartin Matuska dnl # broken apart into three separate checks. 30*f9693befSMartin Matuska dnl # 31*f9693befSMartin Matuska ZFS_LINUX_TEST_SRC([inode_operations_mkdir], [ 32*f9693befSMartin Matuska #include <linux/fs.h> 33*f9693befSMartin Matuska 34*f9693befSMartin Matuska int mkdir(struct inode *inode, struct dentry *dentry, 35*f9693befSMartin Matuska umode_t umode) { return 0; } 36*f9693befSMartin Matuska 37*f9693befSMartin Matuska static const struct inode_operations 38*f9693befSMartin Matuska iops __attribute__ ((unused)) = { 39*f9693befSMartin Matuska .mkdir = mkdir, 40*f9693befSMartin Matuska }; 41*f9693befSMartin Matuska ],[]) 42*f9693befSMartin Matuska]) 43*f9693befSMartin Matuska 44*f9693befSMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_MKDIR], [ 45*f9693befSMartin Matuska dnl # 46*f9693befSMartin Matuska dnl # 5.12 API change 47*f9693befSMartin Matuska dnl # The struct user_namespace arg was added as the first argument to 48*f9693befSMartin Matuska dnl # mkdir() of the iops structure. 49*f9693befSMartin Matuska dnl # 50*f9693befSMartin Matuska AC_MSG_CHECKING([whether iops->mkdir() takes struct user_namespace*]) 51*f9693befSMartin Matuska ZFS_LINUX_TEST_RESULT([mkdir_user_namespace], [ 52*f9693befSMartin Matuska AC_MSG_RESULT(yes) 53*f9693befSMartin Matuska AC_DEFINE(HAVE_IOPS_MKDIR_USERNS, 1, 54*f9693befSMartin Matuska [iops->mkdir() takes struct user_namespace*]) 55*f9693befSMartin Matuska ],[ 56*f9693befSMartin Matuska AC_MSG_CHECKING([whether iops->mkdir() takes umode_t]) 57*f9693befSMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_mkdir], [ 58*f9693befSMartin Matuska AC_MSG_RESULT(yes) 59*f9693befSMartin Matuska AC_DEFINE(HAVE_MKDIR_UMODE_T, 1, 60*f9693befSMartin Matuska [iops->mkdir() takes umode_t]) 61*f9693befSMartin Matuska ],[ 62*f9693befSMartin Matuska ZFS_LINUX_TEST_ERROR([mkdir()]) 63*f9693befSMartin Matuska ]) 64*f9693befSMartin Matuska ]) 65*f9693befSMartin Matuska]) 66