Move udev rules from /etc/udev to /lib/udev
[zfs.git] / include / linux / vfs_compat.h
index dce2b6f..cbbf21e 100644 (file)
@@ -41,4 +41,44 @@ insert_inode_locked(struct inode *ip)
 }
 #endif /* HAVE_INSERT_INODE_LOCKED */
 
+/*
+ * 2.6.35 API change,
+ * Add truncate_setsize() if it is not exported by the Linux kernel.
+ *
+ * Truncate the inode and pages associated with the inode. The pages are
+ * unmapped and removed from cache.
+ */
+#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 */
+
+/*
+ * 2.6.32 API change,
+ * Added backing_device_info (bdi) per super block interfaces.  When
+ * available a bdi must be configured when using a non-device backed
+ * filesystem for proper writeback.  It's safe to leave this code
+ * dormant for kernels which only support pdflush and not bdi.
+ */
+#ifdef HAVE_BDI
+#define        bdi_get_sb(sb)                          (sb->s_bdi)
+#define        bdi_put_sb(sb, bdi)                     (sb->s_bdi = bdi)
+#else
+#define        bdi_init(bdi)                           (0)
+#define        bdi_destroy(bdi)                        (0)
+#define        bdi_register(bdi, parent, fmt, args)    (0)
+#define        bdi_unregister(bdi)                     (0)
+#define        bdi_get_sb(sb)                          (0)
+#define        bdi_put_sb(sb, bdi)                     (0)
+#endif /* HAVE_BDI */
+
 #endif /* _ZFS_VFS_H */