On Wed, Jun 19, 2013 at 02:18:48PM +0800, Wenchao Xia wrote: > 于 2013-6-18 22:20, Stefan Hajnoczi 写道: > >On Mon, Jun 17, 2013 at 11:25:26AM +0800, Wenchao Xia wrote: > >>于 2013-6-15 17:55, Eric Blake 写道: > >>>Should this command be made available via 'transaction'? That is, if I > >>>have a two-disk VM, and use 'transaction' to take a snapshot of both > >>>disks at once, shouldn't I also have a way to delete the snapshots of > >>>both at once, or gracefully fail without data loss if the second one has > >>>problems? > >> > >> I think adding it in transaction is not very useful but brings more > >>complexity. Transcation is used to guareentee all operations are taken > >>in one time point, for example, snapshot creation use it to make sure > >>all are consistent to VM. But for deletion, this requirement do not > >>exist. > > > >I guess the problem is: can we make internal snapshot deletion > >transactional? It's hard to do rollback for snapshot deletion. > > > Several deletion in transaction equals to several calls of > 'blockdev-snapshot-delete-internal-sync', unlike creation, so I hope > not add it which have rollback issue. > > > >But batching is definitely useful for doing 'delvm' in QMP. I just > >don't think transactions help. We just need a 'delvm' equivalent in > >QMP. > > > Maybe the caller can encapsulate a batch interface at its level.
'delvm' is a batch interface - it deletes internal snapshots that have the same name across multiple devices. It's not as flexible as: blkdev-internal-snapshot-delete drive0 drive2 drive4 Because that would allow you to specify specific drives. Stefan