AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
AC_CHECK_LINUX_STRUCT([filename], [name], [fs.h])
+ AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
return old;
}
+static inline int
+afs_truncate(struct inode *inode, int len)
+{
+ int code;
+#if defined(STRUCT_INODE_OPERATIONS_HAS_TRUNCATE)
+ code = vmtruncate(inode, len);
+#else
+ code = inode_newsize_ok(inode, len);
+ if (!code)
+ truncate_setsize(inode, len);
+#endif
+ return code;
+}
+
#endif /* AFS_LINUX_OSI_COMPAT_H */
if (avc->opens != 0)
return EBUSY;
- return vmtruncate(ip, 0);
- return 0;
+ return afs_truncate(ip, 0);
}
/* Try to invalidate pages, for "fs flush" or "fs flushv"; or
void
osi_VM_Truncate(struct vcache *avc, int alen, afs_ucred_t *acred)
{
- vmtruncate(AFSTOV(avc), alen);
+ afs_truncate(AFSTOV(avc), alen);
}