|
@@ -386,10 +386,11 @@ xfs_sb_quota_from_disk(struct xfs_sb *sbp)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-void
|
|
|
|
-xfs_sb_from_disk(
|
|
|
|
|
|
+static void
|
|
|
|
+__xfs_sb_from_disk(
|
|
struct xfs_sb *to,
|
|
struct xfs_sb *to,
|
|
- xfs_dsb_t *from)
|
|
|
|
|
|
+ xfs_dsb_t *from,
|
|
|
|
+ bool convert_xquota)
|
|
{
|
|
{
|
|
to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
|
|
to->sb_magicnum = be32_to_cpu(from->sb_magicnum);
|
|
to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
|
|
to->sb_blocksize = be32_to_cpu(from->sb_blocksize);
|
|
@@ -445,6 +446,17 @@ xfs_sb_from_disk(
|
|
to->sb_pad = 0;
|
|
to->sb_pad = 0;
|
|
to->sb_pquotino = be64_to_cpu(from->sb_pquotino);
|
|
to->sb_pquotino = be64_to_cpu(from->sb_pquotino);
|
|
to->sb_lsn = be64_to_cpu(from->sb_lsn);
|
|
to->sb_lsn = be64_to_cpu(from->sb_lsn);
|
|
|
|
+ /* Convert on-disk flags to in-memory flags? */
|
|
|
|
+ if (convert_xquota)
|
|
|
|
+ xfs_sb_quota_from_disk(to);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+xfs_sb_from_disk(
|
|
|
|
+ struct xfs_sb *to,
|
|
|
|
+ xfs_dsb_t *from)
|
|
|
|
+{
|
|
|
|
+ __xfs_sb_from_disk(to, from, true);
|
|
}
|
|
}
|
|
|
|
|
|
static inline void
|
|
static inline void
|
|
@@ -560,7 +572,11 @@ xfs_sb_verify(
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
struct xfs_mount *mp = bp->b_target->bt_mount;
|
|
struct xfs_sb sb;
|
|
struct xfs_sb sb;
|
|
|
|
|
|
- xfs_sb_from_disk(&sb, XFS_BUF_TO_SBP(bp));
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Use call variant which doesn't convert quota flags from disk
|
|
|
|
+ * format, because xfs_mount_validate_sb checks the on-disk flags.
|
|
|
|
+ */
|
|
|
|
+ __xfs_sb_from_disk(&sb, XFS_BUF_TO_SBP(bp), false);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Only check the in progress field for the primary superblock as
|
|
* Only check the in progress field for the primary superblock as
|