qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1505652] Re: An IO error happen when qemu snapshot-cre


From: Stefan Hajnoczi
Subject: [Qemu-devel] [Bug 1505652] Re: An IO error happen when qemu snapshot-create
Date: Mon, 26 Oct 2015 11:25:31 -0000

Please ask the libvirt community for help.  This issue is probably
related to your libvirt storage setup.

** Changed in: qemu
       Status: New => Invalid

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1505652

Title:
  An IO error happen when qemu  snapshot-create

Status in QEMU:
  Invalid

Bug description:
  My qemu version is 1.7.1,but when I try to make live snapshot by
  libvirt,the libvirt sometimes report an error
  :qemuMonitorJSONCheckError:377 : internal error: unable to execute
  QEMU command 'transaction': An IO error has occurred.

  Here is the command being snpshot create by virsh:
  virsh  snapshot-create snapshot-test.vm   snapshot.xml  --no-metadata  
--disk-only --reuse-external
  the snapshot.xml:
  <domainsnapshot>
    <description>test</description>
    <disks>
      <disk name='vda' snapshot="external">
        <source dev='/home/disk/sbd8' file='/home/disk/sdb8'  type="block"/>
      </disk>
    </disks>
  </domainsnapshot>

  
  I have read the qemu code about the snapshot create, and I find the qemu when 
call the function handle_aiocb_rw_linear():
  static ssize_t handle_aiocb_rw_linear(RawPosixAIOData *aiocb, char *buf)
  {
      ssize_t offset = 0;
      ssize_t len;

      while (offset < aiocb->aio_nbytes) {
          if (aiocb->aio_type & QEMU_AIO_WRITE) {
              len = pwrite(aiocb->aio_fildes,
                           (const char *)buf + offset,
                           aiocb->aio_nbytes - offset,
                           aiocb->aio_offset + offset);
          } else {
              len = pread(aiocb->aio_fildes,
                          buf + offset,
                          aiocb->aio_nbytes - offset,
                          aiocb->aio_offset + offset);
          }
          if (len == -1 && errno == EINTR) {
              continue;
          } else if (len == -1) {
              offset = -errno;
              break;
          } else if (len == 0) {
              break;
          }
          offset += len;
      }

      return offset;
  }

  The function pwrite happen error,the errono is 1,and the  error 
describe:"pwrite  failed, Operation not permitted (1, EPERM) because the 
process does not have the appropriate privileges to use the pwrite system call".
  The qemu call stack about is:
  
external_snapshot_prepare()->bdrv_flush()->...->paio_submit->...->handle_aiocb_rw_linear.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1505652/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]