nbd.c (7e0019a7196ebed177c95824875cf852e1a6f667) | nbd.c (e24d813b29d3a478a9309078487efc8ce8599f22) |
---|---|
1/* 2 * QEMU Block driver for NBD 3 * 4 * Copyright (C) 2008 Bull S.A.S. 5 * Author: Laurent Vivier <Laurent.Vivier@bull.net> 6 * 7 * Some parts: 8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws> --- 552 unchanged lines hidden (view full) --- 561 if (s->tlscredsid) { 562 qdict_put_str(opts, "tls-creds", s->tlscredsid); 563 } 564 565 qdict_flatten(opts); 566 bs->full_open_options = opts; 567} 568 | 1/* 2 * QEMU Block driver for NBD 3 * 4 * Copyright (C) 2008 Bull S.A.S. 5 * Author: Laurent Vivier <Laurent.Vivier@bull.net> 6 * 7 * Some parts: 8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws> --- 552 unchanged lines hidden (view full) --- 561 if (s->tlscredsid) { 562 qdict_put_str(opts, "tls-creds", s->tlscredsid); 563 } 564 565 qdict_flatten(opts); 566 bs->full_open_options = opts; 567} 568 |
569static int nbd_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) 570{ 571 if (bs->supported_zero_flags & BDRV_REQ_MAY_UNMAP) { 572 bdi->can_write_zeroes_with_unmap = true; 573 } 574 return 0; 575} 576 | |
577static BlockDriver bdrv_nbd = { 578 .format_name = "nbd", 579 .protocol_name = "nbd", 580 .instance_size = sizeof(BDRVNBDState), 581 .bdrv_parse_filename = nbd_parse_filename, 582 .bdrv_file_open = nbd_open, 583 .bdrv_co_preadv = nbd_client_co_preadv, 584 .bdrv_co_pwritev = nbd_client_co_pwritev, 585 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 586 .bdrv_close = nbd_close, 587 .bdrv_co_flush_to_os = nbd_co_flush, 588 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 589 .bdrv_refresh_limits = nbd_refresh_limits, 590 .bdrv_getlength = nbd_getlength, 591 .bdrv_detach_aio_context = nbd_detach_aio_context, 592 .bdrv_attach_aio_context = nbd_attach_aio_context, 593 .bdrv_refresh_filename = nbd_refresh_filename, | 569static BlockDriver bdrv_nbd = { 570 .format_name = "nbd", 571 .protocol_name = "nbd", 572 .instance_size = sizeof(BDRVNBDState), 573 .bdrv_parse_filename = nbd_parse_filename, 574 .bdrv_file_open = nbd_open, 575 .bdrv_co_preadv = nbd_client_co_preadv, 576 .bdrv_co_pwritev = nbd_client_co_pwritev, 577 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 578 .bdrv_close = nbd_close, 579 .bdrv_co_flush_to_os = nbd_co_flush, 580 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 581 .bdrv_refresh_limits = nbd_refresh_limits, 582 .bdrv_getlength = nbd_getlength, 583 .bdrv_detach_aio_context = nbd_detach_aio_context, 584 .bdrv_attach_aio_context = nbd_attach_aio_context, 585 .bdrv_refresh_filename = nbd_refresh_filename, |
594 .bdrv_get_info = nbd_get_info, | |
595}; 596 597static BlockDriver bdrv_nbd_tcp = { 598 .format_name = "nbd", 599 .protocol_name = "nbd+tcp", 600 .instance_size = sizeof(BDRVNBDState), 601 .bdrv_parse_filename = nbd_parse_filename, 602 .bdrv_file_open = nbd_open, 603 .bdrv_co_preadv = nbd_client_co_preadv, 604 .bdrv_co_pwritev = nbd_client_co_pwritev, 605 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 606 .bdrv_close = nbd_close, 607 .bdrv_co_flush_to_os = nbd_co_flush, 608 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 609 .bdrv_refresh_limits = nbd_refresh_limits, 610 .bdrv_getlength = nbd_getlength, 611 .bdrv_detach_aio_context = nbd_detach_aio_context, 612 .bdrv_attach_aio_context = nbd_attach_aio_context, 613 .bdrv_refresh_filename = nbd_refresh_filename, | 586}; 587 588static BlockDriver bdrv_nbd_tcp = { 589 .format_name = "nbd", 590 .protocol_name = "nbd+tcp", 591 .instance_size = sizeof(BDRVNBDState), 592 .bdrv_parse_filename = nbd_parse_filename, 593 .bdrv_file_open = nbd_open, 594 .bdrv_co_preadv = nbd_client_co_preadv, 595 .bdrv_co_pwritev = nbd_client_co_pwritev, 596 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 597 .bdrv_close = nbd_close, 598 .bdrv_co_flush_to_os = nbd_co_flush, 599 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 600 .bdrv_refresh_limits = nbd_refresh_limits, 601 .bdrv_getlength = nbd_getlength, 602 .bdrv_detach_aio_context = nbd_detach_aio_context, 603 .bdrv_attach_aio_context = nbd_attach_aio_context, 604 .bdrv_refresh_filename = nbd_refresh_filename, |
614 .bdrv_get_info = nbd_get_info, | |
615}; 616 617static BlockDriver bdrv_nbd_unix = { 618 .format_name = "nbd", 619 .protocol_name = "nbd+unix", 620 .instance_size = sizeof(BDRVNBDState), 621 .bdrv_parse_filename = nbd_parse_filename, 622 .bdrv_file_open = nbd_open, 623 .bdrv_co_preadv = nbd_client_co_preadv, 624 .bdrv_co_pwritev = nbd_client_co_pwritev, 625 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 626 .bdrv_close = nbd_close, 627 .bdrv_co_flush_to_os = nbd_co_flush, 628 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 629 .bdrv_refresh_limits = nbd_refresh_limits, 630 .bdrv_getlength = nbd_getlength, 631 .bdrv_detach_aio_context = nbd_detach_aio_context, 632 .bdrv_attach_aio_context = nbd_attach_aio_context, 633 .bdrv_refresh_filename = nbd_refresh_filename, | 605}; 606 607static BlockDriver bdrv_nbd_unix = { 608 .format_name = "nbd", 609 .protocol_name = "nbd+unix", 610 .instance_size = sizeof(BDRVNBDState), 611 .bdrv_parse_filename = nbd_parse_filename, 612 .bdrv_file_open = nbd_open, 613 .bdrv_co_preadv = nbd_client_co_preadv, 614 .bdrv_co_pwritev = nbd_client_co_pwritev, 615 .bdrv_co_pwrite_zeroes = nbd_client_co_pwrite_zeroes, 616 .bdrv_close = nbd_close, 617 .bdrv_co_flush_to_os = nbd_co_flush, 618 .bdrv_co_pdiscard = nbd_client_co_pdiscard, 619 .bdrv_refresh_limits = nbd_refresh_limits, 620 .bdrv_getlength = nbd_getlength, 621 .bdrv_detach_aio_context = nbd_detach_aio_context, 622 .bdrv_attach_aio_context = nbd_attach_aio_context, 623 .bdrv_refresh_filename = nbd_refresh_filename, |
634 .bdrv_get_info = nbd_get_info, | |
635}; 636 637static void bdrv_nbd_init(void) 638{ 639 bdrv_register(&bdrv_nbd); 640 bdrv_register(&bdrv_nbd_tcp); 641 bdrv_register(&bdrv_nbd_unix); 642} 643 644block_init(bdrv_nbd_init); | 624}; 625 626static void bdrv_nbd_init(void) 627{ 628 bdrv_register(&bdrv_nbd); 629 bdrv_register(&bdrv_nbd_tcp); 630 bdrv_register(&bdrv_nbd_unix); 631} 632 633block_init(bdrv_nbd_init); |