Diff for /qemu/block.c between versions 1.1.1.15 and 1.1.1.16

version 1.1.1.15, 2018/04/24 17:57:40 version 1.1.1.16, 2018/04/24 18:06:58
Line 1608  static void multiwrite_user_cb(Multiwrit Line 1608  static void multiwrite_user_cb(Multiwrit
   
     for (i = 0; i < mcb->num_callbacks; i++) {      for (i = 0; i < mcb->num_callbacks; i++) {
         mcb->callbacks[i].cb(mcb->callbacks[i].opaque, mcb->error);          mcb->callbacks[i].cb(mcb->callbacks[i].opaque, mcb->error);
           if (mcb->callbacks[i].free_qiov) {
               qemu_iovec_destroy(mcb->callbacks[i].free_qiov);
           }
         qemu_free(mcb->callbacks[i].free_qiov);          qemu_free(mcb->callbacks[i].free_qiov);
         qemu_vfree(mcb->callbacks[i].free_buf);          qemu_vfree(mcb->callbacks[i].free_buf);
     }      }
Line 1617  static void multiwrite_cb(void *opaque,  Line 1620  static void multiwrite_cb(void *opaque, 
 {  {
     MultiwriteCB *mcb = opaque;      MultiwriteCB *mcb = opaque;
   
     if (ret < 0) {      if (ret < 0 && !mcb->error) {
         mcb->error = ret;          mcb->error = ret;
         multiwrite_user_cb(mcb);          multiwrite_user_cb(mcb);
     }      }
Line 1669  static int multiwrite_merge(BlockDriverS Line 1672  static int multiwrite_merge(BlockDriverS
             merge = bs->drv->bdrv_merge_requests(bs, &reqs[outidx], &reqs[i]);              merge = bs->drv->bdrv_merge_requests(bs, &reqs[outidx], &reqs[i]);
         }          }
   
           if (reqs[outidx].qiov->niov + reqs[i].qiov->niov + 1 > IOV_MAX) {
               merge = 0;
           }
   
         if (merge) {          if (merge) {
             size_t size;              size_t size;
             QEMUIOVector *qiov = qemu_mallocz(sizeof(*qiov));              QEMUIOVector *qiov = qemu_mallocz(sizeof(*qiov));
Line 1754  int bdrv_aio_multiwrite(BlockDriverState Line 1761  int bdrv_aio_multiwrite(BlockDriverState
             // submitted yet. Otherwise we'll wait for the submitted AIOs to              // submitted yet. Otherwise we'll wait for the submitted AIOs to
             // complete and report the error in the callback.              // complete and report the error in the callback.
             if (mcb->num_requests == 0) {              if (mcb->num_requests == 0) {
                 reqs[i].error = EIO;                  reqs[i].error = -EIO;
                 goto fail;                  goto fail;
             } else {              } else {
                 mcb->error = EIO;                  mcb->num_requests++;
                   multiwrite_cb(mcb, -EIO);
                 break;                  break;
             }              }
         } else {          } else {

Removed from v.1.1.1.15  
changed lines
  Added in v.1.1.1.16


unix.superglobalmegacorp.com