[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] block: simplify write-threshold and drop write notifiers
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH] block: simplify write-threshold and drop write notifiers |
Date: |
Wed, 5 May 2021 11:10:19 +0100 |
On Thu, Apr 22, 2021 at 01:09:50AM +0300, Vladimir Sementsov-Ogievskiy wrote:
> @@ -1981,8 +1985,15 @@ bdrv_co_write_req_prepare(BdrvChild *child, int64_t
> offset, int64_t bytes,
> } else {
> assert(child->perm & BLK_PERM_WRITE);
> }
> - return notifier_with_return_list_notify(&bs->before_write_notifiers,
> - req);
> + write_threshold = qatomic_read(&bs->write_threshold_offset);
> + if (write_threshold > 0 && offset + bytes > write_threshold) {
> + qapi_event_send_block_write_threshold(
> + bs->node_name,
> + offset + bytes - write_threshold,
> + write_threshold);
> + qatomic_set(&bs->write_threshold_offset, 0);
It's safer to reset the threshold before emitting the event. That way
there is no race with the QMP client setting a new threshold via
bdrv_write_threshold_is_set(). I guess the race is possible since
qatomic is used and there is no lock.
I like the idea of dropping write notifiers:
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
signature.asc
Description: PGP signature