struct xfs_ifork i_af; /* attribute fork */
enum xfs_metafile_type i_metatype; /* XFS_METAFILE_* */
struct xfs_inode_log_item *i_itemp; /* logging information */
- unsigned int i_delayed_blks; /* count of delay alloc blks */
+ uint64_t i_delayed_blks; /* count of delay alloc blks */
+ /* Space that has been set aside to root a btree in this file. */
+ uint64_t i_meta_resv_asked;
+
xfs_fsize_t i_disk_size; /* number of bytes in file */
xfs_rfsblock_t i_nblocks; /* # of direct & btree blocks */
prid_t i_projid; /* owner's project id */
uint m_rmap_maxlevels; /* max rmap btree levels */
uint m_refc_maxlevels; /* max refc btree levels */
unsigned int m_agbtree_maxlevels; /* max level of all AG btrees */
+ unsigned int m_rtbtree_maxlevels; /* max level of all rt btrees */
xfs_extlen_t m_ag_prealloc_blocks; /* reserved ag blocks */
uint m_alloc_set_aside; /* space we can't use */
uint m_ag_max_usable; /* max space per AG */
#define trace_xfs_iunlink_reload_next(...) ((void) 0)
#define trace_xfs_iunlink_remove(...) ((void) 0)
+#define trace_xfs_metafile_resv_alloc_space(...) ((void) 0)
+#define trace_xfs_metafile_resv_critical(...) ((void) 0)
+#define trace_xfs_metafile_resv_free(...) ((void) 0)
+#define trace_xfs_metafile_resv_free_space(...) ((void) 0)
+#define trace_xfs_metafile_resv_init(...) ((void) 0)
+#define trace_xfs_metafile_resv_init_error(...) ((void) 0)
+
#endif /* __TRACE_H__ */
{ XFS_ERRTAG_WB_DELAY_MS, "wb_delay_ms" },
{ XFS_ERRTAG_WRITE_DELAY_MS, "write_delay_ms" },
{ XFS_ERRTAG_EXCHMAPS_FINISH_ONE, "exchmaps_finish_one" },
+ { XFS_ERRTAG_METAFILE_RESV_CRITICAL, "metafile_resv_crit" },
{ XFS_ERRTAG_MAX, NULL }
};
int count;
mp->m_agbtree_maxlevels = max(levels, mp->m_refc_maxlevels);
}
+/* Compute maximum possible height for realtime btree types for this fs. */
+static inline void
+xfs_rtbtree_compute_maxlevels(
+ struct xfs_mount *mp)
+{
+ /* This will be filled in later. */
+ mp->m_rtbtree_maxlevels = 0;
+}
+
/* Compute maximum possible height of all btrees. */
void
libxfs_compute_all_maxlevels(
xfs_refcountbt_compute_maxlevels(mp);
xfs_agbtree_compute_maxlevels(mp);
-
+ xfs_rtbtree_compute_maxlevels(mp);
}
/* Mount the metadata files under the metadata directory tree. */
#define get_random_u32() (0)
#endif
+static inline int
+__percpu_counter_compare(uint64_t *count, int64_t rhs, int32_t batch)
+{
+ if (*count > rhs)
+ return 1;
+ else if (*count < rhs)
+ return -1;
+ return 0;
+}
+
+
#define PAGE_SIZE getpagesize()
#define inode_peek_iversion(inode) (inode)->i_version
#include "xfs_parent.h"
#include "xfs_health.h"
#include "xfs_errortag.h"
-#include "xfs_error.h"
#include "xfs_btree.h"
#include "xfs_alloc.h"
#include "xfs_metafile.h"
#include "xfs_trace.h"
#include "xfs_inode.h"
-#include "xfs_quota.h"
#include "xfs_errortag.h"
-#include "xfs_error.h"
#include "xfs_alloc.h"
/* Set up an inode to be recognized as a metadata directory inode. */