qed.c (61124f03ab7e71d269417aafddbc2501d0379bc6) | qed.c (61c7887e0f3dcfa9c4ccdfe43374243a4a5c0e8d) |
---|---|
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> --- 349 unchanged lines hidden (view full) --- 358 * header is flushed. 359 */ 360 if (s->need_check_timer && timer_pending(s->need_check_timer)) { 361 qed_cancel_need_check_timer(s); 362 qed_need_check_timer_entry(s); 363 } 364} 365 | 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> --- 349 unchanged lines hidden (view full) --- 358 * header is flushed. 359 */ 360 if (s->need_check_timer && timer_pending(s->need_check_timer)) { 361 qed_cancel_need_check_timer(s); 362 qed_need_check_timer_entry(s); 363 } 364} 365 |
366static void bdrv_qed_init_state(BlockDriverState *bs) 367{ 368 BDRVQEDState *s = bs->opaque; 369 370 memset(s, 0, sizeof(BDRVQEDState)); 371 s->bs = bs; 372 qemu_co_queue_init(&s->allocating_write_reqs); 373} 374 |
|
366static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags, 367 Error **errp) 368{ 369 BDRVQEDState *s = bs->opaque; 370 QEDHeader le_header; 371 int64_t file_size; 372 int ret; 373 | 375static int bdrv_qed_do_open(BlockDriverState *bs, QDict *options, int flags, 376 Error **errp) 377{ 378 BDRVQEDState *s = bs->opaque; 379 QEDHeader le_header; 380 int64_t file_size; 381 int ret; 382 |
374 s->bs = bs; 375 qemu_co_queue_init(&s->allocating_write_reqs); 376 | |
377 ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header)); 378 if (ret < 0) { 379 return ret; 380 } 381 qed_header_le_to_cpu(&le_header, &s->header); 382 383 if (s->header.magic != QED_MAGIC) { 384 error_setg(errp, "Image not in QED format"); --- 117 unchanged lines hidden (view full) --- 502 Error **errp) 503{ 504 bs->file = bdrv_open_child(NULL, options, "file", bs, &child_file, 505 false, errp); 506 if (!bs->file) { 507 return -EINVAL; 508 } 509 | 383 ret = bdrv_pread(bs->file, 0, &le_header, sizeof(le_header)); 384 if (ret < 0) { 385 return ret; 386 } 387 qed_header_le_to_cpu(&le_header, &s->header); 388 389 if (s->header.magic != QED_MAGIC) { 390 error_setg(errp, "Image not in QED format"); --- 117 unchanged lines hidden (view full) --- 508 Error **errp) 509{ 510 bs->file = bdrv_open_child(NULL, options, "file", bs, &child_file, 511 false, errp); 512 if (!bs->file) { 513 return -EINVAL; 514 } 515 |
516 bdrv_qed_init_state(bs); |
|
510 return bdrv_qed_do_open(bs, options, flags, errp); 511} 512 513static void bdrv_qed_refresh_limits(BlockDriverState *bs, Error **errp) 514{ 515 BDRVQEDState *s = bs->opaque; 516 517 bs->bl.pwrite_zeroes_alignment = s->header.cluster_size; --- 939 unchanged lines hidden (view full) --- 1457 if (ret == 0) { 1458 memcpy(&s->header, &new_header, sizeof(new_header)); 1459 } 1460 return ret; 1461} 1462 1463static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp) 1464{ | 517 return bdrv_qed_do_open(bs, options, flags, errp); 518} 519 520static void bdrv_qed_refresh_limits(BlockDriverState *bs, Error **errp) 521{ 522 BDRVQEDState *s = bs->opaque; 523 524 bs->bl.pwrite_zeroes_alignment = s->header.cluster_size; --- 939 unchanged lines hidden (view full) --- 1464 if (ret == 0) { 1465 memcpy(&s->header, &new_header, sizeof(new_header)); 1466 } 1467 return ret; 1468} 1469 1470static void bdrv_qed_invalidate_cache(BlockDriverState *bs, Error **errp) 1471{ |
1465 BDRVQEDState *s = bs->opaque; | |
1466 Error *local_err = NULL; 1467 int ret; 1468 1469 bdrv_qed_close(bs); 1470 | 1472 Error *local_err = NULL; 1473 int ret; 1474 1475 bdrv_qed_close(bs); 1476 |
1471 memset(s, 0, sizeof(BDRVQEDState)); | 1477 bdrv_qed_init_state(bs); |
1472 ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err); 1473 if (local_err) { 1474 error_propagate(errp, local_err); 1475 error_prepend(errp, "Could not reopen qed layer: "); 1476 return; 1477 } else if (ret < 0) { 1478 error_setg_errno(errp, -ret, "Could not reopen qed layer"); 1479 return; --- 80 unchanged lines hidden --- | 1478 ret = bdrv_qed_do_open(bs, NULL, bs->open_flags, &local_err); 1479 if (local_err) { 1480 error_propagate(errp, local_err); 1481 error_prepend(errp, "Could not reopen qed layer: "); 1482 return; 1483 } else if (ret < 0) { 1484 error_setg_errno(errp, -ret, "Could not reopen qed layer"); 1485 return; --- 80 unchanged lines hidden --- |