1. 30 8月, 2013 16 次提交
    • L
      raw_bsd: register bdrv_raw · 775d6afd
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      > [...]
      >
      > 5) Formats are registered with bdrv_register (takes a BlockDriver*). You
      > also need to pass the caller of bdrv_register to block_init.
      
      Fill in the BlockDriver structure with the raw_*() functions that have
      been added to "block/raw_bsd.c", in the order the fields are defined in
      "include/block/block_int.h".
      
      I needed more explanation / naming examples for registering the driver
      than what Paolo gave me, so I copied / adapted from "block/qcow2.c". The
      parts I took as basis for modification are blamed on
      
          commit 5efa9d5a
          Author: Anthony Liguori <aliguori@us.ibm.com>
          Date:   Sat May 9 17:03:42 2009 -0500
      
              Convert block infrastructure to use new module init functionality
      
          commit 20d97356
          Author: Blue Swirl <blauwirbel@gmail.com>
          Date:   Fri Apr 23 20:19:47 2010 +0000
      
              Fix OpenBSD build
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      775d6afd
    • L
      raw_bsd: add raw_create_options · ff369a48
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      > [...]
      >
      > 4) There is another member, .create_options, which is an array of
      > QEMUOptionParameter structs, terminated by an all-zero item.  The only
      > option you need is for the virtual disk size.  You will find something
      > to copy from in other block drivers, for example block/qcow2.c.
      
      Code taken and adapted from "block/qcow2.c", as suggested. The code being
      copied/modified is blamed on
      
          commit 20d97356
          Author: Blue Swirl <blauwirbel@gmail.com>
          Date:   Fri Apr 23 20:19:47 2010 +0000
      
              Fix OpenBSD build
      
      and
      
          commit 7c80ab3f
          Author: Jes Sorensen <Jes.Sorensen@redhat.com>
          Date:   Fri Dec 17 16:02:39 2010 +0100
      
              block/qcow2.c: rename qcow_ functions to qcow2_
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      ff369a48
    • L
      raw_bsd: introduce "special members" · 01dd96d8
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      > [...]
      >
      > 3) These members are special
      >
      >     .format_name   is the string "raw"
      >     .bdrv_open     raw_open should set bs->sg to bs->file->sg and return 0
      >     .bdrv_close    raw_close should do nothing
      >     .bdrv_probe    raw_probe should just return 1.
      
      v1->v2:
      
      On 08/20/13 10:11, Kevin Wolf wrote:
      > Am 16.08.2013 um 16:15 hat Laszlo Ersek geschrieben:
      
      >> +static int raw_probe(void)
      >> +{
      >> +    return 1;
      >> +}
      >
      > Maybe add a comment here like "smallest possible positive score so that
      > raw is used if and only if no other block driver works".
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      01dd96d8
    • L
      raw_bsd: add raw_create() · 1565262c
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      > [...]
      >
      > 2) This is also a simple forwarder function:
      >
      >     .bdrv_create
      >
      > but there is no BlockDriverState argument so the forwarded-to function
      > does not have a bs->file argument either.  The forwarded-to function is
      > bdrv_create_file.
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      1565262c
    • L
      raw_bsd: emit debug events in bdrv_co_readv() and bdrv_co_writev() · 9eaafd90
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      > [...]
      >
      > 1) BlockDriver is a struct in which these function members are
      > interesting:
      >
      >     .bdrv_reopen_prepare
      >     .bdrv_co_readv
      >     .bdrv_co_writev
      >     .bdrv_co_is_allocated
      >     .bdrv_co_write_zeroes
      >     .bdrv_co_discard
      >     .bdrv_getlength
      >     .bdrv_get_info
      >     .bdrv_truncate
      >     .bdrv_is_inserted
      >     .bdrv_media_changed
      >     .bdrv_eject
      >     .bdrv_lock_medium
      >     .bdrv_ioctl
      >     .bdrv_aio_ioctl
      >     .bdrv_has_zero_init
      >
      > They should be implemented as simple forwarders (see above). There are
      > 16 functions listed here, you can easily see how this already accounts
      > for 100+ SLOC roughly...
      >
      > The implementations of bdrv_co_readv and bdrv_co_writev should also call
      > BLKDBG_EVENT on bs->file too, before forwarding to bs->file.  The events
      > to be generated are BLKDBG_READ_AIO and BLKDBG_WRITE_AIO.
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      9eaafd90
    • L
      add skeleton for BSD licensed "raw" BlockDriver · e1c66c6d
      Laszlo Ersek 提交于
      On 08/05/13 15:03, Paolo Bonzini wrote:
      >
      >
      > ----- Original Message -----
      >> From: "Laszlo Ersek" <lersek@redhat.com>
      >> To: "Paolo Bonzini" <pbonzini@redhat.com>
      >> Sent: Monday, August 5, 2013 2:43:46 PM
      >> Subject: Re: [PATCH 1/2] raw: add license header
      >>
      >> On 08/02/13 00:27, Paolo Bonzini wrote:
      >>> On 08/01/2013 10:13 AM, Christoph Hellwig wrote:
      >>>> On Wed, Jul 31, 2013 at 08:19:51AM +0200, Paolo Bonzini wrote:
      >>>>> Most of the block layer is under the BSD license, thus it is
      >>>>> reasonable to license block/raw.c the same way.  CCed people should
      >>>>> ACK by replying with a Signed-off-by line.
      >>>>
      >>>> The coded was intended to be GPLv2.
      
      > >>> Laszlo, would you be willing to do clean-room reverse engineering?
      
      >>> (No rants, please. :))
      >>
      >> What's the scope exactly?
      >
      > It's quite small, it's a file full of forwarders like
      >
      > static void raw_foo(BlockDriverState *bs)
      > {
      >     return bdrv_foo(bs->file);
      > }
      >
      > It's 170 lines of code, all as boring as this.  I only picked you
      > because I'm quite certain you have never seen the file (and the answer
      > confirmed it).
      >
      > Basically:
      >
      > 1) BlockDriver is a struct in which these function members are
      > interesting:
      >
      >     .bdrv_reopen_prepare
      >     .bdrv_co_readv
      >     .bdrv_co_writev
      >     .bdrv_co_is_allocated
      >     .bdrv_co_write_zeroes
      >     .bdrv_co_discard
      >     .bdrv_getlength
      >     .bdrv_get_info
      >     .bdrv_truncate
      >     .bdrv_is_inserted
      >     .bdrv_media_changed
      >     .bdrv_eject
      >     .bdrv_lock_medium
      >     .bdrv_ioctl
      >     .bdrv_aio_ioctl
      >     .bdrv_has_zero_init
      >
      > They should be implemented as simple forwarders (see above).
      > There are 16 functions listed here, you can easily see how this
      > already accounts for 100+ SLOC roughly...
      >
      > The implementations of bdrv_co_readv and bdrv_co_writev should also
      > call BLKDBG_EVENT on bs->file too, before forwarding to bs->file.  The
      > events to be generated are BLKDBG_READ_AIO and BLKDBG_WRITE_AIO.
      >
      > 2) This is also a simple forwarder function:
      >
      >     .bdrv_create
      >
      > but there is no BlockDriverState argument so the forwarded-to function
      > does not have a bs->file argument either.  The forwarded-to function
      > is bdrv_create_file.
      >
      > 3) These members are special
      >
      >     .format_name   is the string "raw"
      >     .bdrv_open     raw_open should set bs->sg to bs->file->sg and return 0
      >     .bdrv_close    raw_close should do nothing
      >     .bdrv_probe    raw_probe should just return 1.
      >
      > 4) There is another member, .create_options, which is an array of
      > QEMUOptionParameter structs, terminated by an all-zero item.  The only
      > option you need is for the virtual disk size.  You will find something
      > to copy from in other block drivers, for example block/qcow2.c.
      >
      > 5) Formats are registered with bdrv_register (takes a BlockDriver*).
      > You also need to pass the caller of bdrv_register to block_init.
      >
      > 6) I'm not sure how to organize the patch series, so I'll leave this to
      > your creativity.  I guess in this case move/copy detection of git should
      > be disabled.  I would definitely include this spec in the commit
      > message as a proof of clean-room reverse engineering.
      >
      > 7) Remember a BSD header like the one in block.c.
      >
      > Paolo
      
      This patch implements the email up to the paragraph ending with "100+ SLOC
      roughly". The skeleton is generated from the list there, with a simple
      shell loop using "sed" and the raw_foo() template.
      
      The BSD license block is copied (and reflowed) from
      "util/qemu-progress.c".
      Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      e1c66c6d
    • P
      block/qcow2.h: Avoid "1LL << 63" (shifts into sign bit) · 127c84e1
      Peter Maydell 提交于
      The expression "1LL << 63" tries to shift the 1 into the sign bit of a
      'long long', which provokes a clang sanitizer warning:
      
      runtime error: left shift of 1 by 63 places cannot be represented in type 'long long'
      
      Use "1ULL << 63" as the definition of QCOW_OFLAG_COPIED instead
      to avoid this. For consistency, we also update the other QCOW_OFLAG
      definitions to use the ULL suffix rather than LL, though only the
      shift by 63 is undefined behaviour.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      127c84e1
    • K
      qemu-iotests: Update reference output for 051 · cccc30b4
      Kevin Wolf 提交于
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      cccc30b4
    • K
      Revert "block: Disable driver-specific options for 1.6" · c0447d87
      Kevin Wolf 提交于
      This reverts commit 8afaefb8.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      c0447d87
    • K
      qapi-types.py: Split off generate_struct_fields() · 01537030
      Kevin Wolf 提交于
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      01537030
    • K
      block: Remove redundant assertion · 09da4a72
      Kevin Wolf 提交于
      The failing condition is checked immediately before the assertion, so
      keeping the assertion is kind of redundant.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      09da4a72
    • K
      qcow2: Change default for new images to compat=1.1 · 9117b477
      Kevin Wolf 提交于
      By the time that qemu 1.7 will be released, enough time will have passed
      since qemu 1.1, which is the first version to understand version 3
      images, that changing the default shouldn't hurt many people any more
      and the benefits of using the new format outweigh the pain.
      
      qemu-iotests already runs with compat=1.1 by default.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      9117b477
    • A
      Merge remote-tracking branch 'qemu-kvm/uq/master' into stable-1.5 · b5d54bd4
      Anthony Liguori 提交于
      * qemu-kvm/uq/master:
        kvm-stub: fix compilation
        kvm: shorten the parameter list for get_real_device()
        kvm: i386: fix LAPIC TSC deadline timer save/restore
        kvm-all.c: max_cpus should not exceed KVM vcpu limit
        kvm: Simplify kvm_handle_io
        kvm: x86: fix setting IA32_FEATURE_CONTROL with nested VMX disabled
        kvm: add KVM_IRQFD_FLAG_RESAMPLE support
        kvm: migrate vPMU state
        target-i386: remove tabs from target-i386/cpu.h
        Initialize IA32_FEATURE_CONTROL MSR in reset and migration
      
      Conflicts:
      	target-i386/cpu.h
      	target-i386/kvm.c
      
      aliguori: fixup trivial conflicts due to whitespace and added cpu
                argument
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      b5d54bd4
    • A
      Merge remote-tracking branch 'sweil/mingw' into stable-1.5 · e560992f
      Anthony Liguori 提交于
      # By Stefan Weil
      # Via Stefan Weil
      * sweil/mingw:
        gtk: Remove unused include statements which are not portable
        w32: Add an icon resource
        w32: Fix broken out-of-tree builds (missing version.o)
      
      Message-id: 1377607132-21336-1-git-send-email-sw@weilnetz.de
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      e560992f
    • A
      Merge remote-tracking branch 'mst/tags/for_anthony' into stable-1.5 · 3e998a77
      Anthony Liguori 提交于
      pc,pci,virtio fixes and cleanups
      
      This includes pc and pci cleanups, future-proofing of ROM files,
      and a virtio bugfix correcting splice on virtio console.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      
      # gpg: Signature made Mon 26 Aug 2013 01:34:20 AM CDT using RSA key ID D28D5469
      # gpg: Can't check signature: public key not found
      
      # By Markus Armbruster (5) and others
      # Via Michael S. Tsirkin
      * mst/tags/for_anthony:
        virtio: virtqueue_get_avail_bytes: fix desc_pa when loop over the indirect descriptor table
        pc_piix: Kill pc_init1() memory region args
        pc: pc_compat_1_4() now can call pc_compat_1_5()
        pc: Create pc_compat_*() functions
        pc: Kill pc_init_pci_1_0()
        pc: Don't explode QEMUMachineInitArgs into local variables needlessly
        pc: Don't prematurely explode QEMUMachineInitArgs
        ppc: Don't duplicate QEMUMachineInitArgs in PPCE500Params
        ppc: Don't explode QEMUMachineInitArgs into local variables needlessly
        sun4: Don't prematurely explode QEMUMachineInitArgs
        q35: Add PCIe switch to example q35 configuration
        loader: store FW CFG ROM files in RAM
        arch_init: align MR size to target page size
        pc: cleanup 1.4 compat support
      
      Message-id: 1377535318-30491-1-git-send-email-mst@redhat.com
      3e998a77
    • R
      tcg-i386: Remove abort from GETPC_LDST · 584950fd
      Richard Henderson 提交于
      Indeed, remove it entirely and remove the is_tcg_gen_code check
      from GETPC_EXT.
      
      Fixes https://bugs.launchpad.net/qemu/+bug/1218098 wherein a call
      to a "normal" helper function performed a sequence of tail calls
      all the way into the memory helper functions, leading to a stack
      frame in which the memory helper function appeared to be called
      directly from tcg.
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      584950fd
  2. 29 8月, 2013 1 次提交
  3. 28 8月, 2013 1 次提交
  4. 27 8月, 2013 10 次提交
  5. 26 8月, 2013 2 次提交
    • A
      Merge remote-tracking branch 'stefanha/block' into staging · f7ad538e
      Anthony Liguori 提交于
      # By Alex Bligh (32) and others
      # Via Stefan Hajnoczi
      * stefanha/block: (42 commits)
        win32-aio: drop win32_aio_flush_cb()
        aio-win32: replace incorrect AioHandler->opaque usage with ->e
        aio / timers: remove dummy_io_handler_flush from tests/test-aio.c
        aio / timers: Remove legacy interface
        aio / timers: Switch entire codebase to the new timer API
        aio / timers: Add scripts/switch-timer-api
        aio / timers: Add test harness for AioContext timers
        aio / timers: convert block_job_sleep_ns and co_sleep_ns to new API
        aio / timers: Convert rtc_clock to be a QEMUClockType
        aio / timers: Remove main_loop_timerlist
        aio / timers: Rearrange timer.h & make legacy functions call non-legacy
        aio / timers: Add qemu_clock_get_ms and qemu_clock_get_ms
        aio / timers: Remove legacy qemu_clock_deadline & qemu_timerlist_deadline
        aio / timers: Remove alarm timers
        aio / timers: Add documentation and new format calls
        aio / timers: Use all timerlists in icount warp calculations
        aio / timers: Introduce new API timer_new and friends
        aio / timers: On timer modification, qemu_notify or aio_notify
        aio / timers: Convert mainloop to use timeout
        aio / timers: Convert aio_poll to use AioContext timers' deadline
        ...
      
      Message-id: 1377202298-22896-1-git-send-email-stefanha@redhat.com
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      f7ad538e
    • A
      Merge remote-tracking branch 'afaerber/tags/0.15-maintainer-for-anthony' into staging · e3f024ae
      Anthony Liguori 提交于
      MAINTAINERS update for stable-0.15
      
      # gpg: Signature made Thu 22 Aug 2013 10:59:31 AM CDT using RSA key ID 3E7E013F
      # gpg: Can't check signature: public key not found
      
      # By Andreas Färber
      # Via Andreas Färber
      * afaerber/tags/0.15-maintainer-for-anthony:
        MAINTAINERS: Take over 0.15 maintenance
      e3f024ae
  6. 25 8月, 2013 1 次提交
  7. 24 8月, 2013 3 次提交
  8. 23 8月, 2013 6 次提交