Re: dm writecache: add unlikely for getting two block with same LBA

From: Mikulas Patocka
Date: Sun Aug 11 2019 - 14:15:32 EST




On Mon, 12 Aug 2019, Huaisheng Ye wrote:

> From: Huaisheng Ye <yehs1@xxxxxxxxxx>
>
> In function writecache_writeback, entries g and f has same original
> sector only happens at entry f has been committed, but entry g has
> NOT yet.
>
> The probability of this happening is very low in the following
> 256 blocks at most of entry e, so add unlikely for the result.
>
> Signed-off-by: Huaisheng Ye <yehs1@xxxxxxxxxx>

Acked-by: Mikulas Patocka <mpatocka@xxxxxxxxxx>

> ---
> drivers/md/dm-writecache.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/md/dm-writecache.c b/drivers/md/dm-writecache.c
> index 5c7009d..3643084 100644
> --- a/drivers/md/dm-writecache.c
> +++ b/drivers/md/dm-writecache.c
> @@ -1628,8 +1628,8 @@ static void writecache_writeback(struct work_struct *work)
> if (unlikely(!next_node))
> break;
> g = container_of(next_node, struct wc_entry, rb_node);
> - if (read_original_sector(wc, g) ==
> - read_original_sector(wc, f)) {
> + if (unlikely(read_original_sector(wc, g) ==
> + read_original_sector(wc, f))) {
> f = g;
> continue;
> }
> --
> 1.8.3.1
>
>