23.11.2020 23:12, Vladimir Sementsov-Ogievskiy wrote:
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.
Second, in the iteration we have nested permission
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.
Second, in the iteration we have nested permission update:
c->klass->update_filename may point to
05.11.2020 18:14, Alberto Garcia wrote:
On Sat 31 Oct 2020 01:35:01 PM CET, Vladimir Sementsov-Ogievskiy wrote:
-QLIST_FOREACH_SAFE(c, >parents, next_parent, next) {
/* ... */
+QLIST_FOREACH_SAFE(c, >parents, next_parent, next) {
I also wonder, is top->parents and base->parents
On Sat 31 Oct 2020 01:35:01 PM CET, Vladimir Sementsov-Ogievskiy wrote:
> -QLIST_FOREACH_SAFE(c, >parents, next_parent, next) {
/* ... */
> +QLIST_FOREACH_SAFE(c, >parents, next_parent, next) {
I also wonder, is top->parents and base->parents guaranteed to be the
same list in this case?
On Sat 31 Oct 2020 01:35:01 PM CET, Vladimir Sementsov-Ogievskiy wrote:
> @@ -4958,36 +4958,30 @@ int bdrv_drop_intermediate(BlockDriverState *top,
> BlockDriverState *base,
> backing_file_str = base->filename;
> }
>
> -QLIST_FOREACH_SAFE(c, >parents, next_parent, next) {
> -
On 05.11.20 14:22, Max Reitz wrote:
On 31.10.20 13:35, Vladimir Sementsov-Ogievskiy wrote:
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.
[...]
And
On 31.10.20 13:35, Vladimir Sementsov-Ogievskiy wrote:
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.
Indeed. Another thing that should be noted:
First, permission update loop tries to do iterations transactionally,
but the whole update is not transactional: nobody roll-back successful
loop iterations when some iteration fails.
Second, in the iteration we have nested permission update:
c->klass->update_filename may point to