[PATCH] xfs: Keep sb_bad_features2 consistent with sb_features2
Jan Kara
jack at suse.cz
Thu Dec 18 03:59:19 CST 2014
On Thu 18-12-14 08:22:55, Dave Chinner wrote:
> On Wed, Dec 17, 2014 at 09:27:26PM +0100, Jan Kara wrote:
> > Currently when we modify sb_features2, we store the same value also in
> > sb_bad_features2. However in most places we forget to mark field
> > sb_bad_features2 for logging and thus it can happen that a change to it
> > is lost. This results in an inconsistent sb_features2 and
> > sb_bad_features2 fields e.g. after xfstests test xfs/187.
> >
> > Fix the problem by changing XFS_SB_FEATURES2 to actually mean both
> > sb_features2 and sb_bad_features2 fields since this is always what we
> > want to log. This isn't ideal because the fact that XFS_SB_FEATURES2
> > means two fields could cause some problem in future however the code is
> > hopefully less error prone that it is now.
>
> Actually, I have patches that fix this differently that I'm planning
> to push for the 3.20 cycle. They get rid of the "update random SB
> fields" problem altogether simply by logging and updating the entire
> SB every time.
>
> http://oss.sgi.com/archives/xfs/2014-09/msg00448.html
OK, thanks for info.
Honza
>
> > Signed-off-by: Jan Kara <jack at suse.cz>
> > ---
> > fs/xfs/libxfs/xfs_format.h | 10 +++++-----
> > fs/xfs/xfs_mount.c | 5 ++---
> > 2 files changed, 7 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h
> > index fbd6da263571..476273287aaf 100644
> > --- a/fs/xfs/libxfs/xfs_format.h
> > +++ b/fs/xfs/libxfs/xfs_format.h
> > @@ -304,8 +304,8 @@ typedef enum {
> > #define XFS_SB_ICOUNT XFS_SB_MVAL(ICOUNT)
> > #define XFS_SB_IFREE XFS_SB_MVAL(IFREE)
> > #define XFS_SB_FDBLOCKS XFS_SB_MVAL(FDBLOCKS)
> > -#define XFS_SB_FEATURES2 XFS_SB_MVAL(FEATURES2)
> > -#define XFS_SB_BAD_FEATURES2 XFS_SB_MVAL(BAD_FEATURES2)
> > +#define XFS_SB_FEATURES2 (XFS_SB_MVAL(FEATURES2) | \
> > + XFS_SB_MVAL(BAD_FEATURES2))
>
> That doesn't guarantee that both fields are updated together, just
> that the'll get logged and written together. The code still has to
> ensure both fields are updated beforehand. I have a patch to address
> this as well, and will post them soon.
>
> Cheers,
>
> Dave.
> --
> Dave Chinner
> david at fromorbit.com
--
Jan Kara <jack at suse.cz>
SUSE Labs, CR
More information about the xfs
mailing list