-#ifdef HAVE_2ARGS_FSYNC
-#define ZPL_FSYNC_PROTO(fn, x, y, z) static int fn(struct file *x, int z)
-#else
-#define ZPL_FSYNC_PROTO(fn, x, y, z) static int fn(struct file *x, \
- struct dentry *y, int z)
-#endif
+#ifndef HAVE_TRUNCATE_SETSIZE
+static inline void
+truncate_setsize(struct inode *ip, loff_t new)
+{
+ struct address_space *mapping = ip->i_mapping;
+
+ i_size_write(ip, new);
+
+ unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1);
+ truncate_inode_pages(mapping, new);
+ unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1);
+}
+#endif /* HAVE_TRUNCATE_SETSIZE */