Hi all - I've rebased the libxfs-4.19-sync branch with some minor fixes (below). The head of the libxfs-4.19-sync branch is commit: a891cd6 xfs: fix a null pointer dereference in xfs_bmap_extents_to_btree This is still just a backport of the kernel libxfs. I'll get to Darrick's transaction cleanups on top of this soon, but I was trying to stick with the standard "update libxfs, then get to everything else" approach. I'll push this to for-next and tag it with an -rc0 in the next day or so, barring any disasters. Thanks, -Eric changes since the last push: diff -Nurp xfsprogs-maint-clean/libxfs/libxfs_priv.h xfsprogs-maint/libxfs/libxfs_priv.h --- xfsprogs-maint-clean/libxfs/libxfs_priv.h 2018-09-02 23:09:54.825409402 -0500 +++ xfsprogs-maint/libxfs/libxfs_priv.h 2018-09-26 14:11:08.805788185 -0500 @@ -563,7 +563,7 @@ int libxfs_zero_extent(struct xfs_inode bool xfs_log_check_lsn(struct xfs_mount *, xfs_lsn_t); -#define xfs_log_in_recovery(mp) false +#define xfs_log_in_recovery(mp) (false) /* xfs_icache.c */ #define xfs_inode_set_cowblocks_tag(ip) do { } while (0) Binary files xfsprogs-maint-clean/libxfs/list_sort.o and xfsprogs-maint/libxfs/list_sort.o differ Binary files xfsprogs-maint-clean/libxfs/radix-tree.o and xfsprogs-maint/libxfs/radix-tree.o differ diff -Nurp xfsprogs-maint-clean/libxfs/trans.c xfsprogs-maint/libxfs/trans.c --- xfsprogs-maint-clean/libxfs/trans.c 2018-09-02 23:09:54.826409407 -0500 +++ xfsprogs-maint/libxfs/trans.c 2018-09-26 14:10:37.664613207 -0500 @@ -80,6 +80,8 @@ libxfs_trans_roll( struct xfs_trans *trans = *tpp; struct xfs_trans_res tres; unsigned int old_blk_res; + xfs_fsblock_t old_firstblock; + struct list_head old_dfops; int error; /* @@ -89,6 +91,9 @@ libxfs_trans_roll( tres.tr_logres = trans->t_log_res; tres.tr_logcount = trans->t_log_count; old_blk_res = trans->t_blk_res; + old_firstblock = trans->t_firstblock; + /* structure copy */ + old_dfops = trans->t_dfops; /* * Commit the current transaction. @@ -113,6 +118,9 @@ libxfs_trans_roll( error = libxfs_trans_alloc(mp, &tres, 0, 0, 0, tpp); trans = *tpp; trans->t_blk_res = old_blk_res; + trans->t_firstblock = old_firstblock; + /* structure copy */ + trans->t_dfops = old_dfops; return 0; } @@ -156,6 +164,8 @@ libxfs_trans_alloc( ptr->t_mountp = mp; ptr->t_blk_res = blocks; INIT_LIST_HEAD(&ptr->t_items); + INIT_LIST_HEAD(&ptr->t_dfops); + ptr->t_firstblock = NULLFSBLOCK; #ifdef XACT_DEBUG fprintf(stderr, "allocated new transaction %p\n", ptr); #endif