qed.c (9fb4dfc570ce3b013830321b8b91ae2ea991d768) | qed.c (2b148f392b2bfeba76d3e6d9607c3bd072350e8c) |
---|---|
1/* 2 * QEMU Enhanced Disk Format 3 * 4 * Copyright IBM, Corp. 2010 5 * 6 * Authors: 7 * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> 8 * Anthony Liguori <aliguori@us.ibm.com> --- 1507 unchanged lines hidden (view full) --- 1516 ret = bdrv_pwrite_sync(bs->file, 0, buffer, buffer_len); 1517 g_free(buffer); 1518 if (ret == 0) { 1519 memcpy(&s->header, &new_header, sizeof(new_header)); 1520 } 1521 return ret; 1522} 1523 | 1/* 2 * QEMU Enhanced Disk Format 3 * 4 * Copyright IBM, Corp. 2010 5 * 6 * Authors: 7 * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> 8 * Anthony Liguori <aliguori@us.ibm.com> --- 1507 unchanged lines hidden (view full) --- 1516 ret = bdrv_pwrite_sync(bs->file, 0, buffer, buffer_len); 1517 g_free(buffer); 1518 if (ret == 0) { 1519 memcpy(&s->header, &new_header, sizeof(new_header)); 1520 } 1521 return ret; 1522} 1523 |
1524static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp) | 1524static void coroutine_fn bdrv_qed_co_invalidate_cache(BlockDriverState *bs, 1525 Error **errp) |
1525{ 1526 BDRVQEDState *s = bs->opaque; 1527 Error *local_err = NULL; 1528 int ret; 1529 1530 bdrv_qed_close(bs); 1531 1532 bdrv_qed_init_state(bs); | 1526{ 1527 BDRVQEDState *s = bs->opaque; 1528 Error *local_err = NULL; 1529 int ret; 1530 1531 bdrv_qed_close(bs); 1532 1533 bdrv_qed_init_state(bs); |
1533 if (qemu_in_coroutine()) { 1534 qemu_co_mutex_lock(&s->table_lock); 1535 } | 1534 qemu_co_mutex_lock(&s->table_lock); |
1536 ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err); | 1535 ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err); |
1537 if (qemu_in_coroutine()) { 1538 qemu_co_mutex_unlock(&s->table_lock); 1539 } | 1536 qemu_co_mutex_unlock(&s->table_lock); |
1540 if (local_err) { 1541 error_propagate(errp, local_err); 1542 error_prepend(errp, "Could not reopen qed layer: "); 1543 return; 1544 } else if (ret < 0) { 1545 error_setg_errno(errp, -ret, "Could not reopen qed layer"); 1546 return; 1547 } --- 58 unchanged lines hidden (view full) --- 1606 .bdrv_co_readv = bdrv_qed_co_readv, 1607 .bdrv_co_writev = bdrv_qed_co_writev, 1608 .bdrv_co_pwrite_zeroes = bdrv_qed_co_pwrite_zeroes, 1609 .bdrv_truncate = bdrv_qed_truncate, 1610 .bdrv_getlength = bdrv_qed_getlength, 1611 .bdrv_get_info = bdrv_qed_get_info, 1612 .bdrv_refresh_limits = bdrv_qed_refresh_limits, 1613 .bdrv_change_backing_file = bdrv_qed_change_backing_file, | 1537 if (local_err) { 1538 error_propagate(errp, local_err); 1539 error_prepend(errp, "Could not reopen qed layer: "); 1540 return; 1541 } else if (ret < 0) { 1542 error_setg_errno(errp, -ret, "Could not reopen qed layer"); 1543 return; 1544 } --- 58 unchanged lines hidden (view full) --- 1603 .bdrv_co_readv = bdrv_qed_co_readv, 1604 .bdrv_co_writev = bdrv_qed_co_writev, 1605 .bdrv_co_pwrite_zeroes = bdrv_qed_co_pwrite_zeroes, 1606 .bdrv_truncate = bdrv_qed_truncate, 1607 .bdrv_getlength = bdrv_qed_getlength, 1608 .bdrv_get_info = bdrv_qed_get_info, 1609 .bdrv_refresh_limits = bdrv_qed_refresh_limits, 1610 .bdrv_change_backing_file = bdrv_qed_change_backing_file, |
1614 .bdrv_invalidate_cache = bdrv_qed_invalidate_cache, | 1611 .bdrv_co_invalidate_cache = bdrv_qed_co_invalidate_cache, |
1615 .bdrv_check = bdrv_qed_check, 1616 .bdrv_detach_aio_context = bdrv_qed_detach_aio_context, 1617 .bdrv_attach_aio_context = bdrv_qed_attach_aio_context, 1618 .bdrv_co_drain_begin = bdrv_qed_co_drain_begin, 1619}; 1620 1621static void bdrv_qed_init(void) 1622{ 1623 bdrv_register(&bdrv_qed); 1624} 1625 1626block_init(bdrv_qed_init); | 1612 .bdrv_check = bdrv_qed_check, 1613 .bdrv_detach_aio_context = bdrv_qed_detach_aio_context, 1614 .bdrv_attach_aio_context = bdrv_qed_attach_aio_context, 1615 .bdrv_co_drain_begin = bdrv_qed_co_drain_begin, 1616}; 1617 1618static void bdrv_qed_init(void) 1619{ 1620 bdrv_register(&bdrv_qed); 1621} 1622 1623block_init(bdrv_qed_init); |