On Thu, Nov 15, 2012 at 02:31:53PM +0100, Markus Armbruster wrote: > Attendees: > > Kevin Wolf <kw...@redhat.com> > Stefan Hajnoczi <stefa...@redhat.com> > Jeff Cody <jc...@redhat.com> > Markus Armbruster <arm...@redhat.com> > > and a few people dropping in and out. > > Minutes are basically a TODO list. Could be a bit terse in places; if > anything's unclear, please ask. > > > Block layer data structure cleanup: > > - Split block backend off BlockDriverState > > - Turn block backend into a proper ADT (besides other good things, this > makes it possible to replace its implementation by a test harness for > unit testing of its customers) > > - Get rid of BlockDriverState opaque (driver private state), inherit the > common part into driver state > > Convert open to QemuOpts (or perhaps QDict?) > > Avoid double open for probing (update: patches posted) > > Block jobs: > > - Rate limiting is broken in general (it works for the single > BlockDriverState case) > > - Block jobs should be jobs: generally available instead of tied to a > (single) BlockDriverState; get rid of the block job pointer in > BlockDriverState > > - Migration should probably be a job > > Block migration needs to die after its replacement is ready > > BlockDriverState member in_use and DriveInfo member refcount are a mess: > > - in_use is used to avoid running certain things concurrently, but the > rules are unclear, except they're clearly incomplete; possible rules > could be about need for consistent views of image contents
block: enable in_use flag Set block device in use during block migration, disallow drive_del and bdrv_truncate for in use devices. 1) drive_del is not allowed because memory object used by block streaming/migration can disappear. 2) bdrv_truncate changes device size, which the block migration code was unable to handle at the time. These are the rules (accordingly to the changeset). IIRC new rules have been added (new uses for bdrv_in_use). "Consistent views of image contents" is not defined. Question: why are the rules "clearly incomplete" ? > - refcount is only used together with in_use, and appears to be for > avoiding premature deletion Refcount is used to stop block auto deletion when device is unplugged by the guest. If you can reach BlockDriverState and use its in_use flag, then you can kill refcount.