diff mbox

[v2] xfs: preserve i_rdev when recycling a reclaimable inode

Message ID 1516952669-14769-1-git-send-email-amir73il@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Amir Goldstein Jan. 26, 2018, 7:44 a.m. UTC
Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
value for special inodes to VFS inodes, but forgot to preserve the
value of i_rdev when recycling a reclaimable xfs_inode.

This was detected by xfstest overlay/017 with inodex=on mount option
and xfs base fs. The test does a lookup of overlay chardev and blockdev
right after drop caches.

Overlayfs inodes hold a reference on underlying xfs inodes when mount
option index=on is configured. If drop caches reclaim xfs inodes, before
it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
inode and that test hits that case quite often.

When that happens, the xfs inode cache remains broken (zere i_rdev)
until the next cycle mount or drop caches.

Fixes: 66f364649d870 ("xfs: remove if_rdev")
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---

Darrick,

You may want to rush this last minute v4.15 regression fix.

Thanks,
Amir.

 fs/xfs/xfs_icache.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Christoph Hellwig Jan. 26, 2018, 7:44 a.m. UTC | #1
Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
Darrick J. Wong Jan. 26, 2018, 9:44 p.m. UTC | #2
On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
> value for special inodes to VFS inodes, but forgot to preserve the
> value of i_rdev when recycling a reclaimable xfs_inode.
> 
> This was detected by xfstest overlay/017 with inodex=on mount option
> and xfs base fs. The test does a lookup of overlay chardev and blockdev
> right after drop caches.
> 
> Overlayfs inodes hold a reference on underlying xfs inodes when mount
> option index=on is configured. If drop caches reclaim xfs inodes, before
> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
> inode and that test hits that case quite often.
> 
> When that happens, the xfs inode cache remains broken (zere i_rdev)
> until the next cycle mount or drop caches.
> 
> Fixes: 66f364649d870 ("xfs: remove if_rdev")
> Signed-off-by: Amir Goldstein <amir73il@gmail.com>

Looks ok,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

> ---
> 
> Darrick,
> 
> You may want to rush this last minute v4.15 regression fix.
> 
> Thanks,
> Amir.
> 
>  fs/xfs/xfs_icache.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
> index 3861d61fb265..3ce946063ffe 100644
> --- a/fs/xfs/xfs_icache.c
> +++ b/fs/xfs/xfs_icache.c
> @@ -295,6 +295,7 @@ xfs_reinit_inode(
>  	uint32_t	generation = inode->i_generation;
>  	uint64_t	version = inode->i_version;
>  	umode_t		mode = inode->i_mode;
> +	dev_t		dev = inode->i_rdev;
>  
>  	error = inode_init_always(mp->m_super, inode);
>  
> @@ -302,6 +303,7 @@ xfs_reinit_inode(
>  	inode->i_generation = generation;
>  	inode->i_version = version;
>  	inode->i_mode = mode;
> +	inode->i_rdev = dev;
>  	return error;
>  }
>  
> -- 
> 2.7.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amir Goldstein Jan. 29, 2018, 11:07 a.m. UTC | #3
On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
<darrick.wong@oracle.com> wrote:
> On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
>> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
>> value for special inodes to VFS inodes, but forgot to preserve the
>> value of i_rdev when recycling a reclaimable xfs_inode.
>>
>> This was detected by xfstest overlay/017 with inodex=on mount option
>> and xfs base fs. The test does a lookup of overlay chardev and blockdev
>> right after drop caches.
>>
>> Overlayfs inodes hold a reference on underlying xfs inodes when mount
>> option index=on is configured. If drop caches reclaim xfs inodes, before
>> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
>> inode and that test hits that case quite often.
>>
>> When that happens, the xfs inode cache remains broken (zere i_rdev)
>> until the next cycle mount or drop caches.
>>
>> Fixes: 66f364649d870 ("xfs: remove if_rdev")
>> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>
> Looks ok,
> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>

I recon that now we should now also strap:
Cc: <stable@vger.kernel.org> #v4.15

Can I assume, you'll add it on apply?

Thanks,
Amir.
Darrick J. Wong Jan. 29, 2018, 3:50 p.m. UTC | #4
On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
> <darrick.wong@oracle.com> wrote:
> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
> >> value for special inodes to VFS inodes, but forgot to preserve the
> >> value of i_rdev when recycling a reclaimable xfs_inode.
> >>
> >> This was detected by xfstest overlay/017 with inodex=on mount option
> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
> >> right after drop caches.
> >>
> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
> >> option index=on is configured. If drop caches reclaim xfs inodes, before
> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
> >> inode and that test hits that case quite often.
> >>
> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
> >> until the next cycle mount or drop caches.
> >>
> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> >
> > Looks ok,
> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> >
> 
> I recon that now we should now also strap:
> Cc: <stable@vger.kernel.org> #v4.15
> 
> Can I assume, you'll add it on apply?

I'll do a proper backport of this and a couple other critical cow
fixes after I get the 4.16 stuff merged.

--D

> Thanks,
> Amir.
Amir Goldstein Feb. 1, 2018, 12:27 a.m. UTC | #5
On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
<darrick.wong@oracle.com> wrote:
> On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
>> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
>> <darrick.wong@oracle.com> wrote:
>> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
>> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
>> >> value for special inodes to VFS inodes, but forgot to preserve the
>> >> value of i_rdev when recycling a reclaimable xfs_inode.
>> >>
>> >> This was detected by xfstest overlay/017 with inodex=on mount option
>> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
>> >> right after drop caches.
>> >>
>> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
>> >> option index=on is configured. If drop caches reclaim xfs inodes, before
>> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
>> >> inode and that test hits that case quite often.
>> >>
>> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
>> >> until the next cycle mount or drop caches.
>> >>
>> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
>> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>> >
>> > Looks ok,
>> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>> >
>>
>> I recon that now we should now also strap:
>> Cc: <stable@vger.kernel.org> #v4.15
>>
>> Can I assume, you'll add it on apply?
>
> I'll do a proper backport of this and a couple other critical cow
> fixes after I get the 4.16 stuff merged.
>

I am not sure what "proper backport" means in the context of
this patch.
This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
It applied cleanly on v4.15.

CC'ing stable for attention.

This patch is now in master, but due to its timing it did not
get the CC: stable tag.

Thanks,
Amir.
Amir Goldstein Feb. 1, 2018, 12:29 a.m. UTC | #6
On Thu, Feb 1, 2018 at 2:27 AM, Amir Goldstein <amir73il@gmail.com> wrote:
> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
> <darrick.wong@oracle.com> wrote:
>> On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
>>> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
>>> <darrick.wong@oracle.com> wrote:
>>> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
>>> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
>>> >> value for special inodes to VFS inodes, but forgot to preserve the
>>> >> value of i_rdev when recycling a reclaimable xfs_inode.
>>> >>
>>> >> This was detected by xfstest overlay/017 with inodex=on mount option
>>> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
>>> >> right after drop caches.
>>> >>
>>> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
>>> >> option index=on is configured. If drop caches reclaim xfs inodes, before
>>> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
>>> >> inode and that test hits that case quite often.
>>> >>
>>> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
>>> >> until the next cycle mount or drop caches.
>>> >>
>>> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
>>> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>>> >
>>> > Looks ok,
>>> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>>> >
>>>
>>> I recon that now we should now also strap:
>>> Cc: <stable@vger.kernel.org> #v4.15
>>>
>>> Can I assume, you'll add it on apply?
>>
>> I'll do a proper backport of this and a couple other critical cow
>> fixes after I get the 4.16 stuff merged.
>>
>
> I am not sure what "proper backport" means in the context of
> this patch.
> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
> It applied cleanly on v4.15.
>
> CC'ing stable for attention.
>
> This patch is now in master, but due to its timing it did not
> get the CC: stable tag.
>

Now really CC stable.

Amir.
Darrick J. Wong Feb. 1, 2018, 12:35 a.m. UTC | #7
On Thu, Feb 01, 2018 at 02:27:23AM +0200, Amir Goldstein wrote:
> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
> <darrick.wong@oracle.com> wrote:
> > On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
> >> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
> >> <darrick.wong@oracle.com> wrote:
> >> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
> >> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
> >> >> value for special inodes to VFS inodes, but forgot to preserve the
> >> >> value of i_rdev when recycling a reclaimable xfs_inode.
> >> >>
> >> >> This was detected by xfstest overlay/017 with inodex=on mount option
> >> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
> >> >> right after drop caches.
> >> >>
> >> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
> >> >> option index=on is configured. If drop caches reclaim xfs inodes, before
> >> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
> >> >> inode and that test hits that case quite often.
> >> >>
> >> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
> >> >> until the next cycle mount or drop caches.
> >> >>
> >> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
> >> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> >> >
> >> > Looks ok,
> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> >> >
> >>
> >> I recon that now we should now also strap:
> >> Cc: <stable@vger.kernel.org> #v4.15
> >>
> >> Can I assume, you'll add it on apply?
> >
> > I'll do a proper backport of this and a couple other critical cow
> > fixes after I get the 4.16 stuff merged.
> >
> 
> I am not sure what "proper backport" means in the context of
> this patch.
> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
> It applied cleanly on v4.15.

I meant the other things that went into 4.16, like the reflink quota
fixes, the directio corruption problems, etc.  Make a branch, add the
necessary fixes, run xfstests to make sure it all still works, etc.

--D

> CC'ing stable for attention.
> 
> This patch is now in master, but due to its timing it did not
> get the CC: stable tag.
> 
> Thanks,
> Amir.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amir Goldstein March 11, 2018, 4:08 p.m. UTC | #8
On Thu, Feb 1, 2018 at 2:35 AM, Darrick J. Wong <darrick.wong@oracle.com> wrote:
> On Thu, Feb 01, 2018 at 02:27:23AM +0200, Amir Goldstein wrote:
>> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
>> <darrick.wong@oracle.com> wrote:
>> > On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
>> >> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
>> >> <darrick.wong@oracle.com> wrote:
>> >> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
>> >> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
>> >> >> value for special inodes to VFS inodes, but forgot to preserve the
>> >> >> value of i_rdev when recycling a reclaimable xfs_inode.
>> >> >>
>> >> >> This was detected by xfstest overlay/017 with inodex=on mount option
>> >> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
>> >> >> right after drop caches.
>> >> >>
>> >> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
>> >> >> option index=on is configured. If drop caches reclaim xfs inodes, before
>> >> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
>> >> >> inode and that test hits that case quite often.
>> >> >>
>> >> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
>> >> >> until the next cycle mount or drop caches.
>> >> >>
>> >> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
>> >> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>> >> >
>> >> > Looks ok,
>> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>> >> >
>> >>
>> >> I recon that now we should now also strap:
>> >> Cc: <stable@vger.kernel.org> #v4.15
>> >>
>> >> Can I assume, you'll add it on apply?
>> >
>> > I'll do a proper backport of this and a couple other critical cow
>> > fixes after I get the 4.16 stuff merged.
>> >
>>
>> I am not sure what "proper backport" means in the context of
>> this patch.
>> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
>> It applied cleanly on v4.15.
>
> I meant the other things that went into 4.16, like the reflink quota
> fixes, the directio corruption problems, etc.  Make a branch, add the
> necessary fixes, run xfstests to make sure it all still works, etc.
>

Darrick,

I may be missing something in the process of stable kernel
maintenance, but this patch fixes a reproducible v4.15 regression
(xfstest overlay/017 fails on stable kernel v4.15).

Is Greg usually picking those stable patches himself or is he waiting
for xfs maintainers (or xfs stable maintainers) to stage the
stable patches?

As I wrote above, the reason this patch is missing the Cc: stable
tag is because it landed just after v4.15 was released, but I was
aiming for it to get merged to v4.15 and avoid the regression in
a release kernel.

Thanks,
Amir.
Greg Kroah-Hartman March 11, 2018, 4:24 p.m. UTC | #9
On Sun, Mar 11, 2018 at 06:08:06PM +0200, Amir Goldstein wrote:
> On Thu, Feb 1, 2018 at 2:35 AM, Darrick J. Wong <darrick.wong@oracle.com> wrote:
> > On Thu, Feb 01, 2018 at 02:27:23AM +0200, Amir Goldstein wrote:
> >> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
> >> <darrick.wong@oracle.com> wrote:
> >> > On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
> >> >> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
> >> >> <darrick.wong@oracle.com> wrote:
> >> >> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
> >> >> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
> >> >> >> value for special inodes to VFS inodes, but forgot to preserve the
> >> >> >> value of i_rdev when recycling a reclaimable xfs_inode.
> >> >> >>
> >> >> >> This was detected by xfstest overlay/017 with inodex=on mount option
> >> >> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
> >> >> >> right after drop caches.
> >> >> >>
> >> >> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
> >> >> >> option index=on is configured. If drop caches reclaim xfs inodes, before
> >> >> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
> >> >> >> inode and that test hits that case quite often.
> >> >> >>
> >> >> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
> >> >> >> until the next cycle mount or drop caches.
> >> >> >>
> >> >> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
> >> >> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> >> >> >
> >> >> > Looks ok,
> >> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> >> >> >
> >> >>
> >> >> I recon that now we should now also strap:
> >> >> Cc: <stable@vger.kernel.org> #v4.15
> >> >>
> >> >> Can I assume, you'll add it on apply?
> >> >
> >> > I'll do a proper backport of this and a couple other critical cow
> >> > fixes after I get the 4.16 stuff merged.
> >> >
> >>
> >> I am not sure what "proper backport" means in the context of
> >> this patch.
> >> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
> >> It applied cleanly on v4.15.
> >
> > I meant the other things that went into 4.16, like the reflink quota
> > fixes, the directio corruption problems, etc.  Make a branch, add the
> > necessary fixes, run xfstests to make sure it all still works, etc.
> >
> 
> Darrick,
> 
> I may be missing something in the process of stable kernel
> maintenance, but this patch fixes a reproducible v4.15 regression
> (xfstest overlay/017 fails on stable kernel v4.15).
> 
> Is Greg usually picking those stable patches himself or is he waiting
> for xfs maintainers (or xfs stable maintainers) to stage the
> stable patches?

I'm waiting for the patch to either be tagges with cc: stable, or for
someone to tell me to take the patch.

Sometimes I dig through the tree, but for xfs patches, I do not, as was
told not to :)

thanks,

greg k-h
Darrick J. Wong March 12, 2018, 4:27 p.m. UTC | #10
On Sun, Mar 11, 2018 at 05:24:42PM +0100, Greg KH wrote:
> On Sun, Mar 11, 2018 at 06:08:06PM +0200, Amir Goldstein wrote:
> > On Thu, Feb 1, 2018 at 2:35 AM, Darrick J. Wong <darrick.wong@oracle.com> wrote:
> > > On Thu, Feb 01, 2018 at 02:27:23AM +0200, Amir Goldstein wrote:
> > >> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
> > >> <darrick.wong@oracle.com> wrote:
> > >> > On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
> > >> >> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
> > >> >> <darrick.wong@oracle.com> wrote:
> > >> >> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
> > >> >> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
> > >> >> >> value for special inodes to VFS inodes, but forgot to preserve the
> > >> >> >> value of i_rdev when recycling a reclaimable xfs_inode.
> > >> >> >>
> > >> >> >> This was detected by xfstest overlay/017 with inodex=on mount option
> > >> >> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
> > >> >> >> right after drop caches.
> > >> >> >>
> > >> >> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
> > >> >> >> option index=on is configured. If drop caches reclaim xfs inodes, before
> > >> >> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
> > >> >> >> inode and that test hits that case quite often.
> > >> >> >>
> > >> >> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
> > >> >> >> until the next cycle mount or drop caches.
> > >> >> >>
> > >> >> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
> > >> >> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> > >> >> >
> > >> >> > Looks ok,
> > >> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> > >> >> >
> > >> >>
> > >> >> I recon that now we should now also strap:
> > >> >> Cc: <stable@vger.kernel.org> #v4.15
> > >> >>
> > >> >> Can I assume, you'll add it on apply?
> > >> >
> > >> > I'll do a proper backport of this and a couple other critical cow
> > >> > fixes after I get the 4.16 stuff merged.
> > >> >
> > >>
> > >> I am not sure what "proper backport" means in the context of
> > >> this patch.
> > >> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
> > >> It applied cleanly on v4.15.
> > >
> > > I meant the other things that went into 4.16, like the reflink quota
> > > fixes, the directio corruption problems, etc.  Make a branch, add the
> > > necessary fixes, run xfstests to make sure it all still works, etc.
                       ^^^^^^^^^^^^
Hi Amir, could you do   this step   ?

As far as the code patch goes it's probably fine for stable, but I don't
want patches going to stable that have not been run through xfstests to
look for regressions.  If the patch doesn't increase the number of
xfstests failures then it's ready to go to 4.15.y.

--D

> > >
> > 
> > Darrick,
> > 
> > I may be missing something in the process of stable kernel
> > maintenance, but this patch fixes a reproducible v4.15 regression
> > (xfstest overlay/017 fails on stable kernel v4.15).
> > 
> > Is Greg usually picking those stable patches himself or is he waiting
> > for xfs maintainers (or xfs stable maintainers) to stage the
> > stable patches?
> 
> I'm waiting for the patch to either be tagges with cc: stable, or for
> someone to tell me to take the patch.
> 
> Sometimes I dig through the tree, but for xfs patches, I do not, as was
> told not to :)
> 
> thanks,
> 
> greg k-h
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Amir Goldstein March 12, 2018, 8:16 p.m. UTC | #11
On Mon, Mar 12, 2018 at 6:27 PM, Darrick J. Wong
<darrick.wong@oracle.com> wrote:
> On Sun, Mar 11, 2018 at 05:24:42PM +0100, Greg KH wrote:
>> On Sun, Mar 11, 2018 at 06:08:06PM +0200, Amir Goldstein wrote:
>> > On Thu, Feb 1, 2018 at 2:35 AM, Darrick J. Wong <darrick.wong@oracle.com> wrote:
>> > > On Thu, Feb 01, 2018 at 02:27:23AM +0200, Amir Goldstein wrote:
>> > >> On Mon, Jan 29, 2018 at 5:50 PM, Darrick J. Wong
>> > >> <darrick.wong@oracle.com> wrote:
>> > >> > On Mon, Jan 29, 2018 at 01:07:36PM +0200, Amir Goldstein wrote:
>> > >> >> On Fri, Jan 26, 2018 at 11:44 PM, Darrick J. Wong
>> > >> >> <darrick.wong@oracle.com> wrote:
>> > >> >> > On Fri, Jan 26, 2018 at 09:44:29AM +0200, Amir Goldstein wrote:
>> > >> >> >> Commit 66f364649d870 ("xfs: remove if_rdev") moved storing of rdev
>> > >> >> >> value for special inodes to VFS inodes, but forgot to preserve the
>> > >> >> >> value of i_rdev when recycling a reclaimable xfs_inode.
>> > >> >> >>
>> > >> >> >> This was detected by xfstest overlay/017 with inodex=on mount option
>> > >> >> >> and xfs base fs. The test does a lookup of overlay chardev and blockdev
>> > >> >> >> right after drop caches.
>> > >> >> >>
>> > >> >> >> Overlayfs inodes hold a reference on underlying xfs inodes when mount
>> > >> >> >> option index=on is configured. If drop caches reclaim xfs inodes, before
>> > >> >> >> it relclaims overlayfs inodes, that can sometimes leave a reclaimable xfs
>> > >> >> >> inode and that test hits that case quite often.
>> > >> >> >>
>> > >> >> >> When that happens, the xfs inode cache remains broken (zere i_rdev)
>> > >> >> >> until the next cycle mount or drop caches.
>> > >> >> >>
>> > >> >> >> Fixes: 66f364649d870 ("xfs: remove if_rdev")
>> > >> >> >> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
>> > >> >> >
>> > >> >> > Looks ok,
>> > >> >> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
>> > >> >> >
>> > >> >>
>> > >> >> I recon that now we should now also strap:
>> > >> >> Cc: <stable@vger.kernel.org> #v4.15
>> > >> >>
>> > >> >> Can I assume, you'll add it on apply?
>> > >> >
>> > >> > I'll do a proper backport of this and a couple other critical cow
>> > >> > fixes after I get the 4.16 stuff merged.
>> > >> >
>> > >>
>> > >> I am not sure what "proper backport" means in the context of
>> > >> this patch.
>> > >> This is a v4.15-rc1 regression fix that is based on v4.15-rc8.
>> > >> It applied cleanly on v4.15.
>> > >
>> > > I meant the other things that went into 4.16, like the reflink quota
>> > > fixes, the directio corruption problems, etc.  Make a branch, add the
>> > > necessary fixes, run xfstests to make sure it all still works, etc.
>                        ^^^^^^^^^^^^
> Hi Amir, could you do   this step   ?
>

Will do.

> As far as the code patch goes it's probably fine for stable, but I don't
> want patches going to stable that have not been run through xfstests to
> look for regressions.  If the patch doesn't increase the number of
> xfstests failures then it's ready to go to 4.15.y.
>


Thanks,
Amir.
diff mbox

Patch

diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
index 3861d61fb265..3ce946063ffe 100644
--- a/fs/xfs/xfs_icache.c
+++ b/fs/xfs/xfs_icache.c
@@ -295,6 +295,7 @@  xfs_reinit_inode(
 	uint32_t	generation = inode->i_generation;
 	uint64_t	version = inode->i_version;
 	umode_t		mode = inode->i_mode;
+	dev_t		dev = inode->i_rdev;
 
 	error = inode_init_always(mp->m_super, inode);
 
@@ -302,6 +303,7 @@  xfs_reinit_inode(
 	inode->i_generation = generation;
 	inode->i_version = version;
 	inode->i_mode = mode;
+	inode->i_rdev = dev;
 	return error;
 }