On Sun, Jul 04, 2021 at 09:51:43AM +0100, Christoph Hellwig wrote: > On Fri, Jul 02, 2021 at 07:57:50PM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > > > If we encounter a directory that has been configured to pass on an > > extent size hint to a new realtime file and the hint isn't an integer > > multiple of the rt extent size, we should turn off the hint because that > > is a misconfiguration. > > > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > > --- > > repair/dinode.c | 28 +++++++++++++++++++++++++++- > > 1 file changed, 27 insertions(+), 1 deletion(-) > > > > > > diff --git a/repair/dinode.c b/repair/dinode.c > > index 291c5807..1275c90b 100644 > > --- a/repair/dinode.c > > +++ b/repair/dinode.c > > @@ -2178,6 +2178,31 @@ _("Bad %s nsec %u on inode %" PRIu64 ", "), name, be32_to_cpu(t->t_nsec), lino); > > *dirty = 1; > > } > > } > > +/* > > + * Inode verifiers on older kernels don't check that the extent size hint is an > > + * integer multiple of the rt extent size on a directory with both rtinherit > > + * and extszinherit flags set. If we encounter a directory that is > > + * misconfigured in this way, or a regular file that inherited a bad hint from > > + * a directory, clear the hint. > > + */ > > +static bool > > +zap_bad_rt_extsize_hint( > > The name suggests this function does the zapping itself, while it > actually leaves that to the caller. +1 here, I also led me to believe this was actually zeroing the extsize, but the patch's logic is fine. Maybe something like {is,has}_bad_rt_extsize_hint()? > > Oterwise looks good: > > Reviewed-by: Christoph Hellwig <hch@xxxxxx> > -- Carlos