* [PATCH v1 22/25] NFSv4: Use sequence counter with associated spinlock [not found] <20200519214547.352050-1-a.darwish@linutronix.de> @ 2020-05-19 21:45 ` Ahmed S. Darwish [not found] ` <20200608005729.1874024-1-a.darwish@linutronix.de> ` (2 subsequent siblings) 3 siblings, 0 replies; 4+ messages in thread From: Ahmed S. Darwish @ 2020-05-19 21:45 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar, Will Deacon Cc: Thomas Gleixner, Paul E. McKenney, Sebastian A. Siewior, Steven Rostedt, LKML, Ahmed S. Darwish, Trond Myklebust, Anna Schumaker, linux-nfs A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de> --- fs/nfs/nfs4_fs.h | 2 +- fs/nfs/nfs4state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index 2b7f6dcd2eb8..210e590e1f71 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h @@ -117,7 +117,7 @@ struct nfs4_state_owner { unsigned long so_flags; struct list_head so_states; struct nfs_seqid_counter so_seqid; - seqcount_t so_reclaim_seqcount; + seqcount_spinlock_t so_reclaim_seqcount; struct mutex so_delegreturn_mutex; }; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index ac93715c05a4..9b2bad35ad24 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -509,7 +509,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, nfs4_init_seqid_counter(&sp->so_seqid); atomic_set(&sp->so_count, 1); INIT_LIST_HEAD(&sp->so_lru); - seqcount_init(&sp->so_reclaim_seqcount); + seqcount_spinlock_init(&sp->so_reclaim_seqcount, &sp->so_lock); mutex_init(&sp->so_delegreturn_mutex); return sp; } -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <20200608005729.1874024-1-a.darwish@linutronix.de>]
* [PATCH v2 15/18] NFSv4: Use sequence counter with associated spinlock [not found] ` <20200608005729.1874024-1-a.darwish@linutronix.de> @ 2020-06-08 0:57 ` Ahmed S. Darwish 0 siblings, 0 replies; 4+ messages in thread From: Ahmed S. Darwish @ 2020-06-08 0:57 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar, Will Deacon Cc: Thomas Gleixner, Paul E. McKenney, Sebastian A. Siewior, Steven Rostedt, LKML, Ahmed S. Darwish, Trond Myklebust, Anna Schumaker, linux-nfs A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de> --- fs/nfs/nfs4_fs.h | 2 +- fs/nfs/nfs4state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index 2b7f6dcd2eb8..210e590e1f71 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h @@ -117,7 +117,7 @@ struct nfs4_state_owner { unsigned long so_flags; struct list_head so_states; struct nfs_seqid_counter so_seqid; - seqcount_t so_reclaim_seqcount; + seqcount_spinlock_t so_reclaim_seqcount; struct mutex so_delegreturn_mutex; }; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index a8dc25ce48bb..b1dba24918f8 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -509,7 +509,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, nfs4_init_seqid_counter(&sp->so_seqid); atomic_set(&sp->so_count, 1); INIT_LIST_HEAD(&sp->so_lru); - seqcount_init(&sp->so_reclaim_seqcount); + seqcount_spinlock_init(&sp->so_reclaim_seqcount, &sp->so_lock); mutex_init(&sp->so_delegreturn_mutex); return sp; } -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <20200630054452.3675847-1-a.darwish@linutronix.de>]
* [PATCH v3 17/20] NFSv4: Use sequence counter with associated spinlock [not found] ` <20200630054452.3675847-1-a.darwish@linutronix.de> @ 2020-06-30 5:44 ` Ahmed S. Darwish 0 siblings, 0 replies; 4+ messages in thread From: Ahmed S. Darwish @ 2020-06-30 5:44 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar, Will Deacon Cc: Thomas Gleixner, Paul E. McKenney, Sebastian A. Siewior, Steven Rostedt, LKML, Ahmed S. Darwish, Trond Myklebust, Anna Schumaker, linux-nfs A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de> --- fs/nfs/nfs4_fs.h | 2 +- fs/nfs/nfs4state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index 2b7f6dcd2eb8..210e590e1f71 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h @@ -117,7 +117,7 @@ struct nfs4_state_owner { unsigned long so_flags; struct list_head so_states; struct nfs_seqid_counter so_seqid; - seqcount_t so_reclaim_seqcount; + seqcount_spinlock_t so_reclaim_seqcount; struct mutex so_delegreturn_mutex; }; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index a8dc25ce48bb..b1dba24918f8 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -509,7 +509,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, nfs4_init_seqid_counter(&sp->so_seqid); atomic_set(&sp->so_count, 1); INIT_LIST_HEAD(&sp->so_lru); - seqcount_init(&sp->so_reclaim_seqcount); + seqcount_spinlock_init(&sp->so_reclaim_seqcount, &sp->so_lock); mutex_init(&sp->so_delegreturn_mutex); return sp; } -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <20200720155530.1173732-1-a.darwish@linutronix.de>]
* [PATCH v4 21/24] NFSv4: Use sequence counter with associated spinlock [not found] ` <20200720155530.1173732-1-a.darwish@linutronix.de> @ 2020-07-20 15:55 ` Ahmed S. Darwish 0 siblings, 0 replies; 4+ messages in thread From: Ahmed S. Darwish @ 2020-07-20 15:55 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar, Will Deacon Cc: Thomas Gleixner, Paul E. McKenney, Sebastian A. Siewior, Steven Rostedt, LKML, Ahmed S. Darwish, Trond Myklebust, Anna Schumaker, linux-nfs A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de> --- fs/nfs/nfs4_fs.h | 2 +- fs/nfs/nfs4state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index 2b7f6dcd2eb8..210e590e1f71 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h @@ -117,7 +117,7 @@ struct nfs4_state_owner { unsigned long so_flags; struct list_head so_states; struct nfs_seqid_counter so_seqid; - seqcount_t so_reclaim_seqcount; + seqcount_spinlock_t so_reclaim_seqcount; struct mutex so_delegreturn_mutex; }; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index a8dc25ce48bb..b1dba24918f8 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -509,7 +509,7 @@ nfs4_alloc_state_owner(struct nfs_server *server, nfs4_init_seqid_counter(&sp->so_seqid); atomic_set(&sp->so_count, 1); INIT_LIST_HEAD(&sp->so_lru); - seqcount_init(&sp->so_reclaim_seqcount); + seqcount_spinlock_init(&sp->so_reclaim_seqcount, &sp->so_lock); mutex_init(&sp->so_delegreturn_mutex); return sp; } -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-07-20 15:57 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20200519214547.352050-1-a.darwish@linutronix.de> 2020-05-19 21:45 ` [PATCH v1 22/25] NFSv4: Use sequence counter with associated spinlock Ahmed S. Darwish [not found] ` <20200608005729.1874024-1-a.darwish@linutronix.de> 2020-06-08 0:57 ` [PATCH v2 15/18] " Ahmed S. Darwish [not found] ` <20200630054452.3675847-1-a.darwish@linutronix.de> 2020-06-30 5:44 ` [PATCH v3 17/20] " Ahmed S. Darwish [not found] ` <20200720155530.1173732-1-a.darwish@linutronix.de> 2020-07-20 15:55 ` [PATCH v4 21/24] " Ahmed S. Darwish
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).