On Mon, Jun 03, 2024 at 02:29:14PM +0200, Carlos Maiolino wrote: > On Tue, May 21, 2024 at 07:45:53PM GMT, Darrick J. Wong wrote: > > Hi all, > > > > Synchronize libxfs with the kernel. > > > > If you're going to start using this code, I strongly recommend pulling > > from my git trees, which are linked below. > > > > This has been running on the djcloud for months with no problems. Enjoy! > > Comments and questions are, as always, welcome. > > The sync looks good, thanks for doing that Darrick. > > You can add: > > Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> Thanks! Final patch submission and pull requests imminent. --D > > > > xfsprogs git tree: > > https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=libxfs-sync-6.9 > > --- > > Commits in this patchset: > > * xfs: convert kmem_zalloc() to kzalloc() > > * xfs: convert kmem_alloc() to kmalloc() > > * xfs: convert remaining kmem_free() to kfree() > > * xfs: use __GFP_NOLOCKDEP instead of GFP_NOFS > > * xfs: use GFP_KERNEL in pure transaction contexts > > * xfs: clean up remaining GFP_NOFS users > > * xfs: use xfs_defer_alloc a bit more > > * xfs: Replace xfs_isilocked with xfs_assert_ilocked > > * xfs: create a static name for the dot entry too > > * xfs: create a predicate to determine if two xfs_names are the same > > * xfs: create a macro for decoding ftypes in tracepoints > > * xfs: report the health of quota counts > > * xfs: implement live quotacheck inode scan > > * xfs: report health of inode link counts > > * xfs: teach scrub to check file nlinks > > * xfs: separate the marking of sick and checked metadata > > * xfs: report fs corruption errors to the health tracking system > > * xfs: report ag header corruption errors to the health tracking system > > * xfs: report block map corruption errors to the health tracking system > > * xfs: report btree block corruption errors to the health system > > * xfs: report dir/attr block corruption errors to the health system > > * xfs: report inode corruption errors to the health system > > * xfs: report realtime metadata corruption errors to the health system > > * xfs: report XFS_IS_CORRUPT errors to the health system > > * xfs: add secondary and indirect classes to the health tracking system > > * xfs: remember sick inodes that get inactivated > > * xfs: update health status if we get a clean bill of health > > * xfs: consolidate btree block freeing tracepoints > > * xfs: consolidate btree block allocation tracepoints > > * xfs: set the btree cursor bc_ops in xfs_btree_alloc_cursor > > * xfs: drop XFS_BTREE_CRC_BLOCKS > > * xfs: encode the btree geometry flags in the btree ops structure > > * xfs: remove bc_ino.flags > > * xfs: consolidate the xfs_alloc_lookup_* helpers > > * xfs: turn the allocbt cursor active field into a btree flag > > * xfs: extern some btree ops structures > > * xfs: initialize btree blocks using btree_ops structure > > * xfs: rename btree block/buffer init functions > > * xfs: btree convert xfs_btree_init_block to xfs_btree_init_buf calls > > * xfs: remove the unnecessary daddr paramter to _init_block > > * xfs: set btree block buffer ops in _init_buf > > * xfs: move lru refs to the btree ops structure > > * xfs: move the btree stats offset into struct btree_ops > > * xfs: factor out a xfs_btree_owner helper > > * xfs: factor out a btree block owner check > > * xfs: store the btree pointer length in struct xfs_btree_ops > > * xfs: split out a btree type from the btree ops geometry flags > > * xfs: split the per-btree union in struct xfs_btree_cur > > * xfs: create predicate to determine if cursor is at inode root level > > * xfs: move comment about two 2 keys per pointer in the rmap btree > > * xfs: add a xfs_btree_init_ptr_from_cur > > * xfs: don't override bc_ops for staging btrees > > * xfs: fold xfs_allocbt_init_common into xfs_allocbt_init_cursor > > * xfs: remove xfs_allocbt_stage_cursor > > * xfs: fold xfs_inobt_init_common into xfs_inobt_init_cursor > > * xfs: remove xfs_inobt_stage_cursor > > * xfs: fold xfs_refcountbt_init_common into xfs_refcountbt_init_cursor > > * xfs: remove xfs_refcountbt_stage_cursor > > * xfs: fold xfs_rmapbt_init_common into xfs_rmapbt_init_cursor > > * xfs: remove xfs_rmapbt_stage_cursor > > * xfs: make full use of xfs_btree_stage_ifakeroot in xfs_bmbt_stage_cursor > > * xfs: make staging file forks explicit > > * xfs: fold xfs_bmbt_init_common into xfs_bmbt_init_cursor > > * xfs: remove xfs_bmbt_stage_cursor > > * xfs: split the agf_roots and agf_levels arrays > > * xfs: add a name field to struct xfs_btree_ops > > * xfs: add a sick_mask to struct xfs_btree_ops > > * xfs: split xfs_allocbt_init_cursor > > * xfs: remove xfs_inobt_cur > > * xfs: remove the btnum argument to xfs_inobt_count_blocks > > * xfs: split xfs_inobt_insert_sprec > > * xfs: split xfs_inobt_init_cursor > > * xfs: pass a 'bool is_finobt' to xfs_inobt_insert > > * xfs: remove xfs_btnum_t > > * xfs: simplify xfs_btree_check_sblock_siblings > > * xfs: simplify xfs_btree_check_lblock_siblings > > * xfs: open code xfs_btree_check_lptr in xfs_bmap_btree_to_extents > > * xfs: consolidate btree ptr checking > > * xfs: misc cleanups for __xfs_btree_check_sblock > > * xfs: remove the crc variable in __xfs_btree_check_lblock > > * xfs: tighten up validation of root block in inode forks > > * xfs: consolidate btree block verification > > * xfs: rename btree helpers that depends on the block number representation > > * xfs: factor out a __xfs_btree_check_lblock_hdr helper > > * xfs: remove xfs_btree_reada_bufl > > * xfs: remove xfs_btree_reada_bufs > > * xfs: move and rename xfs_btree_read_bufl > > * libxfs: teach buftargs to maintain their own buffer hashtable > > * libxfs: add xfile support > > * libxfs: partition memfd files to avoid using too many fds > > * xfs: teach buftargs to maintain their own buffer hashtable > > * libxfs: support in-memory buffer cache targets > > * xfs: add a xfs_btree_ptrs_equal helper > > * xfs: support in-memory btrees > > * xfs: launder in-memory btree buffers before transaction commit > > * xfs: create a helper to decide if a file mapping targets the rt volume > > * xfs: repair the rmapbt > > * xfs: create a shadow rmap btree during rmap repair > > * xfs: hook live rmap operations during a repair operation > > * xfs: clean up bmap log intent item tracepoint callsites > > * xfs: move xfs_bmap_defer_add to xfs_bmap_item.c > > * xfs: fix xfs_bunmapi to allow unmapping of partial rt extents > > * xfs: add a realtime flag to the bmap update log redo items > > * xfs: support deferred bmap updates on the attr fork > > * xfs: xfs_bmap_finish_one should map unwritten extents properly > > * xfs: move xfs_symlink_remote.c declarations to xfs_symlink_remote.h > > * xfs: move remote symlink target read function to libxfs > > * xfs: move symlink target write function to libxfs > > * xfs: xfs_btree_bload_prep_block() should use __GFP_NOFAIL > > * xfs: shrink failure needs to hold AGI buffer > > * xfs: allow sunit mount option to repair bad primary sb stripe values > > --- > > copy/xfs_copy.c | 4 > > db/agf.c | 28 - > > db/bmap_inflate.c | 8 > > db/check.c | 14 - > > db/freesp.c | 8 > > db/metadump.c | 12 > > include/kmem.h | 5 > > include/libxfs.h | 4 > > include/xfs_mount.h | 5 > > include/xfs_trace.h | 17 - > > include/xfs_trans.h | 1 > > libxfs/Makefile | 9 > > libxfs/buf_mem.c | 313 ++++++++++++ > > libxfs/buf_mem.h | 30 + > > libxfs/defer_item.c | 15 + > > libxfs/defer_item.h | 13 + > > libxfs/init.c | 52 +- > > libxfs/libxfs_api_defs.h | 10 > > libxfs/libxfs_io.h | 42 +- > > libxfs/libxfs_priv.h | 19 - > > libxfs/logitem.c | 2 > > libxfs/rdwr.c | 86 ++- > > libxfs/trans.c | 40 ++ > > libxfs/util.c | 10 > > libxfs/xfile.c | 393 +++++++++++++++ > > libxfs/xfile.h | 34 + > > libxfs/xfs_ag.c | 79 ++- > > libxfs/xfs_ag.h | 18 - > > libxfs/xfs_alloc.c | 258 ++++++---- > > libxfs/xfs_alloc_btree.c | 191 ++++--- > > libxfs/xfs_alloc_btree.h | 10 > > libxfs/xfs_attr.c | 5 > > libxfs/xfs_attr_leaf.c | 22 + > > libxfs/xfs_attr_remote.c | 37 + > > libxfs/xfs_bmap.c | 365 ++++++++++---- > > libxfs/xfs_bmap.h | 19 + > > libxfs/xfs_bmap_btree.c | 152 ++---- > > libxfs/xfs_bmap_btree.h | 5 > > libxfs/xfs_btree.c | 1097 ++++++++++++++++++++++++++----------------- > > libxfs/xfs_btree.h | 274 +++++------ > > libxfs/xfs_btree_mem.c | 346 ++++++++++++++ > > libxfs/xfs_btree_mem.h | 75 +++ > > libxfs/xfs_btree_staging.c | 133 +---- > > libxfs/xfs_btree_staging.h | 10 > > libxfs/xfs_da_btree.c | 59 ++ > > libxfs/xfs_da_format.h | 11 > > libxfs/xfs_defer.c | 25 - > > libxfs/xfs_dir2.c | 59 +- > > libxfs/xfs_dir2.h | 13 + > > libxfs/xfs_dir2_block.c | 8 > > libxfs/xfs_dir2_data.c | 3 > > libxfs/xfs_dir2_leaf.c | 3 > > libxfs/xfs_dir2_node.c | 7 > > libxfs/xfs_dir2_sf.c | 16 - > > libxfs/xfs_format.h | 21 - > > libxfs/xfs_fs.h | 8 > > libxfs/xfs_health.h | 95 ++++ > > libxfs/xfs_ialloc.c | 232 ++++++--- > > libxfs/xfs_ialloc_btree.c | 173 +++---- > > libxfs/xfs_ialloc_btree.h | 11 > > libxfs/xfs_iext_tree.c | 26 + > > libxfs/xfs_inode_buf.c | 12 > > libxfs/xfs_inode_fork.c | 49 +- > > libxfs/xfs_inode_fork.h | 1 > > libxfs/xfs_log_format.h | 4 > > libxfs/xfs_refcount.c | 69 ++- > > libxfs/xfs_refcount_btree.c | 78 +-- > > libxfs/xfs_refcount_btree.h | 2 > > libxfs/xfs_rmap.c | 284 +++++++++-- > > libxfs/xfs_rmap.h | 31 + > > libxfs/xfs_rmap_btree.c | 240 +++++++-- > > libxfs/xfs_rmap_btree.h | 8 > > libxfs/xfs_rtbitmap.c | 11 > > libxfs/xfs_sb.c | 42 +- > > libxfs/xfs_sb.h | 5 > > libxfs/xfs_shared.h | 67 ++- > > libxfs/xfs_symlink_remote.c | 155 ++++++ > > libxfs/xfs_symlink_remote.h | 26 + > > libxfs/xfs_trans_inode.c | 6 > > libxfs/xfs_types.h | 26 - > > logprint/log_misc.c | 8 > > logprint/log_print_all.c | 8 > > mkfs/xfs_mkfs.c | 8 > > repair/agbtree.c | 28 + > > repair/bmap_repair.c | 4 > > repair/bulkload.c | 2 > > repair/phase5.c | 28 + > > repair/phase6.c | 4 > > repair/prefetch.c | 12 > > repair/prefetch.h | 1 > > repair/progress.c | 14 - > > repair/progress.h | 2 > > repair/scan.c | 18 - > > repair/xfs_repair.c | 47 +- > > 94 files changed, 4425 insertions(+), 1915 deletions(-) > > create mode 100644 libxfs/buf_mem.c > > create mode 100644 libxfs/buf_mem.h > > create mode 100644 libxfs/defer_item.h > > create mode 100644 libxfs/xfile.c > > create mode 100644 libxfs/xfile.h > > create mode 100644 libxfs/xfs_btree_mem.c > > create mode 100644 libxfs/xfs_btree_mem.h > > create mode 100644 libxfs/xfs_symlink_remote.h > > > >