Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39a45d84 authored by Jie Liu's avatar Jie Liu Committed by Ben Myers
Browse files

xfs: Remove XFS_MOUNT_RETERR



XFS_MOUNT_RETERR is going to be set at xfs_parseargs() if
mp->m_dalign is enabled, so any time we enter "if (mp->m_dalign)"
branch in xfs_update_alignment(), XFS_MOUNT_RETERR is set and so
we always be emitting a warning and returning an error.

Hence, we can remove it and get rid of a couple of redundant
check up against it at xfs_upate_alignment().

Thanks Dave Chinner for the suggestions of simplify the code
in xfs_parseargs().

Signed-off-by: default avatarJie Liu <jeff.liu@oracle.com>
Cc: Dave Chinner <dchinner@redhat.com>
Cc: Mark Tinguely <tinguely@sgi.com>
Reviewed-by: default avatarMark Tinguely <tinguely@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 2fb8b502
Loading
Loading
Loading
Loading
+11 −26
Original line number Original line Diff line number Diff line
@@ -987,43 +987,28 @@ xfs_update_alignment(xfs_mount_t *mp)
		 */
		 */
		if ((BBTOB(mp->m_dalign) & mp->m_blockmask) ||
		if ((BBTOB(mp->m_dalign) & mp->m_blockmask) ||
		    (BBTOB(mp->m_swidth) & mp->m_blockmask)) {
		    (BBTOB(mp->m_swidth) & mp->m_blockmask)) {
			if (mp->m_flags & XFS_MOUNT_RETERR) {
			xfs_warn(mp,
				xfs_warn(mp, "alignment check failed: "
		"alignment check failed: sunit/swidth vs. blocksize(%d)",
					 "(sunit/swidth vs. blocksize)");
				sbp->sb_blocksize);
			return XFS_ERROR(EINVAL);
			return XFS_ERROR(EINVAL);
			}
			mp->m_dalign = mp->m_swidth = 0;
		} else {
		} else {
			/*
			/*
			 * Convert the stripe unit and width to FSBs.
			 * Convert the stripe unit and width to FSBs.
			 */
			 */
			mp->m_dalign = XFS_BB_TO_FSBT(mp, mp->m_dalign);
			mp->m_dalign = XFS_BB_TO_FSBT(mp, mp->m_dalign);
			if (mp->m_dalign && (sbp->sb_agblocks % mp->m_dalign)) {
			if (mp->m_dalign && (sbp->sb_agblocks % mp->m_dalign)) {
				if (mp->m_flags & XFS_MOUNT_RETERR) {
					xfs_warn(mp, "alignment check failed: "
						 "(sunit/swidth vs. ag size)");
					return XFS_ERROR(EINVAL);
				}
				xfs_warn(mp,
				xfs_warn(mp,
		"stripe alignment turned off: sunit(%d)/swidth(%d) "
			"alignment check failed: sunit/swidth vs. agsize(%d)",
		"incompatible with agsize(%d)",
					mp->m_dalign, mp->m_swidth,
					 sbp->sb_agblocks);
					 sbp->sb_agblocks);

				return XFS_ERROR(EINVAL);
				mp->m_dalign = 0;
				mp->m_swidth = 0;
			} else if (mp->m_dalign) {
			} else if (mp->m_dalign) {
				mp->m_swidth = XFS_BB_TO_FSBT(mp, mp->m_swidth);
				mp->m_swidth = XFS_BB_TO_FSBT(mp, mp->m_swidth);
			} else {
			} else {
				if (mp->m_flags & XFS_MOUNT_RETERR) {
				xfs_warn(mp,
					xfs_warn(mp, "alignment check failed: "
			"alignment check failed: sunit(%d) less than bsize(%d)",
						"sunit(%d) less than bsize(%d)",
					 mp->m_dalign, sbp->sb_blocksize);
						mp->m_dalign,
						mp->m_blockmask +1);
				return XFS_ERROR(EINVAL);
				return XFS_ERROR(EINVAL);
			}
			}
				mp->m_swidth = 0;
			}
		}
		}


		/*
		/*
+0 −2
Original line number Original line Diff line number Diff line
@@ -227,8 +227,6 @@ typedef struct xfs_mount {
						   operations, typically for
						   operations, typically for
						   disk errors in metadata */
						   disk errors in metadata */
#define XFS_MOUNT_DISCARD	(1ULL << 5)	/* discard unused blocks */
#define XFS_MOUNT_DISCARD	(1ULL << 5)	/* discard unused blocks */
#define XFS_MOUNT_RETERR	(1ULL << 6)     /* return alignment errors to
						   user */
#define XFS_MOUNT_NOALIGN	(1ULL << 7)	/* turn off stripe alignment
#define XFS_MOUNT_NOALIGN	(1ULL << 7)	/* turn off stripe alignment
						   allocations */
						   allocations */
#define XFS_MOUNT_ATTR2		(1ULL << 8)	/* allow use of attr2 format */
#define XFS_MOUNT_ATTR2		(1ULL << 8)	/* allow use of attr2 format */
+3 −8
Original line number Original line Diff line number Diff line
@@ -439,19 +439,14 @@ xfs_parseargs(
	}
	}


done:
done:
	if (!(mp->m_flags & XFS_MOUNT_NOALIGN)) {
	if (dsunit && !(mp->m_flags & XFS_MOUNT_NOALIGN)) {
		/*
		/*
		 * At this point the superblock has not been read
		 * At this point the superblock has not been read
		 * in, therefore we do not know the block size.
		 * in, therefore we do not know the block size.
		 * Before the mount call ends we will convert
		 * Before the mount call ends we will convert
		 * these to FSBs.
		 * these to FSBs.
		 */
		 */
		if (dsunit) {
		mp->m_dalign = dsunit;
		mp->m_dalign = dsunit;
			mp->m_flags |= XFS_MOUNT_RETERR;
		}

		if (dswidth)
		mp->m_swidth = dswidth;
		mp->m_swidth = dswidth;
	}
	}