aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_super.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 589c080cabfe..4089de3daded 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -159,8 +159,6 @@ xfs_parseargs(
const struct super_block *sb = mp->m_super;
char *p;
substring_t args[MAX_OPT_ARGS];
- int dsunit = 0;
- int dswidth = 0;
int iosize = 0;
uint8_t iosizelog = 0;
@@ -252,11 +250,11 @@ xfs_parseargs(
mp->m_flags |= XFS_MOUNT_SWALLOC;
break;
case Opt_sunit:
- if (match_int(args, &dsunit))
+ if (match_int(args, &mp->m_dalign))
return -EINVAL;
break;
case Opt_swidth:
- if (match_int(args, &dswidth))
+ if (match_int(args, &mp->m_swidth))
return -EINVAL;
break;
case Opt_inode32:
@@ -350,7 +348,8 @@ xfs_parseargs(
return -EINVAL;
}
- if ((mp->m_flags & XFS_MOUNT_NOALIGN) && (dsunit || dswidth)) {
+ if ((mp->m_flags & XFS_MOUNT_NOALIGN) &&
+ (mp->m_dalign || mp->m_swidth)) {
xfs_warn(mp,
"sunit and swidth options incompatible with the noalign option");
return -EINVAL;
@@ -363,30 +362,20 @@ xfs_parseargs(
}
#endif
- if ((dsunit && !dswidth) || (!dsunit && dswidth)) {
+ if ((mp->m_dalign && !mp->m_swidth) ||
+ (!mp->m_dalign && mp->m_swidth)) {
xfs_warn(mp, "sunit and swidth must be specified together");
return -EINVAL;
}
- if (dsunit && (dswidth % dsunit != 0)) {
+ if (mp->m_dalign && (mp->m_swidth % mp->m_dalign != 0)) {
xfs_warn(mp,
"stripe width (%d) must be a multiple of the stripe unit (%d)",
- dswidth, dsunit);
+ mp->m_swidth, mp->m_dalign);
return -EINVAL;
}
done:
- if (dsunit && !(mp->m_flags & XFS_MOUNT_NOALIGN)) {
- /*
- * At this point the superblock has not been read
- * in, therefore we do not know the block size.
- * Before the mount call ends we will convert
- * these to FSBs.
- */
- mp->m_dalign = dsunit;
- mp->m_swidth = dswidth;
- }
-
if (mp->m_logbufs != -1 &&
mp->m_logbufs != 0 &&
(mp->m_logbufs < XLOG_MIN_ICLOGS ||