struct file;
 struct path;
 
-#define MNT_NOSUID     0x01
-#define MNT_NODEV      0x02
-#define MNT_NOEXEC     0x04
-#define MNT_NOATIME    0x08
-#define MNT_NODIRATIME 0x10
-#define MNT_RELATIME   0x20
-#define MNT_READONLY   0x40    /* does the user want this to be r/o? */
-#define MNT_NOSYMFOLLOW        0x80
-
-#define MNT_SHRINKABLE 0x100
-#define MNT_WRITE_HOLD 0x200
-
-#define MNT_SHARED     0x1000  /* if the vfsmount is a shared mount */
-#define MNT_UNBINDABLE 0x2000  /* if the vfsmount is a unbindable mount */
-/*
- * MNT_SHARED_MASK is the set of flags that should be cleared when a
- * mount becomes shared.  Currently, this is only the flag that says a
- * mount cannot be bind mounted, since this is how we create a mount
- * that shares events with another mount.  If you add a new MNT_*
- * flag, consider how it interacts with shared mounts.
- */
-#define MNT_SHARED_MASK        (MNT_UNBINDABLE)
-#define MNT_USER_SETTABLE_MASK  (MNT_NOSUID | MNT_NODEV | MNT_NOEXEC \
-                                | MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME \
-                                | MNT_READONLY | MNT_NOSYMFOLLOW)
-#define MNT_ATIME_MASK (MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME )
-
-#define MNT_INTERNAL_FLAGS (MNT_SHARED | MNT_WRITE_HOLD | MNT_INTERNAL | \
-                           MNT_DOOMED | MNT_SYNC_UMOUNT | MNT_MARKED)
-
-#define MNT_INTERNAL   0x4000
-
-#define MNT_LOCK_ATIME         0x040000
-#define MNT_LOCK_NOEXEC                0x080000
-#define MNT_LOCK_NOSUID                0x100000
-#define MNT_LOCK_NODEV         0x200000
-#define MNT_LOCK_READONLY      0x400000
-#define MNT_LOCKED             0x800000
-#define MNT_DOOMED             0x1000000
-#define MNT_SYNC_UMOUNT                0x2000000
-#define MNT_MARKED             0x4000000
-#define MNT_UMOUNT             0x8000000
+enum mount_flags {
+       MNT_NOSUID      = 0x01,
+       MNT_NODEV       = 0x02,
+       MNT_NOEXEC      = 0x04,
+       MNT_NOATIME     = 0x08,
+       MNT_NODIRATIME  = 0x10,
+       MNT_RELATIME    = 0x20,
+       MNT_READONLY    = 0x40, /* does the user want this to be r/o? */
+       MNT_NOSYMFOLLOW = 0x80,
+
+       MNT_SHRINKABLE  = 0x100,
+       MNT_WRITE_HOLD  = 0x200,
+
+       MNT_SHARED      = 0x1000, /* if the vfsmount is a shared mount */
+       MNT_UNBINDABLE  = 0x2000, /* if the vfsmount is a unbindable mount */
+
+       MNT_INTERNAL    = 0x4000,
+
+       MNT_LOCK_ATIME          = 0x040000,
+       MNT_LOCK_NOEXEC         = 0x080000,
+       MNT_LOCK_NOSUID         = 0x100000,
+       MNT_LOCK_NODEV          = 0x200000,
+       MNT_LOCK_READONLY       = 0x400000,
+       MNT_LOCKED              = 0x800000,
+       MNT_DOOMED              = 0x1000000,
+       MNT_SYNC_UMOUNT         = 0x2000000,
+       MNT_MARKED              = 0x4000000,
+       MNT_UMOUNT              = 0x8000000,
+
+       /*
+        * MNT_SHARED_MASK is the set of flags that should be cleared when a
+        * mount becomes shared.  Currently, this is only the flag that says a
+        * mount cannot be bind mounted, since this is how we create a mount
+        * that shares events with another mount.  If you add a new MNT_*
+        * flag, consider how it interacts with shared mounts.
+        */
+       MNT_SHARED_MASK = MNT_UNBINDABLE,
+       MNT_USER_SETTABLE_MASK  = MNT_NOSUID | MNT_NODEV | MNT_NOEXEC
+                                 | MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME
+                                 | MNT_READONLY | MNT_NOSYMFOLLOW,
+       MNT_ATIME_MASK = MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME,
+
+       MNT_INTERNAL_FLAGS = MNT_SHARED | MNT_WRITE_HOLD | MNT_INTERNAL |
+                            MNT_DOOMED | MNT_SYNC_UMOUNT | MNT_MARKED,
+};
 
 struct vfsmount {
        struct dentry *mnt_root;        /* root of the mounted tree */