Markus Armbruster writes:
> Markus Armbruster writes:
>
>> Benoît Canet writes:
>>
--- a/block.c
+++ b/block.c
@@ -2119,10 +2119,11 @@ static void bdrv_delete(BlockDriverState *bs)
bdrv_close(bs);
>>>
>>>
+drive_info_del(drive_get_by_blockdev(bs))
Markus Armbruster writes:
> Benoît Canet writes:
>
>>> --- a/block.c
>>> +++ b/block.c
>>> @@ -2119,10 +2119,11 @@ static void bdrv_delete(BlockDriverState *bs)
>>>
>>> bdrv_close(bs);
>>>
>>
>>
>>> +drive_info_del(drive_get_by_blockdev(bs));
>>> +
>>> /* remove from list, if n
Benoît Canet writes:
>> --- a/block.c
>> +++ b/block.c
>> @@ -2119,10 +2119,11 @@ static void bdrv_delete(BlockDriverState *bs)
>>
>> bdrv_close(bs);
>>
>
>
>> +drive_info_del(drive_get_by_blockdev(bs));
>> +
>> /* remove from list, if necessary */
>> bdrv_make_anon(bs);
>>
> --- a/block.c
> +++ b/block.c
> @@ -2119,10 +2119,11 @@ static void bdrv_delete(BlockDriverState *bs)
>
> bdrv_close(bs);
>
> +drive_info_del(drive_get_by_blockdev(bs));
> +
> /* remove from list, if necessary */
> bdrv_make_anon(bs);
>
> -drive_info_del(drive_get_b
Max Reitz writes:
> On 13.09.2014 17:00, Markus Armbruster wrote:
>> A block device consists of a frontend device model and a backend.
>>
>> A block backend has a tree of block drivers doing the actual work.
>> The tree is managed by the block layer.
>>
>> We currently use a single abstraction Bl
On 13.09.2014 17:00, Markus Armbruster wrote:
A block device consists of a frontend device model and a backend.
A block backend has a tree of block drivers doing the actual work.
The tree is managed by the block layer.
We currently use a single abstraction BlockDriverState both for tree
nodes a
A block device consists of a frontend device model and a backend.
A block backend has a tree of block drivers doing the actual work.
The tree is managed by the block layer.
We currently use a single abstraction BlockDriverState both for tree
nodes and the backend as a whole. Drawbacks:
* Its AP