“6efe6e7fd2b344072986c317e781d6bf49d5bfa8”上不存在“git@gitcode.net:openanolis/dragonwell8_jdk.git”
提交 cf62a86b 编写于 作者: L Li Lingfeng 提交者: Zheng Zengkai

Revert "add barriers to buffer_uptodate and set_buffer_uptodate"

hulk inclusion
category: performance
bugzilla: https://gitee.com/openeuler/kernel/issues/I65DCK
CVE: NA

-------------------------------

This reverts commit 70779878.

There's no evidence that buffer_uptodate and set_buffer_uptodate are
unreliable without barriers. What's more, this patch result in the
performance deterioration.
Signed-off-by: NLi Lingfeng <lilingfeng3@huawei.com>
Reviewed-by: NYang Erkun <yangerkun@huawei.com>
Reviewed-by: NZhang Yi <yi.zhang@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 ee83cef2
...@@ -117,6 +117,7 @@ static __always_inline int test_clear_buffer_##name(struct buffer_head *bh) \ ...@@ -117,6 +117,7 @@ static __always_inline int test_clear_buffer_##name(struct buffer_head *bh) \
* of the form "mark_buffer_foo()". These are higher-level functions which * of the form "mark_buffer_foo()". These are higher-level functions which
* do something in addition to setting a b_state bit. * do something in addition to setting a b_state bit.
*/ */
BUFFER_FNS(Uptodate, uptodate)
BUFFER_FNS(Dirty, dirty) BUFFER_FNS(Dirty, dirty)
TAS_BUFFER_FNS(Dirty, dirty) TAS_BUFFER_FNS(Dirty, dirty)
BUFFER_FNS(Lock, locked) BUFFER_FNS(Lock, locked)
...@@ -134,30 +135,6 @@ BUFFER_FNS(Meta, meta) ...@@ -134,30 +135,6 @@ BUFFER_FNS(Meta, meta)
BUFFER_FNS(Prio, prio) BUFFER_FNS(Prio, prio)
BUFFER_FNS(Defer_Completion, defer_completion) BUFFER_FNS(Defer_Completion, defer_completion)
static __always_inline void set_buffer_uptodate(struct buffer_head *bh)
{
/*
* make it consistent with folio_mark_uptodate
* pairs with smp_load_acquire in buffer_uptodate
*/
smp_mb__before_atomic();
set_bit(BH_Uptodate, &bh->b_state);
}
static __always_inline void clear_buffer_uptodate(struct buffer_head *bh)
{
clear_bit(BH_Uptodate, &bh->b_state);
}
static __always_inline int buffer_uptodate(const struct buffer_head *bh)
{
/*
* make it consistent with folio_test_uptodate
* pairs with smp_mb__before_atomic in set_buffer_uptodate
*/
return (smp_load_acquire(&bh->b_state) & (1UL << BH_Uptodate)) != 0;
}
#define bh_offset(bh) ((unsigned long)(bh)->b_data & ~PAGE_MASK) #define bh_offset(bh) ((unsigned long)(bh)->b_data & ~PAGE_MASK)
/* If we *know* page->private refers to buffer_heads */ /* If we *know* page->private refers to buffer_heads */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册