xfs: convert remaining mount flags to state flags
[linux-2.6-microblaze.git] / fs / xfs / xfs_mount.h
index 1c086c4..876bb19 100644 (file)
@@ -146,7 +146,6 @@ typedef struct xfs_mount {
        uint                    m_rsumsize;     /* size of rt summary, bytes */
        int                     m_fixedfsid[2]; /* unchanged for life of FS */
        uint                    m_qflags;       /* quota status flags */
-       uint64_t                m_flags;        /* global mount flags */
        uint64_t                m_features;     /* active filesystem features */
        uint64_t                m_low_space[XFS_LOWSP_MAX];
        uint64_t                m_low_rtexts[XFS_LOWSP_MAX];
@@ -342,8 +341,8 @@ __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR)
 /*
  * Mount features
  *
- * These do not change dynamically - features that can come and go,
- * such as 32 bit inodes and read-only state, are kept as flags rather than
+ * These do not change dynamically - features that can come and go, such as 32
+ * bit inodes and read-only state, are kept as operational state rather than
  * features.
  */
 __XFS_HAS_FEAT(noattr2, NOATTR2)
@@ -364,51 +363,28 @@ __XFS_HAS_FEAT(norecovery, NORECOVERY)
 __XFS_HAS_FEAT(nouuid, NOUUID)
 
 /*
- * Flags for m_flags.
+ * Operational mount state flags
+ *
+ * Use these with atomic bit ops only!
  */
-#define XFS_MOUNT_WSYNC                (1ULL << 0)     /* for nfs - all metadata ops
-                                                  must be synchronous except
-                                                  for space allocations */
-#define XFS_MOUNT_UNMOUNTING   (1ULL << 1)     /* filesystem is unmounting */
-#define XFS_MOUNT_WAS_CLEAN    (1ULL << 3)
-#define XFS_MOUNT_FS_SHUTDOWN  (1ULL << 4)     /* atomic stop of all filesystem
-                                                  operations, typically for
-                                                  disk errors in metadata */
-#define XFS_MOUNT_DISCARD      (1ULL << 5)     /* discard unused blocks */
-#define XFS_MOUNT_NOALIGN      (1ULL << 7)     /* turn off stripe alignment
-                                                  allocations */
-#define XFS_MOUNT_ATTR2                (1ULL << 8)     /* allow use of attr2 format */
-#define XFS_MOUNT_GRPID                (1ULL << 9)     /* group-ID assigned from directory */
-#define XFS_MOUNT_NORECOVERY   (1ULL << 10)    /* no recovery - dirty fs */
-#define XFS_MOUNT_ALLOCSIZE    (1ULL << 12)    /* specified allocation size */
-#define XFS_MOUNT_SMALL_INUMS  (1ULL << 14)    /* user wants 32bit inodes */
-#define XFS_MOUNT_32BITINODES  (1ULL << 15)    /* inode32 allocator active */
-#define XFS_MOUNT_NOUUID       (1ULL << 16)    /* ignore uuid during mount */
-#define XFS_MOUNT_IKEEP                (1ULL << 18)    /* keep empty inode clusters*/
-#define XFS_MOUNT_SWALLOC      (1ULL << 19)    /* turn on stripe width
-                                                * allocation */
-#define XFS_MOUNT_RDONLY       (1ULL << 20)    /* read-only fs */
-#define XFS_MOUNT_DIRSYNC      (1ULL << 21)    /* synchronous directory ops */
-#define XFS_MOUNT_LARGEIO      (1ULL << 22)    /* report large preferred
-                                                * I/O size in stat() */
-#define XFS_MOUNT_FILESTREAMS  (1ULL << 24)    /* enable the filestreams
-                                                  allocator */
-#define XFS_MOUNT_NOATTR2      (1ULL << 25)    /* disable use of attr2 format */
-#define XFS_MOUNT_DAX_ALWAYS   (1ULL << 26)
-#define XFS_MOUNT_DAX_NEVER    (1ULL << 27)
+#define XFS_OPSTATE_UNMOUNTING         0       /* filesystem is unmounting */
+#define XFS_OPSTATE_CLEAN              1       /* mount was clean */
+#define XFS_OPSTATE_SHUTDOWN           2       /* stop all fs operations */
+#define XFS_OPSTATE_INODE32            3       /* inode32 allocator active */
+#define XFS_OPSTATE_READONLY           4       /* read-only fs */
 
 /*
  * If set, inactivation worker threads will be scheduled to process queued
  * inodegc work.  If not, queued inodes remain in memory waiting to be
  * processed.
  */
-#define XFS_OPSTATE_INODEGC_ENABLED    0
+#define XFS_OPSTATE_INODEGC_ENABLED    5
 /*
  * If set, background speculative prealloc gc worker threads will be scheduled
  * to process queued blockgc work.  If not, inodes retain their preallocations
  * until explicitly deleted.
  */
-#define XFS_OPSTATE_BLOCKGC_ENABLED    1
+#define XFS_OPSTATE_BLOCKGC_ENABLED    6
 
 #define __XFS_IS_OPSTATE(name, NAME) \
 static inline bool xfs_is_ ## name (struct xfs_mount *mp) \
@@ -424,10 +400,20 @@ static inline bool xfs_set_ ## name (struct xfs_mount *mp) \
        return test_and_set_bit(XFS_OPSTATE_ ## NAME, &mp->m_opstate); \
 }
 
+__XFS_IS_OPSTATE(unmounting, UNMOUNTING)
+__XFS_IS_OPSTATE(clean, CLEAN)
+__XFS_IS_OPSTATE(shutdown, SHUTDOWN)
+__XFS_IS_OPSTATE(inode32, INODE32)
+__XFS_IS_OPSTATE(readonly, READONLY)
 __XFS_IS_OPSTATE(inodegc_enabled, INODEGC_ENABLED)
 __XFS_IS_OPSTATE(blockgc_enabled, BLOCKGC_ENABLED)
 
 #define XFS_OPSTATE_STRINGS \
+       { (1UL << XFS_OPSTATE_UNMOUNTING),              "unmounting" }, \
+       { (1UL << XFS_OPSTATE_CLEAN),                   "clean" }, \
+       { (1UL << XFS_OPSTATE_SHUTDOWN),                "shutdown" }, \
+       { (1UL << XFS_OPSTATE_INODE32),                 "inode32" }, \
+       { (1UL << XFS_OPSTATE_READONLY),                "read_only" }, \
        { (1UL << XFS_OPSTATE_INODEGC_ENABLED),         "inodegc" }, \
        { (1UL << XFS_OPSTATE_BLOCKGC_ENABLED),         "blockgc" }
 
@@ -438,9 +424,7 @@ __XFS_IS_OPSTATE(blockgc_enabled, BLOCKGC_ENABLED)
 #define XFS_MAX_IO_LOG         30      /* 1G */
 #define XFS_MIN_IO_LOG         PAGE_SHIFT
 
-#define XFS_LAST_UNMOUNT_WAS_CLEAN(mp) \
-                               ((mp)->m_flags & XFS_MOUNT_WAS_CLEAN)
-#define XFS_FORCED_SHUTDOWN(mp)        ((mp)->m_flags & XFS_MOUNT_FS_SHUTDOWN)
+#define XFS_FORCED_SHUTDOWN(mp)                xfs_is_shutdown(mp)
 void xfs_do_force_shutdown(struct xfs_mount *mp, int flags, char *fname,
                int lnnum);
 #define xfs_force_shutdown(m,f)        \