From: Byungchul Park <byungchul@sk.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: linux-kernel@vger.kernel.org, kernel_team@skhynix.com,
torvalds@linux-foundation.org, damien.lemoal@opensource.wdc.com,
linux-ide@vger.kernel.org, adilger.kernel@dilger.ca,
linux-ext4@vger.kernel.org, mingo@redhat.com,
peterz@infradead.org, will@kernel.org, tglx@linutronix.de,
rostedt@goodmis.org, joel@joelfernandes.org, sashal@kernel.org,
daniel.vetter@ffwll.ch, duyuyang@gmail.com,
johannes.berg@intel.com, tj@kernel.org, tytso@mit.edu,
david@fromorbit.com, amir73il@gmail.com,
gregkh@linuxfoundation.org, kernel-team@lge.com,
linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org,
minchan@kernel.org, hannes@cmpxchg.org, vdavydov.dev@gmail.com,
sj@kernel.org, jglisse@redhat.com, dennis@kernel.org,
cl@linux.com, penberg@kernel.org, rientjes@google.com,
vbabka@suse.cz, ngupta@vflare.org, linux-block@vger.kernel.org,
josef@toxicpanda.com, linux-fsdevel@vger.kernel.org,
jack@suse.cz, jlayton@kernel.org, dan.j.williams@intel.com,
hch@infradead.org, djwong@kernel.org,
dri-devel@lists.freedesktop.org, rodrigosiqueiramelo@gmail.com,
melissa.srw@gmail.com, hamohammed.sa@gmail.com,
harry.yoo@oracle.com, chris.p.wilson@intel.com,
gwan-gyeong.mun@intel.com, max.byungchul.park@gmail.com,
boqun.feng@gmail.com, longman@redhat.com,
yunseong.kim@ericsson.com, ysk@kzalloc.com, yeoreum.yun@arm.com,
netdev@vger.kernel.org, matthew.brost@intel.com,
her0gyugyu@gmail.com, corbet@lwn.net, catalin.marinas@arm.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, luto@kernel.org, sumit.semwal@linaro.org,
gustavo@padovan.org, christian.koenig@amd.com,
andi.shyti@kernel.org, arnd@arndb.de, lorenzo.stoakes@oracle.com,
Liam.Howlett@oracle.com, rppt@kernel.org, surenb@google.com,
mcgrof@kernel.org, petr.pavlu@suse.com, da.gomez@kernel.org,
samitolvanen@google.com, paulmck@kernel.org, frederic@kernel.org,
neeraj.upadhyay@kernel.org, joelagnelf@nvidia.com,
josh@joshtriplett.org, urezki@gmail.com,
mathieu.desnoyers@efficios.com, jiangshanlai@gmail.com,
qiang.zhang@linux.dev, juri.lelli@redhat.com,
vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
chuck.lever@oracle.com, neil@brown.name, okorniev@redhat.com,
Dai.Ngo@oracle.com, tom@talpey.com, trondmy@kernel.org,
anna@kernel.org, kees@kernel.org, bigeasy@linutronix.de,
clrkwllms@kernel.org, mark.rutland@arm.com,
ada.coupriediaz@arm.com, kristina.martsenko@arm.com,
wangkefeng.wang@huawei.com, broonie@kernel.org,
kevin.brodsky@arm.com, dwmw@amazon.co.uk, shakeel.butt@linux.dev,
ast@kernel.org, ziy@nvidia.com, yuzhao@google.com,
baolin.wang@linux.alibaba.com, usamaarif642@gmail.com,
joel.granados@kernel.org, richard.weiyang@gmail.com,
geert+renesas@glider.be, tim.c.chen@linux.intel.com,
linux@treblig.org, alexander.shishkin@linux.intel.com,
lillian@star-ark.net, chenhuacai@kernel.org, francesco@valla.it,
guoweikang.kernel@gmail.com, link@vivo.com, jpoimboe@kernel.org,
masahiroy@kernel.org, brauner@kernel.org,
thomas.weissschuh@linutronix.de, oleg@redhat.com,
mjguzik@gmail.com, andrii@kernel.org, wangfushuai@baidu.com,
linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
linux-i2c@vger.kernel.org, linux-arch@vger.kernel.org,
linux-modules@vger.kernel.org, rcu@vger.kernel.org,
linux-nfs@vger.kernel.org, linux-rt-devel@lists.linux.dev
Subject: Re: [PATCH v17 44/47] dept: introduce APIs to set page usage and use subclasses_evt for the usage
Date: Mon, 1 Dec 2025 16:18:27 +0900 [thread overview]
Message-ID: <20251201071827.GA70324@system.software.com> (raw)
In-Reply-To: <aR3WHf9QZ_dizNun@casper.infradead.org>
On Wed, Nov 19, 2025 at 02:37:17PM +0000, Matthew Wilcox wrote:
> On Wed, Nov 19, 2025 at 07:53:12PM +0900, Byungchul Park wrote:
> > On Thu, Oct 02, 2025 at 05:12:44PM +0900, Byungchul Park wrote:
> > > False positive reports have been observed since dept works with the
> > > assumption that all the pages have the same dept class, but the class
> > > should be split since the problematic call paths are different depending
> > > on what the page is used for.
> > >
> > > At least, ones in block device's address_space and ones in regular
> > > file's address_space have exclusively different usages.
> > >
> > > Thus, define usage candidates like:
> > >
> > > DEPT_PAGE_REGFILE_CACHE /* page in regular file's address_space */
> > > DEPT_PAGE_BDEV_CACHE /* page in block device's address_space */
> > > DEPT_PAGE_DEFAULT /* the others */
> >
> > 1. I'd like to annotate a page to DEPT_PAGE_REGFILE_CACHE when the page
> > starts to be associated with a page cache for fs data.
> >
> > 2. And I'd like to annotate a page to DEPT_PAGE_BDEV_CACHE when the page
> > starts to be associated with meta data of fs e.g. super block.
> >
> > 3. Lastly, I'd like to reset the annotated value if any, that has been
> > set in the page, when the page ends the assoication with either page
> > cache or meta block of fs e.g. freeing the page.
> >
> > Can anyone suggest good places in code for the annotation 1, 2, 3? It'd
> > be totally appreciated. :-)
>
> I don't think it makes sense to track lock state in the page (nor
> folio). Partly bcause there's just so many of them, but also because
> the locking rules don't really apply to individual folios so much as
> they do to the mappings (or anon_vmas) that contain folios.
I've been trying to fully understand what you meant but maybe failed.
FWIW, dept is working based on classification, not instance by instance,
that is similar to lockdep. This patch is for resolving issues that
might come from the fact that there is a **single class** for PG_locked,
by splitting the class to several ones according to their usages.
> If you're looking to find deadlock scenarios, I think it makes more
> sense to track all folio locks in a given mapping as the same lock
> type rather than track each folio's lock status.
>
> For example, let's suppose we did something like this in the
> page fault path:
>
> Look up and lock a folio (we need folios locked to insert them into
> the page tables to avoid a race with truncate)
> Try to allocate a page table
> Go into reclaim, attempt to reclaim a folio from this mapping
I think you are talking about nested lock patterns involving PG_locked.
Even though dept can do much more jobs than just tracking nested lock
patterns within a single context, of course, nested lock patterns
involving PG_locked should be handled appropriately, maybe with the
useful information you gave. When I work on handling nested locks esp.
involving PG_locked, I will try to get you again. Thanks.
However, I have no choice but to keep this approach for the **single
class** issue. Feel free to ask if any.
Byungchul
> We ought to detect that as a potential deadlock, regardless of which
> folio in the mapping we attempt to reclaim. So can we track folio
> locking at the mapping/anon_vma level instead?
>
> ---
>
> My current understanding of folio locking rules:
>
> If you hold a lock on folio A, you can take a lock on folio B if:
>
> 1. A->mapping == B->mapping and A->index < B->index
> (for example writeback; we take locks on all folios to be written
> back in order)
> 2. !S_ISBLK(A->mapping->host) and S_ISBLK(B->mapping->host)
> 3. S_ISREG(A->mapping->host) and S_ISREG(B->mapping->host) with
> inode_lock() held on both and A->index < B->index
> (the remap_range code)
next prev parent reply other threads:[~2025-12-01 7:18 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-02 8:12 [PATCH v17 00/47] DEPT(DEPendency Tracker) Byungchul Park
2025-10-02 8:12 ` [PATCH v17 01/47] llist: move llist_{head,node} definition to types.h Byungchul Park
2025-10-02 8:24 ` Greg KH
2025-10-02 13:53 ` Mathieu Desnoyers
2025-10-02 23:19 ` Arnd Bergmann
2025-10-16 0:46 ` Byungchul Park
2025-10-16 7:59 ` Arnd Bergmann
2025-10-16 0:38 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 02/47] dept: implement DEPT(DEPendency Tracker) Byungchul Park
2025-10-02 8:25 ` Greg KH
2025-10-02 12:56 ` Geert Uytterhoeven
2025-10-02 8:12 ` [PATCH v17 03/47] dept: add single event dependency tracker APIs Byungchul Park
2025-10-02 8:12 ` [PATCH v17 04/47] dept: add lock " Byungchul Park
2025-10-02 8:12 ` [PATCH v17 05/47] dept: tie to lockdep and IRQ tracing Byungchul Park
2025-10-02 8:12 ` [PATCH v17 06/47] dept: add proc knobs to show stats and dependency graph Byungchul Park
2025-10-02 8:12 ` [PATCH v17 07/47] dept: distinguish each kernel context from another Byungchul Park
2025-10-02 8:12 ` [PATCH v17 08/47] x86_64, dept: add support CONFIG_ARCH_HAS_DEPT_SUPPORT to x86_64 Byungchul Park
2025-10-02 15:22 ` Dave Hansen
2025-10-03 1:12 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 09/47] arm64, dept: add support CONFIG_ARCH_HAS_DEPT_SUPPORT to arm64 Byungchul Park
2025-10-02 11:39 ` Mark Brown
2025-10-03 1:46 ` Byungchul Park
2025-10-03 11:33 ` Mark Brown
2025-10-13 1:51 ` Byungchul Park
2025-10-03 14:36 ` Mark Rutland
2025-10-13 4:28 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 10/47] dept: distinguish each work from another Byungchul Park
2025-10-02 8:12 ` [PATCH v17 11/47] dept: add a mechanism to refill the internal memory pools on running out Byungchul Park
2025-10-02 8:12 ` [PATCH v17 12/47] dept: record the latest one out of consecutive waits of the same class Byungchul Park
2025-10-02 8:12 ` [PATCH v17 13/47] dept: apply sdt_might_sleep_{start,end}() to wait_for_completion()/complete() Byungchul Park
2025-10-02 8:12 ` [PATCH v17 14/47] dept: apply sdt_might_sleep_{start,end}() to swait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 15/47] dept: apply sdt_might_sleep_{start,end}() to waitqueue wait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 16/47] dept: apply sdt_might_sleep_{start,end}() to hashed-waitqueue wait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 17/47] dept: apply sdt_might_sleep_{start,end}() to dma fence Byungchul Park
2025-10-02 8:12 ` [PATCH v17 18/47] dept: track timeout waits separately with a new Kconfig Byungchul Park
2025-10-02 8:12 ` [PATCH v17 19/47] dept: apply timeout consideration to wait_for_completion()/complete() Byungchul Park
2025-10-02 8:12 ` [PATCH v17 20/47] dept: apply timeout consideration to swait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 21/47] dept: apply timeout consideration to waitqueue wait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 22/47] dept: apply timeout consideration to hashed-waitqueue wait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 23/47] dept: apply timeout consideration to dma fence wait Byungchul Park
2025-10-02 8:12 ` [PATCH v17 24/47] dept: make dept able to work with an external wgen Byungchul Park
2025-10-02 8:12 ` [PATCH v17 25/47] dept: track PG_locked with dept Byungchul Park
2025-10-02 8:12 ` [PATCH v17 26/47] dept: print staged wait's stacktrace on report Byungchul Park
2025-10-02 8:12 ` [PATCH v17 27/47] locking/lockdep: prevent various lockdep assertions when lockdep_off()'ed Byungchul Park
2025-10-02 8:12 ` [PATCH v17 28/47] dept: add documentation for dept Byungchul Park
2025-10-03 2:44 ` Bagas Sanjaya
2025-10-13 1:28 ` Byungchul Park
2025-10-03 5:36 ` Jonathan Corbet
2025-10-13 1:03 ` Byungchul Park
2025-10-03 6:55 ` NeilBrown
2025-10-13 5:23 ` Byungchul Park
2025-10-14 6:03 ` NeilBrown
2025-10-14 6:38 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 29/47] cpu/hotplug: use a weaker annotation in AP thread Byungchul Park
2025-10-02 8:12 ` [PATCH v17 30/47] fs/jbd2: use a weaker annotation in journal handling Byungchul Park
2025-10-02 8:40 ` Jan Kara
2025-10-03 1:13 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 31/47] dept: assign dept map to mmu notifier invalidation synchronization Byungchul Park
2025-10-02 8:12 ` [PATCH v17 32/47] dept: assign unique dept_key to each distinct dma fence caller Byungchul Park
2025-10-02 8:12 ` [PATCH v17 33/47] dept: make dept aware of lockdep_set_lock_cmp_fn() annotation Byungchul Park
2025-10-02 8:12 ` [PATCH v17 34/47] dept: make dept stop from working on debug_locks_off() Byungchul Park
2025-10-02 8:12 ` [PATCH v17 35/47] i2c: rename wait_for_completion callback to wait_for_completion_cb Byungchul Park
2025-10-04 16:39 ` Wolfram Sang
2025-10-13 5:27 ` Byungchul Park
2025-10-02 8:12 ` [PATCH v17 36/47] dept: assign unique dept_key to each distinct wait_for_completion() caller Byungchul Park
2025-10-02 8:12 ` [PATCH v17 37/47] completion, dept: introduce init_completion_dmap() API Byungchul Park
2025-10-02 8:12 ` [PATCH v17 38/47] dept: introduce a new type of dependency tracking between multi event sites Byungchul Park
2025-10-02 8:12 ` [PATCH v17 39/47] dept: add module support for struct dept_event_site and dept_event_site_dep Byungchul Park
2025-10-02 8:12 ` [PATCH v17 40/47] dept: introduce event_site() to disable event tracking if it's recoverable Byungchul Park
2025-10-02 8:12 ` [PATCH v17 41/47] dept: implement a basic unit test for dept Byungchul Park
2025-10-02 8:12 ` [PATCH v17 42/47] dept: call dept_hardirqs_off() in local_irq_*() regardless of irq state Byungchul Park
2025-10-02 8:12 ` [PATCH v17 43/47] rcu/update: fix same dept key collision between various types of RCU Byungchul Park
2025-10-02 8:12 ` [PATCH v17 44/47] dept: introduce APIs to set page usage and use subclasses_evt for the usage Byungchul Park
2025-11-19 10:53 ` Byungchul Park
2025-11-19 14:37 ` Matthew Wilcox
2025-11-20 2:09 ` Byungchul Park
2025-11-20 2:34 ` Byungchul Park
2025-11-20 5:14 ` Byungchul Park
2025-12-01 7:18 ` Byungchul Park [this message]
2025-10-02 8:12 ` [PATCH v17 45/47] dept: track PG_writeback with dept Byungchul Park
2025-10-02 8:12 ` [PATCH v17 46/47] SUNRPC: relocate struct rcu_head to the first field of struct rpc_xprt Byungchul Park
2025-10-02 8:12 ` [PATCH v17 47/47] mm: percpu: increase PERCPU_DYNAMIC_SIZE_SHIFT on DEPT and large PAGE_SIZE Byungchul Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251201071827.GA70324@system.software.com \
--to=byungchul@sk.com \
--cc=Dai.Ngo@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=ada.coupriediaz@arm.com \
--cc=adilger.kernel@dilger.ca \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=amir73il@gmail.com \
--cc=andi.shyti@kernel.org \
--cc=andrii@kernel.org \
--cc=anna@kernel.org \
--cc=arnd@arndb.de \
--cc=ast@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bigeasy@linutronix.de \
--cc=boqun.feng@gmail.com \
--cc=bp@alien8.de \
--cc=brauner@kernel.org \
--cc=broonie@kernel.org \
--cc=bsegall@google.com \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=chris.p.wilson@intel.com \
--cc=christian.koenig@amd.com \
--cc=chuck.lever@oracle.com \
--cc=cl@linux.com \
--cc=clrkwllms@kernel.org \
--cc=corbet@lwn.net \
--cc=da.gomez@kernel.org \
--cc=damien.lemoal@opensource.wdc.com \
--cc=dan.j.williams@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dave.hansen@linux.intel.com \
--cc=david@fromorbit.com \
--cc=dennis@kernel.org \
--cc=dietmar.eggemann@arm.com \
--cc=djwong@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=duyuyang@gmail.com \
--cc=dwmw@amazon.co.uk \
--cc=francesco@valla.it \
--cc=frederic@kernel.org \
--cc=geert+renesas@glider.be \
--cc=gregkh@linuxfoundation.org \
--cc=guoweikang.kernel@gmail.com \
--cc=gustavo@padovan.org \
--cc=gwan-gyeong.mun@intel.com \
--cc=hamohammed.sa@gmail.com \
--cc=hannes@cmpxchg.org \
--cc=harry.yoo@oracle.com \
--cc=hch@infradead.org \
--cc=her0gyugyu@gmail.com \
--cc=hpa@zytor.com \
--cc=jack@suse.cz \
--cc=jglisse@redhat.com \
--cc=jiangshanlai@gmail.com \
--cc=jlayton@kernel.org \
--cc=joel.granados@kernel.org \
--cc=joel@joelfernandes.org \
--cc=joelagnelf@nvidia.com \
--cc=johannes.berg@intel.com \
--cc=josef@toxicpanda.com \
--cc=josh@joshtriplett.org \
--cc=jpoimboe@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=kees@kernel.org \
--cc=kernel-team@lge.com \
--cc=kernel_team@skhynix.com \
--cc=kevin.brodsky@arm.com \
--cc=kristina.martsenko@arm.com \
--cc=lillian@star-ark.net \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=link@vivo.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-modules@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=linux@treblig.org \
--cc=longman@redhat.com \
--cc=lorenzo.stoakes@oracle.com \
--cc=luto@kernel.org \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=matthew.brost@intel.com \
--cc=max.byungchul.park@gmail.com \
--cc=mcgrof@kernel.org \
--cc=melissa.srw@gmail.com \
--cc=mgorman@suse.de \
--cc=mhocko@kernel.org \
--cc=minchan@kernel.org \
--cc=mingo@redhat.com \
--cc=mjguzik@gmail.com \
--cc=neeraj.upadhyay@kernel.org \
--cc=neil@brown.name \
--cc=netdev@vger.kernel.org \
--cc=ngupta@vflare.org \
--cc=okorniev@redhat.com \
--cc=oleg@redhat.com \
--cc=paulmck@kernel.org \
--cc=penberg@kernel.org \
--cc=peterz@infradead.org \
--cc=petr.pavlu@suse.com \
--cc=qiang.zhang@linux.dev \
--cc=rcu@vger.kernel.org \
--cc=richard.weiyang@gmail.com \
--cc=rientjes@google.com \
--cc=rodrigosiqueiramelo@gmail.com \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=samitolvanen@google.com \
--cc=sashal@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=sj@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=surenb@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.weissschuh@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=tj@kernel.org \
--cc=tom@talpey.com \
--cc=torvalds@linux-foundation.org \
--cc=trondmy@kernel.org \
--cc=tytso@mit.edu \
--cc=urezki@gmail.com \
--cc=usamaarif642@gmail.com \
--cc=vbabka@suse.cz \
--cc=vdavydov.dev@gmail.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=wangfushuai@baidu.com \
--cc=wangkefeng.wang@huawei.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=yeoreum.yun@arm.com \
--cc=ysk@kzalloc.com \
--cc=yunseong.kim@ericsson.com \
--cc=yuzhao@google.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox