Linux compat 2.6.39: mount_nodev()
[zfs.git] / module / zfs / zpl_super.c
index 4937832..650e9c0 100644 (file)
@@ -73,7 +73,7 @@ zpl_inode_destroy(struct inode *ip)
 static void
 zpl_evict_inode(struct inode *ip)
 {
-       truncate_inode_pages(&ip->i_data, 0);
+       truncate_setsize(ip, 0);
        end_writeback(ip);
        zfs_inactive(ip);
 }
@@ -89,7 +89,7 @@ zpl_clear_inode(struct inode *ip)
 static void
 zpl_inode_delete(struct inode *ip)
 {
-       truncate_inode_pages(&ip->i_data, 0);
+       truncate_setsize(ip, 0);
        clear_inode(ip);
 }
 
@@ -150,8 +150,7 @@ zpl_show_options(struct seq_file *seq, struct vfsmount *vfsp)
         * MNT_NOSUID, MNT_NODEV, MNT_NOEXEC, MNT_NOATIME, MNT_READONLY
         */
 
-       if (zsb->z_flags & ZSB_XATTR_USER)
-               seq_printf(seq, ",%s", "xattr");
+       seq_printf(seq, ",%s", zsb->z_flags & ZSB_XATTR ? "xattr" : "noxattr");
 
        return (0);
 }
@@ -167,14 +166,25 @@ zpl_fill_super(struct super_block *sb, void *data, int silent)
        return (error);
 }
 
+#ifdef HAVE_MOUNT_NODEV
+static struct dentry *
+zpl_mount(struct file_system_type *fs_type, int flags,
+    const char *osname, void *data)
+{
+       zpl_mount_data_t zmd = { osname, data };
+
+       return mount_nodev(fs_type, flags, &zmd, zpl_fill_super);
+}
+#else
 static int
 zpl_get_sb(struct file_system_type *fs_type, int flags,
     const char *osname, void *data, struct vfsmount *mnt)
 {
-       zpl_mount_data_t zmd = { osname, data, mnt };
+       zpl_mount_data_t zmd = { osname, data };
 
        return get_sb_nodev(fs_type, flags, &zmd, zpl_fill_super, mnt);
 }
+#endif /* HAVE_MOUNT_NODEV */
 
 static void
 zpl_kill_sb(struct super_block *sb)
@@ -213,6 +223,10 @@ const struct super_operations zpl_super_operations = {
 struct file_system_type zpl_fs_type = {
        .owner          = THIS_MODULE,
        .name           = ZFS_DRIVER,
+#ifdef HAVE_MOUNT_NODEV
+       .mount          = zpl_mount,
+#else
        .get_sb         = zpl_get_sb,
+#endif /* HAVE_MOUNT_NODEV */
        .kill_sb        = zpl_kill_sb,
 };