mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	xfs: collapse scrub bool state flags into a single unsigned int
Combine all the boolean state flags in struct xfs_scrub into a single unsigned int, because we're going to be adding more state flags soon. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
		
							parent
							
								
									9d71e15586
								
							
						
					
					
						commit
						f8c2a2257c
					
				
					 6 changed files with 17 additions and 12 deletions
				
			
		|  | @ -39,7 +39,7 @@ xchk_setup_ag_iallocbt( | |||
| 	struct xfs_scrub	*sc, | ||||
| 	struct xfs_inode	*ip) | ||||
| { | ||||
| 	return xchk_setup_ag_btree(sc, ip, sc->try_harder); | ||||
| 	return xchk_setup_ag_btree(sc, ip, sc->flags & XCHK_TRY_HARDER); | ||||
| } | ||||
| 
 | ||||
| /* Inode btree scrubber. */ | ||||
|  | @ -185,7 +185,7 @@ xchk_iallocbt_check_cluster_ifree( | |||
| 	if (error == -ENODATA) { | ||||
| 		/* Not cached, just read the disk buffer */ | ||||
| 		freemask_ok = irec_free ^ !!(dip->di_mode); | ||||
| 		if (!bs->sc->try_harder && !freemask_ok) | ||||
| 		if (!(bs->sc->flags & XCHK_TRY_HARDER) && !freemask_ok) | ||||
| 			return -EDEADLOCK; | ||||
| 	} else if (error < 0) { | ||||
| 		/*
 | ||||
|  |  | |||
|  | @ -320,7 +320,7 @@ out: | |||
| 	 * If we failed to lock the parent inode even after a retry, just mark | ||||
| 	 * this scrub incomplete and return. | ||||
| 	 */ | ||||
| 	if (sc->try_harder && error == -EDEADLOCK) { | ||||
| 	if ((sc->flags & XCHK_TRY_HARDER) && error == -EDEADLOCK) { | ||||
| 		error = 0; | ||||
| 		xchk_set_incomplete(sc); | ||||
| 	} | ||||
|  |  | |||
|  | @ -60,7 +60,7 @@ xchk_setup_quota( | |||
| 	dqtype = xchk_quota_to_dqtype(sc); | ||||
| 	if (dqtype == 0) | ||||
| 		return -EINVAL; | ||||
| 	sc->has_quotaofflock = true; | ||||
| 	sc->flags |= XCHK_HAS_QUOTAOFFLOCK; | ||||
| 	mutex_lock(&sc->mp->m_quotainfo->qi_quotaofflock); | ||||
| 	if (!xfs_this_quota_on(sc->mp, dqtype)) | ||||
| 		return -ENOENT; | ||||
|  |  | |||
|  | @ -71,8 +71,8 @@ xrep_attempt( | |||
| 	case -EDEADLOCK: | ||||
| 	case -EAGAIN: | ||||
| 		/* Tell the caller to try again having grabbed all the locks. */ | ||||
| 		if (!sc->try_harder) { | ||||
| 			sc->try_harder = true; | ||||
| 		if (!(sc->flags & XCHK_TRY_HARDER)) { | ||||
| 			sc->flags |= XCHK_TRY_HARDER; | ||||
| 			return -EAGAIN; | ||||
| 		} | ||||
| 		/*
 | ||||
|  |  | |||
|  | @ -186,9 +186,9 @@ xchk_teardown( | |||
| 			xfs_irele(sc->ip); | ||||
| 		sc->ip = NULL; | ||||
| 	} | ||||
| 	if (sc->has_quotaofflock) { | ||||
| 	if (sc->flags & XCHK_HAS_QUOTAOFFLOCK) { | ||||
| 		mutex_unlock(&sc->mp->m_quotainfo->qi_quotaofflock); | ||||
| 		sc->has_quotaofflock = false; | ||||
| 		sc->flags &= ~XCHK_HAS_QUOTAOFFLOCK; | ||||
| 	} | ||||
| 	if (sc->buf) { | ||||
| 		kmem_free(sc->buf); | ||||
|  | @ -507,7 +507,7 @@ retry_op: | |||
| 
 | ||||
| 	/* Scrub for errors. */ | ||||
| 	error = sc.ops->scrub(&sc); | ||||
| 	if (!sc.try_harder && error == -EDEADLOCK) { | ||||
| 	if (!(sc.flags & XCHK_TRY_HARDER) && error == -EDEADLOCK) { | ||||
| 		/*
 | ||||
| 		 * Scrubbers return -EDEADLOCK to mean 'try harder'. | ||||
| 		 * Tear down everything we hold, then set up again with | ||||
|  | @ -516,7 +516,7 @@ retry_op: | |||
| 		error = xchk_teardown(&sc, ip, 0); | ||||
| 		if (error) | ||||
| 			goto out; | ||||
| 		sc.try_harder = true; | ||||
| 		sc.flags |= XCHK_TRY_HARDER; | ||||
| 		goto retry_op; | ||||
| 	} else if (error) | ||||
| 		goto out_teardown; | ||||
|  |  | |||
|  | @ -62,13 +62,18 @@ struct xfs_scrub { | |||
| 	struct xfs_inode		*ip; | ||||
| 	void				*buf; | ||||
| 	uint				ilock_flags; | ||||
| 	bool				try_harder; | ||||
| 	bool				has_quotaofflock; | ||||
| 
 | ||||
| 	/* See the XCHK state flags below. */ | ||||
| 	unsigned int			flags; | ||||
| 
 | ||||
| 	/* State tracking for single-AG operations. */ | ||||
| 	struct xchk_ag			sa; | ||||
| }; | ||||
| 
 | ||||
| /* XCHK state flags */ | ||||
| #define XCHK_TRY_HARDER		(1 << 0)  /* can't get resources, try again */ | ||||
| #define XCHK_HAS_QUOTAOFFLOCK	(1 << 1)  /* we hold the quotaoff lock */ | ||||
| 
 | ||||
| /* Metadata scrubbers */ | ||||
| int xchk_tester(struct xfs_scrub *sc); | ||||
| int xchk_superblock(struct xfs_scrub *sc); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Darrick J. Wong
						Darrick J. Wong