[packages/xfsprogs] - up to 4.19.0

arekm arekm at pld-linux.org
Sat Nov 10 11:10:14 CET 2018


commit 37cebed771627e7c7398e848879dc2ba89856333
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Sat Nov 10 11:10:06 2018 +0100

    - up to 4.19.0

 misc.patch    | 241 ----------------------------------------------------------
 xfsprogs.spec |   8 +-
 2 files changed, 3 insertions(+), 246 deletions(-)
---
diff --git a/xfsprogs.spec b/xfsprogs.spec
index 2b0e887..60fea47 100644
--- a/xfsprogs.spec
+++ b/xfsprogs.spec
@@ -3,16 +3,15 @@
 Summary:	Tools for the XFS filesystem
 Summary(pl.UTF-8):	Narzędzia do systemu plików XFS
 Name:		xfsprogs
-Version:	4.18.0
-Release:	3
+Version:	4.19.0
+Release:	1
 License:	LGPL v2.1 (libhandle), GPL v2 (the rest)
 Group:		Applications/System
 Source0:	https://kernel.org/pub/linux/utils/fs/xfs/xfsprogs/%{name}-%{version}.tar.gz
-# Source0-md5:	6a2a92d3d63e3548b86fd7ad1a8f5af2
+# Source0-md5:	955b3dad9cbe01d6b21a562cc0100e04
 Source1:	xfs_lsprojid
 Patch0:		%{name}-miscfix-v2.patch
 Patch1:		%{name}-pl.po-update.patch
-Patch2:		misc.patch
 URL:		http://www.xfs.org/
 BuildRequires:	autoconf >= 2.50
 BuildRequires:	automake
@@ -106,7 +105,6 @@ Biblioteki statyczne do XFS.
 %setup -q
 %patch0 -p1
 %patch1 -p1
-%patch2 -p1
 
 %{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' scrub/xfs_scrub_all.in tools/xfsbuflock.py
 
diff --git a/misc.patch b/misc.patch
deleted file mode 100644
index 14aa86a..0000000
--- a/misc.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-From: Darrick J. Wong <darrick.wong at oracle.com>
-
-When we added a new defer op type for agfl block freeing to the kernel,
-we forgot to add that type to the userspace side of things.  This will
-cause spontaneous combustion in xfs_repair if we try to rebuild
-directories.
-
-Fixes: d5c1b462232 ("xfs: defer agfl block frees when dfops is available")
-Signed-off-by: Darrick J. Wong <darrick.wong at oracle.com>
----
- libxfs/defer_item.c |   44 ++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
-
-diff --git a/libxfs/defer_item.c b/libxfs/defer_item.c
-index b7185c1a..82aa32a8 100644
---- a/libxfs/defer_item.c
-+++ b/libxfs/defer_item.c
-@@ -118,11 +118,55 @@ static const struct xfs_defer_op_type xfs_extent_free_defer_type = {
- 	.cancel_item	= xfs_extent_free_cancel_item,
- };
- 
-+/*
-+ * AGFL blocks are accounted differently in the reserve pools and are not
-+ * inserted into the busy extent list.
-+ */
-+STATIC int
-+xfs_agfl_free_finish_item(
-+	struct xfs_trans		*tp,
-+	struct list_head		*item,
-+	void				*done_item,
-+	void				**state)
-+{
-+	struct xfs_mount		*mp = tp->t_mountp;
-+	struct xfs_extent_free_item	*free;
-+	struct xfs_buf			*agbp;
-+	int				error;
-+	xfs_agnumber_t			agno;
-+	xfs_agblock_t			agbno;
-+
-+	free = container_of(item, struct xfs_extent_free_item, xefi_list);
-+	ASSERT(free->xefi_blockcount == 1);
-+	agno = XFS_FSB_TO_AGNO(mp, free->xefi_startblock);
-+	agbno = XFS_FSB_TO_AGBNO(mp, free->xefi_startblock);
-+
-+	error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp);
-+	if (!error)
-+		error = xfs_free_agfl_block(tp, agno, agbno, agbp,
-+					    &free->xefi_oinfo);
-+	kmem_free(free);
-+	return error;
-+}
-+
-+/* sub-type with special handling for AGFL deferred frees */
-+static const struct xfs_defer_op_type xfs_agfl_free_defer_type = {
-+	.type		= XFS_DEFER_OPS_TYPE_AGFL_FREE,
-+	.diff_items	= xfs_extent_free_diff_items,
-+	.create_intent	= xfs_extent_free_create_intent,
-+	.abort_intent	= xfs_extent_free_abort_intent,
-+	.log_item	= xfs_extent_free_log_item,
-+	.create_done	= xfs_extent_free_create_done,
-+	.finish_item	= xfs_agfl_free_finish_item,
-+	.cancel_item	= xfs_extent_free_cancel_item,
-+};
-+
- /* Register the deferred op type. */
- void
- xfs_extent_free_init_defer_op(void)
- {
- 	xfs_defer_init_op_type(&xfs_extent_free_defer_type);
-+	xfs_defer_init_op_type(&xfs_agfl_free_defer_type);
- }
- 
- /* Reverse Mapping */
-Subject: [PATCH 1/2] xfs_repair: initialize realloced bplist in
- longform_dir2_entry_check
-From:   Eric Sandeen <sandeen at sandeen.net>
-
-If we need to realloc the bplist[] array holding buffers for a given
-directory, we don't initialize the new slots.  This causes a problem
-if the directory has holes, because those slots never get filled in.
-
-At the end of the function we call libxfs_putbuf for every non-null
-slot, and any uninitialized slots are segfault landmines.
-
-Make sure we initialize all new slots to NULL for this reason.
-
-Reported-by: Oleg Davydov <burunduk3 at gmail.com>
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
----
-
-diff --git a/repair/phase6.c b/repair/phase6.c
-index b87c751..9d24a4f 100644
---- a/repair/phase6.c
-+++ b/repair/phase6.c
-@@ -2348,6 +2348,8 @@ longform_dir2_entry_check(xfs_mount_t	*mp,
- 
- 		db = xfs_dir2_da_to_db(mp->m_dir_geo, da_bno);
- 		if (db >= num_bps) {
-+			int last_size = num_bps;
-+
- 			/* more data blocks than expected */
- 			num_bps = db + 1;
- 			bplist = realloc(bplist, num_bps * sizeof(struct xfs_buf*));
-@@ -2355,6 +2357,9 @@ longform_dir2_entry_check(xfs_mount_t	*mp,
- 				do_error(_("realloc failed in %s (%zu bytes)\n"),
- 					__func__,
- 					num_bps * sizeof(struct xfs_buf*));
-+			/* Initialize the new elements */
-+			for (i = last_size; i < num_bps; i++)
-+				bplist[i] = NULL;
- 		}
- 
- 		if (isblock)
-
-Subject: [PATCH 2/2] xfs_repair: continue after xfs_bunmapi deadlock avoidance
-From:   Eric Sandeen <sandeen at sandeen.net>
-
-After commit:
-
-15a8bcc xfs: fix multi-AG deadlock in xfs_bunmapi
-
-xfs_bunmapi can legitimately return before all work is done.
-Sadly nobody told xfs_repair, so it fires an assert:
-
- phase6.c:1410: longform_dir2_rebuild: Assertion `done' failed. 
-
-Fix this by calling back in until all work is done, as we do
-in the kernel.
-
-Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1641116
-Reported-by: Tomasz Torcz <tomek at pipebreaker.pl>
-Signed-off-by: Eric Sandeen <sandeen at redhat.com>
----
-
-diff --git a/repair/phase6.c b/repair/phase6.c
-index e017326..b87c751 100644
---- a/repair/phase6.c
-+++ b/repair/phase6.c
-@@ -1317,7 +1317,7 @@ longform_dir2_rebuild(
- 	xfs_fileoff_t		lastblock;
- 	xfs_inode_t		pip;
- 	dir_hash_ent_t		*p;
--	int			done;
-+	int			done = 0;
- 
- 	/*
- 	 * trash directory completely and rebuild from scratch using the
-@@ -1352,12 +1352,25 @@ longform_dir2_rebuild(
- 			error);
- 
- 	/* free all data, leaf, node and freespace blocks */
--	error = -libxfs_bunmapi(tp, ip, 0, lastblock, XFS_BMAPI_METADATA, 0,
--				&firstblock, &dfops, &done);
--	if (error) {
--		do_warn(_("xfs_bunmapi failed -- error - %d\n"), error);
--		goto out_bmap_cancel;
--	}
-+	while (!done) {
-+	       error = -libxfs_bunmapi(tp, ip, 0, lastblock, XFS_BMAPI_METADATA,
-+			               0, &firstblock, &dfops, &done);
-+	       if (error) {
-+		       do_warn(_("xfs_bunmapi failed -- error - %d\n"), error);
-+		       goto out_bmap_cancel;
-+	       }
-+	       error = xfs_defer_finish(&tp, &dfops);
-+	       if (error) {
-+		       do_warn(("defer_finish failed -- error - %d\n"), error);
-+		       goto out_bmap_cancel;
-+	       }
-+	       /*
-+		* Close out trans and start the next one in the chain.
-+		*/
-+	       error = xfs_trans_roll_inode(&tp, ip);
-+	       if (error)
-+			goto out_bmap_cancel;
-+        }
- 
- 	ASSERT(done);
- 
-
-From:   "Darrick J. Wong" <darrick.wong at oracle.com>
-Subject: [PATCH] libxfs: check all defer ops types
-
-From: Darrick J. Wong <darrick.wong at oracle.com>
-
-Make sure we have all the defer ops types loaded before proceeding.
-
-Signed-off-by: Darrick J. Wong <darrick.wong at oracle.com>
----
- libxfs/init.c      |    5 +++++
- libxfs/xfs_defer.c |   12 ++++++++++++
- libxfs/xfs_defer.h |    1 +
- 3 files changed, 18 insertions(+)
-
-diff --git a/libxfs/init.c b/libxfs/init.c
-index 750b8f20..d1fdc3a8 100644
---- a/libxfs/init.c
-+++ b/libxfs/init.c
-@@ -253,6 +253,11 @@ libxfs_init(libxfs_init_t *a)
- 	xfs_rmap_update_init_defer_op();
- 	xfs_refcount_update_init_defer_op();
- 	xfs_bmap_update_init_defer_op();
-+	if (!xfs_defer_check_all_present()) {
-+		fprintf(stderr, _("%s: defer ops not all there\n"),
-+			progname);
-+		goto done;
-+	}
- 
- 	radix_tree_init();
- 
-diff --git a/libxfs/xfs_defer.c b/libxfs/xfs_defer.c
-index 5a6da0f3..cd3a8ef3 100644
---- a/libxfs/xfs_defer.c
-+++ b/libxfs/xfs_defer.c
-@@ -545,3 +545,15 @@ xfs_defer_move(
- 
- 	xfs_defer_reset(stp);
- }
-+
-+/* Make sure we filled out all the defer_ops types. */
-+bool
-+xfs_defer_check_all_present(void)
-+{
-+	int		x;
-+
-+	for(x = 0; x < XFS_DEFER_OPS_TYPE_MAX; x++)
-+		if (defer_op_types[x] == NULL)
-+			return false;
-+	return true;
-+}
-diff --git a/libxfs/xfs_defer.h b/libxfs/xfs_defer.h
-index 2584a5b9..bc7ae7ff 100644
---- a/libxfs/xfs_defer.h
-+++ b/libxfs/xfs_defer.h
-@@ -57,5 +57,6 @@ struct xfs_defer_op_type {
- };
- 
- void xfs_defer_init_op_type(const struct xfs_defer_op_type *type);
-+bool xfs_defer_check_all_present(void);
- 
- #endif /* __XFS_DEFER_H__ */
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xfsprogs.git/commitdiff/37cebed771627e7c7398e848879dc2ba89856333



More information about the pld-cvs-commit mailing list