Commit 306195f3 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: pivot online scrub away from kmem.[ch]



Convert all the online scrub code to use the Linux slab allocator
functions directly instead of going through the kmem wrappers.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent fcd2a434
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -685,7 +685,7 @@ xrep_agfl_init_header(
		if (br->len)
			break;
		list_del(&br->list);
		kmem_free(br);
		kfree(br);
	}

	/* Write new AGFL to disk. */
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ xchk_setup_xattr_buf(
	if (ab) {
		if (sz <= ab->sz)
			return 0;
		kmem_free(ab);
		kvfree(ab);
		sc->buf = NULL;
	}

+6 −5
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
#include "xfs_trans_resv.h"
#include "xfs_mount.h"
#include "xfs_btree.h"
#include "scrub/scrub.h"
#include "scrub/bitmap.h"

/*
@@ -25,7 +26,7 @@ xbitmap_set(
{
	struct xbitmap_range	*bmr;

	bmr = kmem_alloc(sizeof(struct xbitmap_range), KM_MAYFAIL);
	bmr = kmalloc(sizeof(struct xbitmap_range), XCHK_GFP_FLAGS);
	if (!bmr)
		return -ENOMEM;

@@ -47,7 +48,7 @@ xbitmap_destroy(

	for_each_xbitmap_extent(bmr, n, bitmap) {
		list_del(&bmr->list);
		kmem_free(bmr);
		kfree(bmr);
	}
}

@@ -174,15 +175,15 @@ xbitmap_disunion(
			/* Total overlap, just delete ex. */
			lp = lp->next;
			list_del(&br->list);
			kmem_free(br);
			kfree(br);
			break;
		case 0:
			/*
			 * Deleting from the middle: add the new right extent
			 * and then shrink the left extent.
			 */
			new_br = kmem_alloc(sizeof(struct xbitmap_range),
					KM_MAYFAIL);
			new_br = kmalloc(sizeof(struct xbitmap_range),
					XCHK_GFP_FLAGS);
			if (!new_br) {
				error = -ENOMEM;
				goto out;
+4 −5
Original line number Diff line number Diff line
@@ -432,8 +432,7 @@ xchk_btree_check_owner(
	if (cur->bc_btnum == XFS_BTNUM_BNO || cur->bc_btnum == XFS_BTNUM_RMAP) {
		struct check_owner	*co;

		co = kmem_alloc(sizeof(struct check_owner),
				KM_MAYFAIL);
		co = kmalloc(sizeof(struct check_owner), XCHK_GFP_FLAGS);
		if (!co)
			return -ENOMEM;

@@ -652,7 +651,7 @@ xchk_btree(
		xchk_btree_set_corrupt(sc, cur, 0);
		return 0;
	}
	bs = kmem_zalloc(cur_sz, KM_NOFS | KM_MAYFAIL);
	bs = kzalloc(cur_sz, XCHK_GFP_FLAGS);
	if (!bs)
		return -ENOMEM;
	bs->cur = cur;
@@ -743,9 +742,9 @@ xchk_btree(
			error = xchk_btree_check_block_owner(bs, co->level,
					co->daddr);
		list_del(&co->list);
		kmem_free(co);
		kfree(co);
	}
	kmem_free(bs);
	kfree(bs);

	return error;
}
+2 −2
Original line number Diff line number Diff line
@@ -486,7 +486,7 @@ xchk_da_btree(
		return 0;

	/* Set up initial da state. */
	ds = kmem_zalloc(sizeof(struct xchk_da_btree), KM_NOFS | KM_MAYFAIL);
	ds = kzalloc(sizeof(struct xchk_da_btree), XCHK_GFP_FLAGS);
	if (!ds)
		return -ENOMEM;
	ds->dargs.dp = sc->ip;
@@ -591,6 +591,6 @@ xchk_da_btree(

out_state:
	xfs_da_state_free(ds->state);
	kmem_free(ds);
	kfree(ds);
	return error;
}
Loading