[PATCHSET 00/10] xfs: constify btree operations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

After finishing the bug fixes in the previous series, the thought
occurred to me that I really ought to check the main index query
functions around XFS and make sure that they weren't changing their
arguments either.  Since btrees are one of the major data structure
types in XFS, I decided to concentrate there.

Starting with the query_range and query_all functions, I started
constifying the btree record and key parameters to make sure that the
query functions don't modify the search parameters and that the callback
functions don't modify the record pointer that is passed from the range
query function.  That spiralled from there into a full blown audit of
all the btree predicates and extraction functions; many of them could be
constified too.

AFAICT there's almost no change in the generated code, which is what
you'd expect since there was only one query range caller in the entire
codebase that actually messed with caller memory.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=constify-btree-5.15
---
 fs/xfs/libxfs/xfs_alloc.c          |    6 +-
 fs/xfs/libxfs/xfs_alloc.h          |   10 ++--
 fs/xfs/libxfs/xfs_alloc_btree.c    |   94 ++++++++++++++++++------------------
 fs/xfs/libxfs/xfs_bmap_btree.c     |   48 +++++++++---------
 fs/xfs/libxfs/xfs_bmap_btree.h     |    7 ++-
 fs/xfs/libxfs/xfs_btree.c          |   84 ++++++++++++++++----------------
 fs/xfs/libxfs/xfs_btree.h          |   56 +++++++++++----------
 fs/xfs/libxfs/xfs_btree_staging.c  |   14 +++--
 fs/xfs/libxfs/xfs_ialloc.c         |    4 +-
 fs/xfs/libxfs/xfs_ialloc.h         |    3 +
 fs/xfs/libxfs/xfs_ialloc_btree.c   |   70 +++++++++++++--------------
 fs/xfs/libxfs/xfs_refcount.c       |    4 +-
 fs/xfs/libxfs/xfs_refcount.h       |    2 -
 fs/xfs/libxfs/xfs_refcount_btree.c |   48 +++++++++---------
 fs/xfs/libxfs/xfs_rmap.c           |   28 +++++------
 fs/xfs/libxfs/xfs_rmap.h           |   11 ++--
 fs/xfs/libxfs/xfs_rmap_btree.c     |   64 ++++++++++++-------------
 fs/xfs/scrub/agheader.c            |    2 -
 fs/xfs/scrub/agheader_repair.c     |    4 +-
 fs/xfs/scrub/alloc.c               |    2 -
 fs/xfs/scrub/bmap.c                |   29 ++++++-----
 fs/xfs/scrub/btree.h               |    4 +-
 fs/xfs/scrub/common.c              |    2 -
 fs/xfs/scrub/ialloc.c              |    2 -
 fs/xfs/scrub/refcount.c            |    4 +-
 fs/xfs/scrub/repair.c              |    2 -
 fs/xfs/scrub/rmap.c                |    2 -
 fs/xfs/scrub/rtbitmap.c            |    2 -
 fs/xfs/xfs_fsmap.c                 |   14 +++--
 fs/xfs/xfs_rtalloc.h               |    6 +-
 fs/xfs/xfs_trace.h                 |    4 +-
 31 files changed, 321 insertions(+), 311 deletions(-)




[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux