vmtruncate had been deprecated for a while and has now been
removed. Do things the new way based on truncate_setsize.
Reviewed-on: http://gerrit.openafs.org/8906
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
(cherry picked from commit
d0479bbaf43900d6733c3f7517926ee9813c9610)
Change-Id: Iafc64e19544dec9fcaefad5ad274eac4133f4083
Reviewed-on: http://gerrit.openafs.org/8942
Reviewed-by: Ken Dreyer <ktdreyer@ktdreyer.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Paul Smeddle <paul.smeddle@gmail.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
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);
}