• When updating the refcount blocks in update_refcount(), write complete sectors
    instead of updating single entries.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • When updating the L2 tables in alloc_cluster_link_l2(), write complete
    sectors instead of updating single entries.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • When modifying the L1 table, l2_allocate() needs to write complete sectors
    instead of single entries. The L1 table is already in memory, reading it from
    disk in the block layer to align the request is wasted performance.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • The qcow2 source is now split into several more manageable files. During the
    conversion quite some functions that were static before needed to be changed to
    be global to make the source compile again.
    
    We were lucky enough not to get name conflicts with these additional global
    names, but they are not nice. This patch adds a qcow2_ prefix to all of the
    global functions in qcow2.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • qcow2-snapshot.c contains the code related to snapshotting.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • qcow2-cluster.c contains all functions related to the management of guest
    clusters, i.e. what the guest sees on its virtual disk. This code is about
    mapping these guest clusters to host clusters in the image file using the
    two-level lookup tables.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • qcow2-refcount.c contains all functions which are related to cluster
    allocation and management in the image file. A large part of this is the
    reference counting of these clusters.
    
    Also a header file qcow2.h is introduced which will contain the interface of
    the split qcow2 modules.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • Larger cluster sizes mean less metadata. This has been discussion a few times,
    let's do it now. This turns 64k clusters on by default for new images.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • When we open a file, we first attempt to open it read-write, then fall back
    to read-only.  Unfortunately we reuse the flags from the previous attempt,
    so both attempts try to open the file with write permissions, and fail.
    
    Fix by clearing the O_RDWR flag from the previous attempt.
    
    Signed-off-by: Avi Kivity <avi@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Avi Kivity authored
     
    Browse Code »
  • The flags argument to raw_common_open() contain bits defined by the BDRV_O_*
    namespace, not the posix O_* namespace.
    
    Adjust to use the correct constants.
    
    Signed-off-by: Avi Kivity <avi@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Avi Kivity authored
     
    Browse Code »

  • Rename raw_ioctl and raw_aio_ioctl to hdev_ioctl and hdev_aio_ioctl as they
    are only used for the host device.  Also only add them to the method table
    for the cases where we need them (generic hdev if linux and linux CDROM)
    instead of declaring stubs and always add them.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Christoph Hellwig authored
     
    Browse Code »
  • Add a bdrv_probe_device method to all BlockDriver instances implementing
    host devices to move matching of host device types into the actual drivers.
    For now we keep exacly the old matching behaviour based on the devices names,
    although we really should have better detetion methods based on device
    information in the future.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Christoph Hellwig authored
     
    Browse Code »
  • Instead of declaring one BlockDriver for all host devices declared one
    for each type:  a generic one for normal disk devices, a Linux floppy
    driver and a CDROM driver for Linux and FreeBSD.  This gets rid of a lot
    of messy ifdefs and switching based on the type in the various removal
    device methods.
    
    block.c grows a new method to find the correct host device driver based
    on OS-sepcific criteria, which will later into the actual drivers in a
    later patch in this series.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Christoph Hellwig authored
     
    Browse Code »
  • raw_open and hdev_open contain the same basic logic.  Add a new
    raw_open_common helper containing the guts of the open routine
    and call it from raw_open and hdev_open.
    
    We use the new open_flags field in BDRVRawState to allow passing
    additional open flags to raw_open_common from both.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Christoph Hellwig authored
     
    Browse Code »
  • Both the Linux floppy and the FreeBSD CDROM host device need to store
    the open flags so that they can re-open the device later.  Store the
    open flags unconditionally to remove the ifdef mess and simply the
    calling conventions for the later patches in the series.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Christoph Hellwig authored
     
    Browse Code »



  • Now that we have a separate aio pool structure we can remove those
    aio pool details from BlockDriver.
    
    Every driver supporting AIO now needs to declare a static AIOPool
    with the aiocb size and the cancellation method.  This cleans up the
    current code considerably and will make it cleaner and more obvious
    to support two different aio implementations behind a single
    BlockDriver.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Christoph Hellwig authored
     
    Browse Code »
  • [this one is required for [PATCH] fully split aio_pool from BlockDriver,
     sorry for not sending it out earlier]
    
    Add a qcow_aio_setup helper to qcow to shared common code between
    the aio_readv and aio_writev methods.  Based on the function with
    the same name in qcow2.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Christoph Hellwig authored
     
    Browse Dir »
  • We do need hdev_create unconditionally on all platforms so that qemu-img
    create support for host device works on all platforms.
    
    Also relax the check to allow character devices in addition to block
    devices.  On many Unix platforms block devices have buffered block
    nodes and unbuffered character device nodes, and on FreeBSD the block
    nodes don't even exist anymore.  Also on Linux we do support the
    /dev/sgN scsi passthrough devices through the host device driver,
    and probably the old-style /dev/raw/rawN raw devices although I haven't
    tested that.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Christoph Hellwig authored
     
    Browse File »
  • raw_pread_aligned currently returns the raw return value from
    lseek/read, which is always -1 in case of an error.  But the
    callers higher up the stack expect it to return the negated
    errno just like raw_pwrite_aligned.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Christoph Hellwig authored
     
    Browse File »
  • This patch converts the remaining users of bdrv_create2 to bdrv_create and
    removes the now unused function.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse File »
  • Don't write each single changed refcount block entry to the disk after it is
    written, but update all entries of the block and write all of them at once.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Dir »
  • This is a preparation patch with no functional changes. It moves the allocation
    of new refcounts block to a new function and makes update_cluster_refcount (for
    one cluster) call update_refcount (for multiple clusters) instead the other way
    round.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Dir »
  • There is only one (internal) user left and it can be switched to the normal
    emulation provided in block.c
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Dir »

  • Currently Qemu can read from posix I/O and NBD. This patch adds a
    third protocol to the game: HTTP.
    
    In certain situations it can be useful to access HTTP data directly,
    for example if you want to try out an http provided OS image, but
    don't know if you want to download it yet.
    
    Using this patch you can now try it on on the fly. Just use it like:
    
    qemu -cdrom http://host/path/my.iso
    
    Signed-off-by: Alexander Graf <agraf@suse.de>
    Alexander Graf authored
     
    Browse Code »
  • Add an option to specify the cluster size of a newly created qcow2 image.
    Default is 4k which is the same value that was hard-coded before.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »
  • Now we can make use of the newly introduced option structures. Instead of
    having bdrv_create carry more and more parameters (which are format specific in
    most cases), just pass a option structure as defined by the driver itself.
    
    bdrv_create2() contains an emulation of the old interface to simplify the
    transition.
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Kevin Wolf authored
     
    Browse Code »