[PATCH 1/3] rpdfs: Use write_seqlock_bh() for balloc info
Valerie Aurora <[email protected]> Thu, 19 Mar 2026 10:37:25 +0100
| Newsgroups | dev.linux.lists.rpdfs-devel |
|---|---|
| Message-ID | <[email protected]> |
The balloc info seqlock is taken from bh context due to rpdfs_balloc_publish_region() being called from an RCU callback, so it needs to use write_seqlock_bh() instead of write_seqlock(). Found via lockdep. Signed-off-by: Valerie Aurora <[email protected]> --- fs/rpdfs/balloc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/rpdfs/balloc.c b/fs/rpdfs/balloc.c index 6a43a7c08aa6..ec1070b4a2d6 100644 --- a/fs/rpdfs/balloc.c +++ b/fs/rpdfs/balloc.c @@ -136,9 +136,9 @@ void rpdfs_balloc_publish_region(struct rpdfs_fs_info *rfi, struct rpdfs_balloc_ rpdfs_balloc_free_region(reg); atomic_inc(&balinf->enospc_count); } else { - write_seqlock(&balinf->seqlock); + write_seqlock_bh(&balinf->seqlock); list_add_tail(®->head, &balinf->region_list); - write_sequnlock(&balinf->seqlock); + write_sequnlock_bh(&balinf->seqlock); } wake_up(&balinf->waitq); } @@ -192,12 +192,12 @@ struct rpdfs_balloc_region *rpdfs_balloc_take_region(struct rpdfs_fs_info *rfi) while_read_seqretry(&balinf->seqlock) empty = list_empty(&balinf->region_list); if (!empty) { - write_seqlock(&balinf->seqlock); + write_seqlock_bh(&balinf->seqlock); reg = list_first_entry_or_null(&balinf->region_list, struct rpdfs_balloc_region, head); if (reg) list_del_init(®->head); - write_sequnlock(&balinf->seqlock); + write_sequnlock_bh(&balinf->seqlock); } if (reg) break; @@ -252,9 +252,9 @@ void rpdfs_balloc_return_region(struct rpdfs_fs_info *rfi, struct rpdfs_balloc_r put_cpu_ptr(balinf->pcpu_region); if (reg) { - write_seqlock(&balinf->seqlock); + write_seqlock_bh(&balinf->seqlock); list_add(®->head, &balinf->region_list); - write_sequnlock(&balinf->seqlock); + write_sequnlock_bh(&balinf->seqlock); wake_up(&balinf->waitq); } } -- 2.49.0