Message ID | 20170824104247.8288-1-khandual@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu 24-08-17 16:12:47, Anshuman Khandual wrote: > xfs_btree_split() calls xfs_btree_split_worker() with args.kswapd set > if current->flags alrady has PF_KSWAPD. Hence we should not again add > PF_KSWAPD into the current flags inside kswapd context. So drop this > redundant flag addition. I am not familiar with the code but your change seems incorect. The whole point of args->kswapd is to convey the kswapd context to the worker which is obviously running in a different context. So this patch loses the kswapd context. > Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> > --- > fs/xfs/libxfs/xfs_btree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c > index e0bcc4a..b3c85e3 100644 > --- a/fs/xfs/libxfs/xfs_btree.c > +++ b/fs/xfs/libxfs/xfs_btree.c > @@ -2895,7 +2895,7 @@ struct xfs_btree_split_args { > * in any way. > */ > if (args->kswapd) > - new_pflags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD; > + new_pflags |= PF_MEMALLOC | PF_SWAPWRITE; > > current_set_flags_nested(&pflags, new_pflags); > > -- > 1.8.5.2
On Thu, Aug 24, 2017 at 12:56:35PM +0200, Michal Hocko wrote: > On Thu 24-08-17 16:12:47, Anshuman Khandual wrote: > > xfs_btree_split() calls xfs_btree_split_worker() with args.kswapd set > > if current->flags alrady has PF_KSWAPD. Hence we should not again add > > PF_KSWAPD into the current flags inside kswapd context. So drop this > > redundant flag addition. > > I am not familiar with the code but your change seems incorect. The > whole point of args->kswapd is to convey the kswapd context to the > worker which is obviously running in a different context. So this patch > loses the kswapd context. Yup. That's what the code does, and removing the PF_KSWAPD from it will break it. Cheers, Dave.
On 08/25/2017 05:31 AM, Dave Chinner wrote: > On Thu, Aug 24, 2017 at 12:56:35PM +0200, Michal Hocko wrote: >> On Thu 24-08-17 16:12:47, Anshuman Khandual wrote: >>> xfs_btree_split() calls xfs_btree_split_worker() with args.kswapd set >>> if current->flags alrady has PF_KSWAPD. Hence we should not again add >>> PF_KSWAPD into the current flags inside kswapd context. So drop this >>> redundant flag addition. >> >> I am not familiar with the code but your change seems incorect. The >> whole point of args->kswapd is to convey the kswapd context to the >> worker which is obviously running in a different context. So this patch >> loses the kswapd context. > > Yup. That's what the code does, and removing the PF_KSWAPD from it > will break it. The worker thread need to inherit these flags. Thanks for pointing out. -- 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
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index e0bcc4a..b3c85e3 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c @@ -2895,7 +2895,7 @@ struct xfs_btree_split_args { * in any way. */ if (args->kswapd) - new_pflags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD; + new_pflags |= PF_MEMALLOC | PF_SWAPWRITE; current_set_flags_nested(&pflags, new_pflags);
xfs_btree_split() calls xfs_btree_split_worker() with args.kswapd set if current->flags alrady has PF_KSWAPD. Hence we should not again add PF_KSWAPD into the current flags inside kswapd context. So drop this redundant flag addition. Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> --- fs/xfs/libxfs/xfs_btree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)