70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
|
From 53e383e2aa32dbd6751f888a1db840666b1af2df Mon Sep 17 00:00:00 2001
|
||
|
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||
|
Date: Mon, 6 Nov 2017 18:45:30 +0100
|
||
|
Subject: [PATCH 326/365] fs: convert two more BH_Uptodate_Lock related
|
||
|
bitspinlocks
|
||
|
|
||
|
We convert all BH_Uptodate_Lock based bit-spinlocks to use
|
||
|
bh_uptodate_lock_irqsave() instead. Those two were introduced after the
|
||
|
initial change in -RT and were not noticed before.
|
||
|
|
||
|
Cc: stable-rt@vger.kernel.org
|
||
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||
|
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||
|
---
|
||
|
fs/ext4/page-io.c | 6 ++----
|
||
|
fs/xfs/xfs_aops.c | 6 ++----
|
||
|
2 files changed, 4 insertions(+), 8 deletions(-)
|
||
|
|
||
|
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c
|
||
|
index d68032bda4bf..e395a96cb2a2 100644
|
||
|
--- a/fs/ext4/page-io.c
|
||
|
+++ b/fs/ext4/page-io.c
|
||
|
@@ -94,8 +94,7 @@ static void ext4_finish_bio(struct bio *bio)
|
||
|
* We check all buffers in the page under BH_Uptodate_Lock
|
||
|
* to avoid races with other end io clearing async_write flags
|
||
|
*/
|
||
|
- local_irq_save(flags);
|
||
|
- bit_spin_lock(BH_Uptodate_Lock, &head->b_state);
|
||
|
+ flags = bh_uptodate_lock_irqsave(head);
|
||
|
do {
|
||
|
if (bh_offset(bh) < bio_start ||
|
||
|
bh_offset(bh) + bh->b_size > bio_end) {
|
||
|
@@ -107,8 +106,7 @@ static void ext4_finish_bio(struct bio *bio)
|
||
|
if (bio->bi_error)
|
||
|
buffer_io_error(bh);
|
||
|
} while ((bh = bh->b_this_page) != head);
|
||
|
- bit_spin_unlock(BH_Uptodate_Lock, &head->b_state);
|
||
|
- local_irq_restore(flags);
|
||
|
+ bh_uptodate_unlock_irqrestore(head, flags);
|
||
|
if (!under_io) {
|
||
|
#ifdef CONFIG_EXT4_FS_ENCRYPTION
|
||
|
if (data_page)
|
||
|
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
|
||
|
index f3acecf3869d..c30dbde2a5af 100644
|
||
|
--- a/fs/xfs/xfs_aops.c
|
||
|
+++ b/fs/xfs/xfs_aops.c
|
||
|
@@ -112,8 +112,7 @@ xfs_finish_page_writeback(
|
||
|
ASSERT(bvec->bv_offset + bvec->bv_len <= PAGE_SIZE);
|
||
|
ASSERT((bvec->bv_len & (i_blocksize(inode) - 1)) == 0);
|
||
|
|
||
|
- local_irq_save(flags);
|
||
|
- bit_spin_lock(BH_Uptodate_Lock, &head->b_state);
|
||
|
+ flags = bh_uptodate_lock_irqsave(head);
|
||
|
do {
|
||
|
if (off >= bvec->bv_offset &&
|
||
|
off < bvec->bv_offset + bvec->bv_len) {
|
||
|
@@ -136,8 +135,7 @@ xfs_finish_page_writeback(
|
||
|
}
|
||
|
off += bh->b_size;
|
||
|
} while ((bh = bh->b_this_page) != head);
|
||
|
- bit_spin_unlock(BH_Uptodate_Lock, &head->b_state);
|
||
|
- local_irq_restore(flags);
|
||
|
+ bh_uptodate_unlock_irqrestore(head, flags);
|
||
|
|
||
|
if (!busy)
|
||
|
end_page_writeback(bvec->bv_page);
|
||
|
--
|
||
|
2.28.0
|
||
|
|