From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7362DC4345F for ; Fri, 26 Apr 2024 18:49:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E974B6B0087; Fri, 26 Apr 2024 14:49:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E479D6B0089; Fri, 26 Apr 2024 14:49:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D0F536B008A; Fri, 26 Apr 2024 14:49:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id B31F76B0087 for ; Fri, 26 Apr 2024 14:49:09 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 56C08120160 for ; Fri, 26 Apr 2024 18:49:09 +0000 (UTC) X-FDA: 82052570418.21.BBC5921 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf21.hostedemail.com (Postfix) with ESMTP id 916551C0011 for ; Fri, 26 Apr 2024 18:49:07 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=Gowg+N32; spf=pass (imf21.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714157347; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=eB+anJGhoYXIP7nLMWMbiYVCS/yojOK4LItCaal3qs0=; b=BYXjWgf8NsBB6pjKw3CgHhfDk+HmnAEl0+Y74UTRkUO60oJ5acdSisHXTtI8WF784kDKyQ QyKwPIpJw+jS0GTk9E5srRFz/V9vT0PVWoguxlu5zkm+ohYBhLQRO0bmWQQwlAZC8zawQB 1WoazG3q9nLrtAErFxhbOLFBU8ExONc= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=Gowg+N32; spf=pass (imf21.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714157347; a=rsa-sha256; cv=none; b=I/0773eH0g0sBXtZnfZk0sG7CWU12fd+SI+zn4uKEdCxsVpsGaPH3SIGByVQCpAYJJgTar flryfwUDqKvUvU9lUvUGQbwL0lm0TUM7tZ+8BiEQvRbDdkogg0MNftk4eS9IgPYvarVkpM vyU5AQTdj8SrsR4gLKfMb7V8U/AL6Bg= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id A466C620EE; Fri, 26 Apr 2024 18:49:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2EE19C2BD10; Fri, 26 Apr 2024 18:49:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1714157346; bh=2z6vF8qxPMRT039by+3fR74GjN+7YlbplU/DVWyW3AI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Gowg+N32tsmUNQRdZHszFRGOGH5d7dM4fnZYSZ2VXZhYo2xLqNqA1VY7g7jxuHqqK /tDbOYKPEWPtRZJDKvXVmVjmUgL3CihFtJnbyiOtBsmYog2GBzitdV6X+rl3Rg9aeD LCHPPyFpoNUJdV5IcHKvHumAIW3RirbMmSqITv3A= Date: Fri, 26 Apr 2024 11:49:05 -0700 From: Andrew Morton To: Kefeng Wang Cc: "Matthew Wilcox (Oracle)" , , , zhangyi Subject: Re: [PATCH] mm: use memalloc_nofs_save() in page_cache_ra_order() Message-Id: <20240426114905.216e3d41b97f9a59be26999e@linux-foundation.org> In-Reply-To: <20240426112938.124740-1-wangkefeng.wang@huawei.com> References: <20240426112938.124740-1-wangkefeng.wang@huawei.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Stat-Signature: f3fkz9mrdmdwyxfq1nzh4xfjmpot9nyn X-Rspamd-Queue-Id: 916551C0011 X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1714157347-558170 X-HE-Meta: U2FsdGVkX1/7Kt9tEKLtlG2OZMLjybe/d4sthlSmG5n7626Jhb7uzkhUSzuekXyLloquZlFriIfwKx73Ve/8tgHIFrZcuRtN0lFZqahZIPa+HSXbQWeW/X6wj9bE47Xh0GCpRKeJtZfKji4ZMn2rd08s/imBsGUK78sbJbW4oT18ZUfCzHXDn+3IrDp5z4FS6A3/K7PU7aHUyXUa2SjuU+nDfag8rzflCi7nN4FqmboELeL/+XHMh+nqB/FatFyF3v8yrZsv0pHZItsRnr6i58ORjhmAzMdU3V/ab+6gFeyrc/6kFEFKMx9/C2yg2j4moJLDKktNfJfcaCNH4ieCs8eadFbBQ5rukD64BEO6bFgjdbBsZiLMJ5/F2HlsSEq0coNxg5WHkVVXEx61/AaQgCkCx7rlE7h6j12jMn4BstnQuuZcEFbO0umPWGcZBIUcLqNgIv3Bsgbt/Csp1y3wLuBd/VhPYRb69KPrHTQUHuYRv0ZHZptXe0/W6S2gYs65afHYhO8Ye7KX4oZtGRpERnDM3zbYdi99lNXN0fog747a7zSWW/vZdauJzeNKiq727X69loCiIvjTQlbLszrcb41rjZRcz7KO66blmfoHnCJ6ys5enVIHC9wc3mwfEqXjNKPXokQ9KZdg3wm90lCP+gWmui3e6mYKpshpdMcuhLtBof1ghitdlYwuwYnmInziO0YEV+FjmpNAws/4hIwt01vtI2mcKcigaRAs31Etv3yHT37GT4rs+3gvkGUxYZ+46nLWCQTiUm+m7v3pR6ijYW6jYNiTYPuGd8DL88KWY5Hti77zc1t+bZsAcfYRxxi6ZxQeHZTKwmT5Dpk5shK6FbaXn8rgZRi/cswd+DLJ0i7FCU7nlNgKmuJh4wUqZmUuxsYtcwKHrmFQztflKXWD63lPf7Stljqp263T6bHGVC18cSYHC8/shxEpg4+Hm3w+iczTds8vuUDCH2VnWtH wsdCFls3 8ncNXKqgBET7PW2wKD37UmX8NzOajK3l0HWzP+55wgCMgWVtch/QNILEZbdj9LIR+eDB5ZfCar/JESVrJT2nlV72AXqSysX2KR8ID9vnkUzRBVnXXhEPzOF1GQDn8Dt34jJJsmPfPstS0F2dEVz5jIyDWVOAt1CXJn4RtAgNynhnbFyDpGtfliIJip8TUfytvC9Hgx+3mC6as+wSuHHz6OTKBPi22plVNvag+7hZhfAkJAVkuMmIoK/N7cdest/WdRO48CAXayI1dmtPQvNIZgt20oGvv3cMKr0s7YFaq8iOVbggKE9LcQbOfk0Fu1P2uQ+U2k0cj0pvIbLs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, 26 Apr 2024 19:29:38 +0800 Kefeng Wang wrote: > See commit f2c817bed58d ("mm: use memalloc_nofs_save in readahead > path"), ensure that page_cache_ra_order() do not attempt to reclaim > file-backed pages too, or it leads to a deadlock, found issue when > test ext4 large folio. > > INFO: task DataXceiver for:7494 blocked for more than 120 seconds. > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > task:DataXceiver for state:D stack:0 pid:7494 ppid:1 flags:0x00000200 > Call trace: > __switch_to+0x14c/0x240 > __schedule+0x82c/0xdd0 > schedule+0x58/0xf0 > io_schedule+0x24/0xa0 > __folio_lock+0x130/0x300 > migrate_pages_batch+0x378/0x918 > migrate_pages+0x350/0x700 > compact_zone+0x63c/0xb38 > compact_zone_order+0xc0/0x118 > try_to_compact_pages+0xb0/0x280 > __alloc_pages_direct_compact+0x98/0x248 > __alloc_pages+0x510/0x1110 > alloc_pages+0x9c/0x130 > folio_alloc+0x20/0x78 > filemap_alloc_folio+0x8c/0x1b0 > page_cache_ra_order+0x174/0x308 > ondemand_readahead+0x1c8/0x2b8 > page_cache_async_ra+0x68/0xb8 > filemap_readahead.isra.0+0x64/0xa8 > filemap_get_pages+0x3fc/0x5b0 > filemap_splice_read+0xf4/0x280 > ext4_file_splice_read+0x2c/0x48 [ext4] > vfs_splice_read.part.0+0xa8/0x118 > splice_direct_to_actor+0xbc/0x288 > do_splice_direct+0x9c/0x108 > do_sendfile+0x328/0x468 > __arm64_sys_sendfile64+0x8c/0x148 > invoke_syscall+0x4c/0x118 > el0_svc_common.constprop.0+0xc8/0xf0 > do_el0_svc+0x24/0x38 > el0_svc+0x4c/0x1f8 > el0t_64_sync_handler+0xc0/0xc8 > el0t_64_sync+0x188/0x190 > > Cc: zhangyi (F) > Signed-off-by: Kefeng Wang I'm thinking Fixes: 793917d997df ("mm/readahead: Add large folio readahead") Cc: stable > --- a/mm/readahead.c > +++ b/mm/readahead.c > @@ -494,6 +494,7 @@ void page_cache_ra_order(struct readahead_control *ractl, > pgoff_t index = readahead_index(ractl); > pgoff_t limit = (i_size_read(mapping->host) - 1) >> PAGE_SHIFT; > pgoff_t mark = index + ra->size - ra->async_size; > + unsigned int nofs; > int err = 0; > gfp_t gfp = readahead_gfp_mask(mapping); > > @@ -508,6 +509,8 @@ void page_cache_ra_order(struct readahead_control *ractl, > new_order = min_t(unsigned int, new_order, ilog2(ra->size)); > } > > + /* See comment in page_cache_ra_unbounded() */ > + nofs = memalloc_nofs_save(); > filemap_invalidate_lock_shared(mapping); > while (index <= limit) { > unsigned int order = new_order; > @@ -531,6 +534,7 @@ void page_cache_ra_order(struct readahead_control *ractl, > > read_pages(ractl); > filemap_invalidate_unlock_shared(mapping); > + memalloc_nofs_restore(nofs); > > /* > * If there were already pages in the page cache, then we may have > -- > 2.41.0