+ requires_plugin sh + requires nbdkit sh --version + requires nbdinfo --version + requires_nbdsh_uri + requires nbdsh -c 'exit(not h.supports_uri())' + requires nbdsh -c 'print(h.set_full_info)' + requires jq --version + files='exportname.out exportname.sh' + rm -f exportname.out exportname.sh + cleanup_fn rm -f exportname.out exportname.sh + _cleanup_hook[${#_cleanup_hook[@]}]='rm -f exportname.out exportname.sh' + query='[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' + fail=0 + cat + chmod +x exportname.sh + nbdkit -U - sh exportname.sh --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit4t6YTT/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "x", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "description": "y", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "description": "z", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a","x",1],["b","y",2],["c","z",3]]' = '[["a","x",1],["b","y",2],["c","z",3]]' + nbdkit -U - --filter=exportname sh exportname.sh default-export= --run 'nbdinfo --no-content --json "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitJmhKcF/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="1" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "", "description": "1", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["","1",1]]' = '[["","1",1]]' + nbdkit -U - --filter=exportname sh exportname.sh default-export=b --run 'nbdinfo --no-content --json "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitONTfyH/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="2" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "b", "description": "2", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["b","2",2]]' = '[["b","2",2]]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=keep --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit7t3TYJ/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "x", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "description": "y", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "description": "z", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a","x",1],["b","y",2],["c","z",3]]' = '[["a","x",1],["b","y",2],["c","z",3]]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=error --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit81alNj/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 nbdkit: sh[1]: error: export list restricted by policy libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: error="nbd_opt_list: server replied with error to list request: Operation not supported" nbd_opt_list: server replied with error to list request: Operation not supported + : + test '!' -s exportname.out + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=empty --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitmbxQX5/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[]' = '[]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=defaultonly --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit1mQ90O/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=1 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="1" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "1", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + got='[["a","1",1]]' + test '[["a","1",1]]' = '[["a",null,1]]' + test '[["a","1",1]]' = '[["a","1",1]]' + nbdkit -U - --filter=exportname sh exportname.sh default-export=b exportname-list=defaultonly exportname=a exportname=b --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitsfI9oO/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=1 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="2" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "b", "description": "2", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + got='[["b","2",2]]' + test '[["b","2",2]]' = '[["b",null,2]]' + test '[["b","2",2]]' = '[["b","2",2]]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=explicit exportname=b exportname=a --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitf1S3L2/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=2 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="2" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="1" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "b", "description": "2", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "a", "description": "1", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + got='[["a","1",1],["b","2",2]]' + test '[["a","1",1],["b","2",2]]' = '[["a",null,1],["b",null,2]]' + test '[["a","1",1],["b","2",2]]' = '[["a","1",1],["b","2",2]]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-list=explicit --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitrQcHGf/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[]' = '[]' + nbdkit -U - --filter=exportname sh exportname.sh exportdesc=keep --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit9AnQpB/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "x", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "description": "y", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "description": "z", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a","x",1],["b","y",2],["c","z",3]]' = '[["a","x",1],["b","y",2],["c","z",3]]' + nbdkit -U - --filter=exportname sh exportname.sh exportdesc=none --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkit6Z6Z1B/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: error="nbd_get_export_description: server did not advertise a description: Operation not supported" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: error="nbd_get_export_description: server did not advertise a description: Operation not supported" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: error="nbd_get_export_description: server did not advertise a description: Operation not supported" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a",null,1],["b",null,2],["c",null,3]]' = '[["a",null,1],["b",null,2],["c",null,3]]' + nbdkit -U - --filter=exportname sh exportname.sh exportdesc=fixed:hi --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitdx2u5x/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "hi", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "description": "hi", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "description": "hi", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a","hi",1],["b","hi",2],["c","hi",3]]' = '[["a","hi",1],["b","hi",2],["c","hi",3]]' + nbdkit -U - --filter=exportname sh exportname.sh 'exportdesc=script:echo $name$name' --run 'nbdinfo --json --list "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitiLuMKc/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list: enter: list= libnbd: debug: nbd1: nbd_opt_list: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.START -> NEWSTYLE.OPT_LIST.START libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.START -> NEWSTYLE.OPT_LIST.SEND libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.SEND -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY -> NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_LIST.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list: transition: NEWSTYLE.OPT_LIST.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list: leave: ret=3 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="a" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 1 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=1 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="a" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="b" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 2 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=2 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="b" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_set_export_name: enter: export_name="c" libnbd: debug: nbd1: nbd_set_export_name: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "a", "description": "aa", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 1 }, { "export-name": "b", "description": "bb", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 2 }, { "export-name": "c", "description": "cc", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["a","aa",1],["b","bb",2],["c","cc",3]]' = '[["a","aa",1],["b","bb",2],["c","cc",3]]' + nbdkit -U - -e c --filter=exportname sh exportname.sh exportdesc=fixed:hi --run 'nbdinfo --no-content --json "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix:///c?socket=/tmp/nbdkit2Oyg4O/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="hi" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "c", "description": "hi", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["c","hi",3]]' = '[["c","hi",3]]' + nbdkit -U - -e c --filter=exportname sh exportname.sh 'exportdesc=script:echo $name$name' --run 'nbdinfo --no-content --json "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix:///c?socket=/tmp/nbdkitlWewaq/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: exportsize: 3 eflags: 0x83 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: ret=0 libnbd: debug: nbd1: nbd_get_size: enter: libnbd: debug: nbd1: nbd_get_size: leave: ret=3 libnbd: debug: nbd1: nbd_get_canonical_export_name: enter: libnbd: debug: nbd1: nbd_get_canonical_export_name: leave: ret="c" libnbd: debug: nbd1: nbd_get_export_description: enter: libnbd: debug: nbd1: nbd_get_export_description: leave: ret="cc" libnbd: debug: nbd1: nbd_is_rotational: enter: libnbd: debug: nbd1: nbd_is_rotational: leave: ret=0 libnbd: debug: nbd1: nbd_is_read_only: enter: libnbd: debug: nbd1: nbd_is_read_only: leave: ret=1 libnbd: debug: nbd1: nbd_can_cache: enter: libnbd: debug: nbd1: nbd_can_cache: leave: ret=0 libnbd: debug: nbd1: nbd_can_df: enter: libnbd: debug: nbd1: nbd_can_df: leave: ret=1 libnbd: debug: nbd1: nbd_can_fast_zero: enter: libnbd: debug: nbd1: nbd_can_fast_zero: leave: ret=0 libnbd: debug: nbd1: nbd_can_flush: enter: libnbd: debug: nbd1: nbd_can_flush: leave: ret=0 libnbd: debug: nbd1: nbd_can_fua: enter: libnbd: debug: nbd1: nbd_can_fua: leave: ret=0 libnbd: debug: nbd1: nbd_can_multi_conn: enter: libnbd: debug: nbd1: nbd_can_multi_conn: leave: ret=0 libnbd: debug: nbd1: nbd_can_trim: enter: libnbd: debug: nbd1: nbd_can_trim: leave: ret=0 libnbd: debug: nbd1: nbd_can_zero: enter: libnbd: debug: nbd1: nbd_can_zero: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=0 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=1 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_get_block_size: enter: size_type=2 libnbd: debug: nbd1: nbd_get_block_size: leave: ret=0 libnbd: debug: nbd1: nbd_opt_list_meta_context: enter: context= libnbd: debug: nbd1: nbd_opt_list_meta_context: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_META_CONTEXT.SEND libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_EXPORTNAME -> NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.SEND_NRQUERIES -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_NEXT_QUERY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: poll start: events=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: negotiated base:allocation with context ID 0 libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.PREPARE_FOR_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY -> NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_list_meta_context: transition: NEWSTYLE.OPT_META_CONTEXT.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_list_meta_context: leave: ret=1 libnbd: debug: nbd1: nbd_opt_abort: enter: libnbd: debug: nbd1: nbd_opt_abort: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.START -> NEWSTYLE.PREPARE_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.PREPARE_OPT_ABORT -> NEWSTYLE.SEND_OPT_ABORT libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPT_ABORT -> NEWSTYLE.SEND_OPTION_SHUTDOWN libnbd: debug: nbd1: nbd_opt_abort: transition: NEWSTYLE.SEND_OPTION_SHUTDOWN -> CLOSED libnbd: debug: nbd1: nbd_opt_abort: leave: ret=0 libnbd: debug: nbd1: nbd_shutdown: enter: flags=0x0 libnbd: debug: nbd1: nbd_shutdown: leave: error="nbd_shutdown: invalid state: CLOSED: the handle must be connected with the server: Invalid argument" libnbd: debug: nbd1: nbd_close: closing handle + cat exportname.out { "protocol": "newstyle-fixed", "TLS": false, "exports": [ { "export-name": "c", "description": "cc", "contexts": [ "base:allocation" ], "is_rotational": false, "is_read_only": true, "can_cache": false, "can_df": true, "can_fast_zero": false, "can_flush": false, "can_fua": false, "can_multi_conn": false, "can_trim": false, "can_zero": false, "export-size": 3 } ] } ++ jq -c '[ [.exports[]] | sort_by(."export-name")[] | [."export-name", .description, ."export-size"] ]' exportname.out + test '[["c","cc",3]]' = '[["c","cc",3]]' + nbdkit -U - --filter=exportname sh exportname.sh exportname-strict=true --run 'nbdinfo --no-content --json "$uri"' libnbd: debug: nbd1: nbd_create: opening handle libnbd: debug: nbd1: nbd_set_uri_allow_local_file: enter: allow=true libnbd: debug: nbd1: nbd_set_uri_allow_local_file: leave: ret=0 libnbd: debug: nbd1: nbd_set_opt_mode: enter: enable=true libnbd: debug: nbd1: nbd_set_opt_mode: leave: ret=0 libnbd: debug: nbd1: nbd_set_full_info: enter: request=true libnbd: debug: nbd1: nbd_set_full_info: leave: ret=0 libnbd: debug: nbd1: nbd_connect_uri: enter: uri="nbd+unix://?socket=/tmp/nbdkitGqxGre/socket" libnbd: debug: nbd1: nbd_connect_uri: event CmdConnectSockAddr: START -> CONNECT.START libnbd: debug: nbd1: nbd_connect_uri: poll start: events=4 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=4 libnbd: debug: nbd1: nbd_connect_uri: event NotifyWrite: CONNECT.START -> CONNECT.CONNECTING libnbd: debug: nbd1: nbd_connect_uri: transition: CONNECT.CONNECTING -> MAGIC.START libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.START -> MAGIC.RECV_MAGIC libnbd: debug: nbd1: nbd_connect_uri: poll start: events=1 libnbd: debug: nbd1: nbd_connect_uri: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.RECV_MAGIC -> MAGIC.CHECK_MAGIC libnbd: debug: nbd1: nbd_connect_uri: transition: MAGIC.CHECK_MAGIC -> NEWSTYLE.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.START -> NEWSTYLE.RECV_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.RECV_GFLAGS -> NEWSTYLE.CHECK_GFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.CHECK_GFLAGS -> NEWSTYLE.SEND_CFLAGS libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.SEND_CFLAGS -> NEWSTYLE.OPT_STARTTLS.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STARTTLS.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.START libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.START -> NEWSTYLE.OPT_STRUCTURED_REPLY.SEND libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.SEND -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY -> NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY libnbd: debug: nbd1: nbd_connect_uri: negotiated structured replies on this connection libnbd: debug: nbd1: nbd_connect_uri: transition: NEWSTYLE.OPT_STRUCTURED_REPLY.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_connect_uri: leave: ret=0 libnbd: debug: nbd1: nbd_get_protocol: enter: libnbd: debug: nbd1: nbd_get_protocol: leave: ret="newstyle-fixed" libnbd: debug: nbd1: nbd_get_tls_negotiated: enter: libnbd: debug: nbd1: nbd_get_tls_negotiated: leave: ret=0 libnbd: debug: nbd1: nbd_opt_info: enter: libnbd: debug: nbd1: nbd_opt_info: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY libnbd: debug: nbd1: nbd_opt_info: poll start: events=1 nbdkit: sh[1]: error: default export ("") not permitted libnbd: debug: nbd1: nbd_opt_info: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_info: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_info: leave: error="nbd_opt_info: server replied with error to opt_info request: No such file or directory" libnbd: debug: nbd1: nbd_opt_go: enter: libnbd: debug: nbd1: nbd_opt_go: event CmdIssue: NEGOTIATING -> NEWSTYLE.START libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.START -> NEWSTYLE.OPT_META_CONTEXT.START libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_META_CONTEXT.START -> NEWSTYLE.OPT_GO.START libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.START -> NEWSTYLE.OPT_GO.SEND libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.SEND -> NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.SEND_EXPORTNAMELEN -> NEWSTYLE.OPT_GO.SEND_EXPORT libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.SEND_EXPORT -> NEWSTYLE.OPT_GO.SEND_NRINFOS libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.SEND_NRINFOS -> NEWSTYLE.OPT_GO.SEND_INFO libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.SEND_INFO -> NEWSTYLE.OPT_GO.RECV_REPLY nbdkit: shlibnbd: debug: nbd1: nbd_opt_go: poll start: events=1 [1]: error: default export ("") not permitted libnbd: debug: nbd1: nbd_opt_go: poll end: r=1 revents=1 libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.RECV_REPLY -> NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.RECV_REPLY_PAYLOAD -> NEWSTYLE.OPT_GO.CHECK_REPLY libnbd: debug: nbd1: nbd_opt_go: transition: NEWSTYLE.OPT_GO.CHECK_REPLY -> NEGOTIATING libnbd: debug: nbd1: nbd_opt_go: leave: error="nbd_opt_go: server replied with error to opt_go request: No such file or directory" nbd_opt_go: server replied with error to opt_go request: No such file or directory + test '!' -s exportname.out ++ _run_cleanup_hooks ++ local _status=1 _i ++ set +e ++ trap '' INT QUIT TERM EXIT ERR ++ echo ./test-exportname.sh: run cleanup hooks: exit code 1 ./test-exportname.sh: run cleanup hooks: exit code 1 ++ (( _i = 0 )) ++ (( _i < 1 )) ++ rm -f exportname.out exportname.sh ++ (( ++_i )) ++ (( _i < 1 )) ++ exit 1 FAIL test-exportname.sh (exit status: 1)