diff mbox

xfs: Drop setting redundant PF_KSWAPD in kswapd context

Message ID 20170824104247.8288-1-khandual@linux.vnet.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Anshuman Khandual Aug. 24, 2017, 10:42 a.m. UTC
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(-)

Comments

Michal Hocko Aug. 24, 2017, 10:56 a.m. UTC | #1
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
Dave Chinner Aug. 25, 2017, 12:01 a.m. UTC | #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.
Anshuman Khandual Aug. 25, 2017, 4:02 a.m. UTC | #3
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 mbox

Patch

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);