#include <linux/gfs2_ondisk.h>
 #include <linux/ext2_fs.h>
 #include <linux/crc32.h>
-#include <linux/iflags.h>
 #include <linux/lm_interface.h>
 #include <asm/uaccess.h>
 
        return error;
 }
 
+/**
+ * fsflags_cvt
+ * @table: A table of 32 u32 flags
+ * @val: a 32 bit value to convert
+ *
+ * This function can be used to convert between fsflags values and
+ * GFS2's own flags values.
+ *
+ * Returns: the converted flags
+ */
+static u32 fsflags_cvt(const u32 *table, u32 val)
+{
+       u32 res = 0;
+       while(val) {
+               if (val & 1)
+                       res |= *table;
+               table++;
+               val >>= 1;
+       }
+       return res;
+}
 
-static const u32 iflags_to_gfs2[32] = {
-       [iflag_Sync] = GFS2_DIF_SYNC,
-       [iflag_Immutable] = GFS2_DIF_IMMUTABLE,
-       [iflag_Append] = GFS2_DIF_APPENDONLY,
-       [iflag_NoAtime] = GFS2_DIF_NOATIME,
-       [iflag_Index] = GFS2_DIF_EXHASH,
-       [iflag_JournalData] = GFS2_DIF_JDATA,
-       [iflag_DirectIO] = GFS2_DIF_DIRECTIO,
+static const u32 fsflags_to_gfs2[32] = {
+       [3] = GFS2_DIF_SYNC,
+       [4] = GFS2_DIF_IMMUTABLE,
+       [5] = GFS2_DIF_APPENDONLY,
+       [7] = GFS2_DIF_NOATIME,
+       [12] = GFS2_DIF_EXHASH,
+       [14] = GFS2_DIF_JDATA,
+       [20] = GFS2_DIF_DIRECTIO,
 };
 
-static const u32 gfs2_to_iflags[32] = {
-       [gfs2fl_Sync] = IFLAG_SYNC,
-       [gfs2fl_Immutable] = IFLAG_IMMUTABLE,
-       [gfs2fl_AppendOnly] = IFLAG_APPEND,
-       [gfs2fl_NoAtime] = IFLAG_NOATIME,
-       [gfs2fl_ExHash] = IFLAG_INDEX,
-       [gfs2fl_Jdata] = IFLAG_JOURNAL_DATA,
-       [gfs2fl_Directio] = IFLAG_DIRECTIO,
-       [gfs2fl_InheritDirectio] = IFLAG_DIRECTIO,
-       [gfs2fl_InheritJdata] = IFLAG_JOURNAL_DATA,
+static const u32 gfs2_to_fsflags[32] = {
+       [gfs2fl_Sync] = FS_SYNC_FL,
+       [gfs2fl_Immutable] = FS_IMMUTABLE_FL,
+       [gfs2fl_AppendOnly] = FS_APPEND_FL,
+       [gfs2fl_NoAtime] = FS_NOATIME_FL,
+       [gfs2fl_ExHash] = FS_INDEX_FL,
+       [gfs2fl_Jdata] = FS_JOURNAL_DATA_FL,
+       [gfs2fl_Directio] = FS_DIRECTIO_FL,
+       [gfs2fl_InheritDirectio] = FS_DIRECTIO_FL,
+       [gfs2fl_InheritJdata] = FS_JOURNAL_DATA_FL,
 };
 
 static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
        struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_holder gh;
        int error;
-       u32 iflags;
+       u32 fsflags;
 
        gfs2_holder_init(ip->i_gl, LM_ST_SHARED, GL_ATIME, &gh);
        error = gfs2_glock_nq_m_atime(1, &gh);
        if (error)
                return error;
 
-       iflags = iflags_cvt(gfs2_to_iflags, ip->i_di.di_flags);
-       if (put_user(iflags, ptr))
+       fsflags = fsflags_cvt(gfs2_to_fsflags, ip->i_di.di_flags);
+       if (put_user(fsflags, ptr))
                error = -EFAULT;
 
        gfs2_glock_dq_m(1, &gh);
 
 static int gfs2_set_flags(struct file *filp, u32 __user *ptr)
 {
-       u32 iflags, gfsflags;
-       if (get_user(iflags, ptr))
+       u32 fsflags, gfsflags;
+       if (get_user(fsflags, ptr))
                return -EFAULT;
-       gfsflags = iflags_cvt(iflags_to_gfs2, iflags);
+       gfsflags = fsflags_cvt(fsflags_to_gfs2, fsflags);
        return do_gfs2_set_flags(filp, gfsflags, ~0);
 }
 
 static long gfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 {
        switch(cmd) {
-       case IFLAGS_GET_IOC:
+       case FS_IOC_GETFLAGS:
                return gfs2_get_flags(filp, (u32 __user *)arg);
-       case IFLAGS_SET_IOC:
+       case FS_IOC_SETFLAGS:
                return gfs2_set_flags(filp, (u32 __user *)arg);
        }
        return -ENOTTY;
 
+++ /dev/null
-#ifndef _LINUX_IFLAGS_H
-#define _LINUX_IFLAGS_H
-
-/*
- * A universal set of inode flags.
- *
- * Originally taken from ext2/3 with additions for other filesystems.
- * Filesystems supporting this interface should interoperate with
- * the lsattr and chattr command line tools.
- *
- * This interface is supported in whole or in part by:
- * ext2
- * ext3
- * xfs
- * jfs
- * gfs2
- *
- */
-
-#define IFLAGS_GET_IOC         _IOR('f', 1, long)
-#define IFLAGS_SET_IOC         _IOW('f', 2, long)
-
-/*
- * These values are provided for use as indices of an array
- * for use with the iflags_cvt function below
- */
-enum {
-       iflag_SecureRm          = 0,    /* Secure deletion */
-       iflag_Unrm              = 1,    /* Undelete */
-       iflag_Compress          = 2,    /* Compress file */
-       iflag_Sync              = 3,    /* Synchronous updates */
-       iflag_Immutable = 4,    /* Immutable */
-       iflag_Append            = 5,    /* Append */
-       iflag_NoDump            = 6,    /* Don't dump file */
-       iflag_NoAtime           = 7,    /* No atime updates */
-       /* Reserved for compression usage */
-       iflag_Dirty             = 8,
-       iflag_ComprBlk          = 9,    /* One or more compressed clusters */
-       iflag_NoComp            = 10,   /* Don't compress */
-       iflag_Ecompr            = 11,   /* Compression error */
-       /* End of compression flags */
-       iflag_Btree             = 12,   /* btree format dir */
-       iflag_Index             = 12,   /* hash-indexed directory */
-       iflag_Imagic            = 13,   /* AFS directory */
-       iflag_JournalData       = 14,   /* file data should be journaled */
-       iflag_NoTail            = 15,   /* file tail should not be merged */
-       iflag_DirSync           = 16,   /* dirsync behaviour */
-       iflag_TopDir            = 17,   /* Top of directory hierarchies */
-       iflag_Extent            = 19,   /* Extents */
-       iflag_DirectIO          = 20,   /* Always use direct I/O on this file */
-       iflag_Reserved          = 31    /* reserved for ext2/3 lib */
-};
-
-#define __IFL(x) (1<<(iflag_##x))
-#define IFLAG_SECRM            __IFL(SecureRm)         /* 0x00000001 */
-#define IFLAG_UNRM             __IFL(Unrm)             /* 0x00000002 */
-#define IFLAG_COMPR            __IFL(Compr)            /* 0x00000004 */
-#define IFLAG_SYNC             __IFL(Sync)             /* 0x00000008 */
-#define IFLAG_IMMUTABLE                __IFL(Immutable)        /* 0x00000010 */
-#define IFLAG_APPEND           __IFL(Append)           /* 0x00000020 */
-#define IFLAG_NODUMP           __IFL(NoDump)           /* 0x00000040 */
-#define IFLAG_NOATIME          __IFL(NoAtime)          /* 0x00000080 */
-#define IFLAG_DIRTY            __IFL(Dirty)            /* 0x00000100 */
-#define IFLAG_COMPRBLK         __IFL(ComprBlk)         /* 0x00000200 */
-#define IFLAG_NOCOMP           __IFL(NoComp)           /* 0x00000400 */
-#define IFLAG_ECOMPR           __IFL(Ecompr)           /* 0x00000800 */
-#define IFLAG_BTREE            __IFL(Btree)            /* 0x00001000 */
-#define IFLAG_INDEX            __IFL(Index)            /* 0x00001000 */
-#define IFLAG_IMAGIC           __IFL(Imagic)           /* 0x00002000 */
-#define IFLAG_JOURNAL_DATA     __IFL(JournalData)      /* 0x00004000 */
-#define IFLAG_NOTAIL           __IFL(NoTail)           /* 0x00008000 */
-#define IFLAG_DIRSYNC          __IFL(DirSync)          /* 0x00010000 */
-#define IFLAG_TOPDIR           __IFL(TopDir)           /* 0x00020000 */
-#define IFLAG_EXTENT           __IFL(Extent)           /* 0x00080000 */
-#define IFLAG_DIRECTIO         __IFL(DirectIO)         /* 0x00100000 */
-#define IFLAG_RESERVED         __IFL(Reserved)         /* 0x80000000 */
-
-#ifdef __KERNEL__
-/**
- * iflags_cvt
- * @table: A table of 32 u32 flags
- * @val: a 32 bit value to convert
- *
- * This function can be used to convert between IFLAGS values and
- * the filesystem's own flags values.
- *
- * Returns: the converted flags
- */
-static inline u32 iflags_cvt(const u32 *table, u32 val)
-{
-       u32 res = 0;
-       while(val) {
-               if (val & 1)
-                       res |= *table;
-               table++;
-               val >>= 1;
-       }
-       return res;
-}
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_IFLAGS_H */