[libvirt] [PATCH] qemu: reduce file padding requirements

Daniel P. Berrange berrange at redhat.com
Thu Jun 10 11:20:47 UTC 2010


On Thu, Jun 10, 2010 at 05:03:10AM -0600, Eric Blake wrote:
> On 06/10/2010 04:16 AM, Daniel P. Berrange wrote:
> >>
> >> -    if (virAsprintf(&dest, "exec:%s | dd of=%s bs=%llu seek=%llu",
> >> -                    argstr, safe_target,
> >> -                    QEMU_MONITOR_MIGRATE_TO_FILE_BS,
> >> -                    offset / QEMU_MONITOR_MIGRATE_TO_FILE_BS) < 0) {
> >> +    /* Two dd processes, sharing the same stdout, are necessary to
> >> +     * allow starting at an alignment of 512, but without wasting
> >> +     * padding to get to the larger alignment useful for speed.  */
> >> +    if (virAsprintf(&dest, "exec:%s | { dd bs=%llu seek=%llu if=/dev/null && "
> >> +                    "dd bs=%llu; } >%s",
> > 
> > Does this work with block devices as the target ?  We previously
> > switched from cat>> to dd, because it didn't work correctly with block
> > devs.
> 
> Yes - the problem with >>dev was that it appended (which doesn't make
> sense for a block device); while >dev opens a seekable fd.  One
> difference between 'dd >file' and 'dd of=file' is which process opens
> the device; but to share the fd between two dd invocations, we have to
> open the file in the shell rather than with of=file.  The other
> difference is that >file truncates; for block devices, truncation is a
> no-op, but for regular files, this wipes out any pre-existing contents
> (such as the header we are skipping over) - is that an issue?  If so,
> then we should use <>file instead of >file, to open a read-write fd
> without forcing truncation (even if we only use the fd for writing).

Yes, we need to avoid truncation - the seek is there to skip over the
metadata header, so we can't truncate that


Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list