qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v19 07/16] block: Add backing_blocker in BlockDr


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v19 07/16] block: Add backing_blocker in BlockDriverState
Date: Mon, 19 May 2014 22:23:27 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 05/11/2014 07:35 PM, Fam Zheng wrote:
>> This makes use of op_blocker and blocks all the operations except for
>> commit target, on each BlockDriverState->backing_hd.
>> 
>> The asserts for op_blocker in bdrv_swap are removed because with this
>> change, the target of block commit has at least the backing blocker of
>> its child, so the assertion is not true. Callers should do their check.
>> 
>> Signed-off-by: Fam Zheng <address@hidden>
>> ---
>>  block.c                   | 24 ++++++++++++++++++++----
>>  block/mirror.c            |  1 +
>>  include/block/block_int.h |  3 +++
>>  3 files changed, 24 insertions(+), 4 deletions(-)
>> 
>> diff --git a/block.c b/block.c
>> index ec26a2b..8155e68 100644
>> --- a/block.c
>> +++ b/block.c
>> @@ -1097,14 +1097,31 @@ fail:
>>  void bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd)
>>  {
>>  
>> +    if (bs->backing_hd) {
>> +        assert(error_is_set(&bs->backing_blocker));
>
> error_is_set() is going away.  Please don't use it.
> https://lists.gnu.org/archive/html/qemu-devel/2014-05/msg03801.html
>
> This can just be assert(bs->backing_blocker).

Yes.  See commit 0fb6395.  Another instance in PATCH 14.

>> +        bdrv_op_unblock_all(bs->backing_hd, bs->backing_blocker);
>> +    } else if (backing_hd) {
>> +        error_setg(&bs->backing_blocker,
>> +                   "device is used as backing hd of '%s'",
>> +                   bs->device_name);
>> +    }
>> +
>>      bs->backing_hd = backing_hd;
>>      if (!backing_hd) {
>> +        if (error_is_set(&bs->backing_blocker)) {
>> +            error_free(bs->backing_blocker);
>
> if (bs->backing_blocker) {

Actually, unconditional error_free(bs->backing_blocker) is fine.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]