On Tue, Mar 21, 2017 at 11:16:23AM +0800, Fam Zheng wrote: > @@ -1713,21 +1714,22 @@ void bdrv_format_default_perms(BlockDriverState *bs, > BdrvChild *c, > perm |= BLK_PERM_CONSISTENT_READ; > shared &= ~(BLK_PERM_WRITE | BLK_PERM_RESIZE); > } else { > - /* We want consistent read from backing files if the parent needs it. > + /* We want consistent read and aio context change from backing files > if > + * the parent needs it. > * No other operations are performed on backing files. */ > - perm &= BLK_PERM_CONSISTENT_READ; > + perm &= BLK_PERM_CONSISTENT_READ | BLK_PERM_AIO_CONTEXT_CHANGE; > > - /* If the parent can deal with changing data, we're okay with a > + /* If the parent can deal with changing aio context, we're okay too; > + * If the parent can deal with changing data, we're okay with a > * writable and resizable backing file. */ > /* TODO Require !(perm & BLK_PERM_CONSISTENT_READ), too? */ > + shared &= BLK_PERM_AIO_CONTEXT_CHANGE | BLK_PERM_WRITE; > if (shared & BLK_PERM_WRITE) { > - shared = BLK_PERM_WRITE | BLK_PERM_RESIZE; > - } else { > - shared = 0; > + shared |= BLK_PERM_WRITE | BLK_PERM_RESIZE;
We already have BLK_PERM_WRITE so we're just adding BLK_PERM_RESIZE. The following is clearer: shared |= BLK_PERM_RESIZE; > } > > shared |= BLK_PERM_CONSISTENT_READ | BLK_PERM_GRAPH_MOD | > - BLK_PERM_WRITE_UNCHANGED; > + BLK_PERM_WRITE_UNCHANGED | BLK_PERM_AIO_CONTEXT_CHANGE; Why was shared &= BLK_PERM_AIO_CONTEXT_CHANGE necessary above if we unconditionally OR it here?
signature.asc
Description: PGP signature