From 9118651aa21688c1ce8c52e0090d133883cae8d3 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sat, 10 Aug 2024 21:39:10 +0200 Subject: [PATCH] fixup --- include/xfs_inode.h | 5 ++++- include/xfs_mount.h | 1 + include/xfs_trace.h | 7 +++++++ io/inject.c | 1 + libxfs/init.c | 11 ++++++++++- libxfs/libxfs_priv.h | 11 +++++++++++ libxfs/xfs_metadir.c | 1 - libxfs/xfs_metafile.c | 2 -- 8 files changed, 34 insertions(+), 5 deletions(-) diff --git a/include/xfs_inode.h b/include/xfs_inode.h index aa6cb9ac4..72e176aeb 100644 --- a/include/xfs_inode.h +++ b/include/xfs_inode.h @@ -226,7 +226,10 @@ typedef struct xfs_inode { 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 */ diff --git a/include/xfs_mount.h b/include/xfs_mount.h index 2cf1d266c..409587ab8 100644 --- a/include/xfs_mount.h +++ b/include/xfs_mount.h @@ -85,6 +85,7 @@ typedef struct xfs_mount { 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 */ diff --git a/include/xfs_trace.h b/include/xfs_trace.h index 9b01de646..d6c067e83 100644 --- a/include/xfs_trace.h +++ b/include/xfs_trace.h @@ -383,4 +383,11 @@ #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__ */ diff --git a/io/inject.c b/io/inject.c index 4aeb6da32..7b9a76406 100644 --- a/io/inject.c +++ b/io/inject.c @@ -64,6 +64,7 @@ error_tag(char *name) { 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; diff --git a/libxfs/init.c b/libxfs/init.c index b6cc472a8..28ec64204 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -593,6 +593,15 @@ xfs_agbtree_compute_maxlevels( 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( @@ -609,7 +618,7 @@ 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. */ diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h index 4ac02cc06..9bba141ad 100644 --- a/libxfs/libxfs_priv.h +++ b/libxfs/libxfs_priv.h @@ -222,6 +222,17 @@ uint32_t get_random_u32(void); #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 diff --git a/libxfs/xfs_metadir.c b/libxfs/xfs_metadir.c index 207abd2be..9727980c0 100644 --- a/libxfs/xfs_metadir.c +++ b/libxfs/xfs_metadir.c @@ -29,7 +29,6 @@ #include "xfs_parent.h" #include "xfs_health.h" #include "xfs_errortag.h" -#include "xfs_error.h" #include "xfs_btree.h" #include "xfs_alloc.h" diff --git a/libxfs/xfs_metafile.c b/libxfs/xfs_metafile.c index f16b31cd5..5c70e1cf2 100644 --- a/libxfs/xfs_metafile.c +++ b/libxfs/xfs_metafile.c @@ -17,9 +17,7 @@ #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. */ -- 2.50.1