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);