Merge tag 'fsnotify_for_v6.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / fs / xfs / xfs_mount.h
index d491e31d33aac3fd9fd92d42b90a730fea7d6cd5..db9dade7d22a19f1b1abe3f20405dc0397ea2711 100644 (file)
@@ -119,28 +119,20 @@ typedef struct xfs_mount {
        struct super_block      *m_super;
        struct xfs_ail          *m_ail;         /* fs active log item list */
        struct xfs_buf          *m_sb_bp;       /* buffer for superblock */
+       struct xfs_buf          *m_rtsb_bp;     /* realtime superblock */
        char                    *m_rtname;      /* realtime device name */
        char                    *m_logname;     /* external log device name */
        struct xfs_da_geometry  *m_dir_geo;     /* directory block geometry */
        struct xfs_da_geometry  *m_attr_geo;    /* attribute block geometry */
        struct xlog             *m_log;         /* log specific stuff */
-       struct xfs_inode        *m_rbmip;       /* pointer to bitmap inode */
-       struct xfs_inode        *m_rsumip;      /* pointer to summary inode */
        struct xfs_inode        *m_rootip;      /* pointer to root directory */
        struct xfs_inode        *m_metadirip;   /* ptr to metadata directory */
+       struct xfs_inode        *m_rtdirip;     /* ptr to realtime metadir */
        struct xfs_quotainfo    *m_quotainfo;   /* disk quota information */
        struct xfs_buftarg      *m_ddev_targp;  /* data device */
        struct xfs_buftarg      *m_logdev_targp;/* log device */
        struct xfs_buftarg      *m_rtdev_targp; /* rt device */
        void __percpu           *m_inodegc;     /* percpu inodegc structures */
-
-       /*
-        * Optional cache of rt summary level per bitmap block with the
-        * invariant that m_rsum_cache[bbno] > the maximum i for which
-        * rsum[i][bbno] != 0, or 0 if rsum[i][bbno] == 0 for all i.
-        * Reads and writes are serialized by the rsumip inode lock.
-        */
-       uint8_t                 *m_rsum_cache;
        struct xfs_mru_cache    *m_filestream;  /* per-mount filestream data */
        struct workqueue_struct *m_buf_workqueue;
        struct workqueue_struct *m_unwritten_workqueue;
@@ -155,10 +147,11 @@ typedef struct xfs_mount {
        uint8_t                 m_agno_log;     /* log #ag's */
        uint8_t                 m_sectbb_log;   /* sectlog - BBSHIFT */
        int8_t                  m_rtxblklog;    /* log2 of rextsize, if possible */
-       int8_t                  m_rgblklog;     /* log2 of rt group sz if possible */
+
        uint                    m_blockmask;    /* sb_blocksize-1 */
        uint                    m_blockwsize;   /* sb_blocksize in words */
-       uint                    m_blockwmask;   /* blockwsize-1 */
+       /* number of rt extents per rt bitmap block if rtgroups enabled */
+       unsigned int            m_rtx_per_rbmblock;
        uint                    m_alloc_mxr[2]; /* max alloc btree records */
        uint                    m_alloc_mnr[2]; /* min alloc btree records */
        uint                    m_bmap_dmxr[2]; /* max bmap btree records */
@@ -182,16 +175,14 @@ typedef struct xfs_mount {
        uint                    m_allocsize_blocks; /* min write size blocks */
        int                     m_logbufs;      /* number of log buffers */
        int                     m_logbsize;     /* size of each log buffer */
-       uint                    m_rsumlevels;   /* rt summary levels */
+       unsigned int            m_rsumlevels;   /* rt summary levels */
        xfs_filblks_t           m_rsumblocks;   /* size of rt summary, FSBs */
-       uint32_t                m_rgblocks;     /* size of rtgroup in rtblocks */
        int                     m_fixedfsid[2]; /* unchanged for life of FS */
        uint                    m_qflags;       /* quota status flags */
        uint64_t                m_features;     /* active filesystem features */
        uint64_t                m_low_space[XFS_LOWSP_MAX];
        uint64_t                m_low_rtexts[XFS_LOWSP_MAX];
        uint64_t                m_rtxblkmask;   /* rt extent block mask */
-       uint64_t                m_rgblkmask;    /* rt group block mask */
        struct xfs_ino_geometry m_ino_geo;      /* inode geometry */
        struct xfs_trans_resv   m_resv;         /* precomputed res values */
                                                /* low free space thresholds */
@@ -262,6 +253,7 @@ typedef struct xfs_mount {
 #endif
        xfs_agnumber_t          m_agfrotor;     /* last ag where space found */
        atomic_t                m_agirotor;     /* last ag dir inode alloced */
+       atomic_t                m_rtgrotor;     /* last rtgroup rtpicked */
 
        /* Memory shrinker to throttle and reprioritize inodegc */
        struct shrinker         *m_inodegc_shrinker;
@@ -396,12 +388,14 @@ __XFS_HAS_FEAT(metadir, METADIR)
 
 static inline bool xfs_has_rtgroups(struct xfs_mount *mp)
 {
-       return false;
+       /* all metadir file systems also allow rtgroups */
+       return xfs_has_metadir(mp);
 }
 
 static inline bool xfs_has_rtsb(struct xfs_mount *mp)
 {
-       return false;
+       /* all rtgroups filesystems with an rt section have an rtsb */
+       return xfs_has_rtgroups(mp) && xfs_has_realtime(mp);
 }
 
 /*
@@ -505,6 +499,8 @@ __XFS_HAS_FEAT(nouuid, NOUUID)
 #define XFS_OPSTATE_WARNED_PPTR                16
 /* Kernel has logged a warning about metadata dirs being used on this fs. */
 #define XFS_OPSTATE_WARNED_METADIR     17
+/* Filesystem should use qflags to determine quotaon status */
+#define XFS_OPSTATE_RESUMING_QUOTAON   18
 
 #define __XFS_IS_OPSTATE(name, NAME) \
 static inline bool xfs_is_ ## name (struct xfs_mount *mp) \
@@ -529,9 +525,24 @@ __XFS_IS_OPSTATE(inodegc_enabled, INODEGC_ENABLED)
 __XFS_IS_OPSTATE(blockgc_enabled, BLOCKGC_ENABLED)
 #ifdef CONFIG_XFS_QUOTA
 __XFS_IS_OPSTATE(quotacheck_running, QUOTACHECK_RUNNING)
+__XFS_IS_OPSTATE(resuming_quotaon, RESUMING_QUOTAON)
 #else
-# define xfs_is_quotacheck_running(mp) (false)
-#endif
+static inline bool xfs_is_quotacheck_running(struct xfs_mount *mp)
+{
+       return false;
+}
+static inline bool xfs_is_resuming_quotaon(struct xfs_mount *mp)
+{
+       return false;
+}
+static inline void xfs_set_resuming_quotaon(struct xfs_mount *m)
+{
+}
+static inline bool xfs_clear_resuming_quotaon(struct xfs_mount *mp)
+{
+       return false;
+}
+#endif /* CONFIG_XFS_QUOTA */
 __XFS_IS_OPSTATE(done_with_log_incompat, UNSET_LOG_INCOMPAT)
 __XFS_IS_OPSTATE(using_logged_xattrs, USE_LARP)
 
This page took 0.033788 seconds and 4 git commands to generate.