#undef STRUCT_FS_HAS_FS_ROLLED
#undef STRUCT_INODE_HAS_I_DEVICES
#undef STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
+#undef STRUCT_INODE_HAS_I_ALLOC_SEM
#undef STRUCT_INODE_HAS_I_TRUNCATE_SEM
#undef STRUCT_TASK_STRUCT_HAS_PARENT
#undef STRUCT_TASK_STRUCT_HAS_REAL_PARENT
LINUX_EXPORTS_TASKLIST_LOCK
LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
+ LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
fi
+ if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then
+ AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
+ fi
if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then
AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
fi
if (code || tstat.size <= asize) return code;
MObtainWriteLock(&afs_xosi,321);
AFS_GUNLOCK();
+#ifdef STRUCT_INODE_HAS_I_ALLOC_SEM
+ down_write(&inode->i_alloc_sem);
+#endif
down(&inode->i_sem);
inode->i_size = newattrs.ia_size = asize;
newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
#endif
code = -code;
up(&inode->i_sem);
+#ifdef STRUCT_INODE_HAS_I_ALLOC_SEM
+ up_write(&inode->i_alloc_sem);
+#endif
AFS_GLOCK();
MReleaseWriteLock(&afs_xosi);
return code;
#ifdef STRUCT_INODE_HAS_I_TRUNCATE_SEM
init_rwsem(&ip->i_truncate_sem);
#endif
+#ifdef STRUCT_INODE_HAS_I_ALLOC_SEM
+ init_rwsem(&ip->i_alloc_sem);
+#endif
#else
sema_init(&ip->i_atomic_write, 1);
init_waitqueue(&ip->i_wait);
AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)
CPPFLAGS="$save_CPPFLAGS"])
+AC_DEFUN(LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM, [
+AC_MSG_CHECKING(for i_alloc_sem in struct inode)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_alloc_sem,
+[
+AC_TRY_COMPILE(
+[#include <linux/fs.h>],
+[struct inode _i;
+printf("%x\n", _i.i_alloc_sem);],
+ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
+ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
+AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)
+CPPFLAGS="$save_CPPFLAGS"])
+
AC_DEFUN(LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM, [
AC_MSG_CHECKING(for i_truncate_sem in struct inode)
save_CPPFLAGS="$CPPFLAGS"