2017-08-24 10:43:01

by Anshuman Khandual

[permalink] [raw]
Subject: [PATCH] xfs: Drop setting redundant PF_KSWAPD in kswapd context

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 <[email protected]>
---
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


2017-08-24 10:56:39

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] xfs: Drop setting redundant PF_KSWAPD in kswapd context

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 <[email protected]>
> ---
> 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

--
Michal Hocko
SUSE Labs

2017-08-25 00:02:09

by Dave Chinner

[permalink] [raw]
Subject: Re: [PATCH] xfs: Drop setting redundant PF_KSWAPD in kswapd context

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.
--
Dave Chinner
[email protected]

2017-08-25 04:02:28

by Anshuman Khandual

[permalink] [raw]
Subject: Re: [PATCH] xfs: Drop setting redundant PF_KSWAPD in kswapd context

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.