Lines Matching refs:session

52 static int ndmpd_data_error_send_v4(ndmpd_session_t *session,
54 static int ndmpd_data_error_send(ndmpd_session_t *session,
57 static int create_listen_socket_v3(ndmpd_session_t *session, ulong_t *addr,
59 static ndmp_error data_connect_sock_v3(ndmpd_session_t *session, ulong_t addr,
61 static int discard_data_v3(ndmpd_session_t *session, ulong_t length);
62 static void nlp_release_job_stat(ndmpd_session_t *session);
63 static u_longlong_t ndmpd_data_get_info(ndmpd_session_t *session);
101 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v2() local
104 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v2()
105 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v2()
106 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v2()
109 session->ns_data.dd_module.dm_stats.ms_est_time_remaining; in ndmpd_data_get_state_v2()
112 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining); in ndmpd_data_get_state_v2()
115 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v2()
117 reply.mover = session->ns_data.dd_mover; in ndmpd_data_get_state_v2()
118 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v2()
119 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v2()
143 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_backup_v2() local
149 session->ns_data.dd_mover = request->mover; in ndmpd_data_start_backup_v2()
151 err = ndmpd_tar_start_backup_v2(session, request->bu_type, in ndmpd_data_start_backup_v2()
163 ndmpd_data_cleanup(session); in ndmpd_data_start_backup_v2()
184 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_recover_v2() local
188 session->ns_data.dd_mover = request->mover; in ndmpd_data_start_recover_v2()
190 err = ndmpd_tar_start_recover_v2(session, request->bu_type, in ndmpd_data_start_recover_v2()
202 ndmpd_data_cleanup(session); in ndmpd_data_start_recover_v2()
225 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_env_v2() local
228 if (session->ns_data.dd_operation != NDMP_DATA_OP_BACKUP) { in ndmpd_data_get_env_v2()
234 reply.env.env_len = session->ns_data.dd_env_len; in ndmpd_data_get_env_v2()
235 reply.env.env_val = session->ns_data.dd_env; in ndmpd_data_get_env_v2()
259 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_stop_v2() local
261 if (session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_stop_v2()
268 ndmp_waitfor_op(session); in ndmpd_data_stop_v2()
269 ndmpd_data_cleanup(session); in ndmpd_data_stop_v2()
270 ndmpd_file_history_cleanup(session, FALSE); in ndmpd_data_stop_v2()
272 nlp_release_job_stat(session); in ndmpd_data_stop_v2()
275 (void) ndmpd_data_init(session); in ndmpd_data_stop_v2()
276 ndmpd_file_history_init(session); in ndmpd_data_stop_v2()
302 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_abort_v2() local
304 if (session->ns_data.dd_state == NDMP_DATA_STATE_IDLE || in ndmpd_data_abort_v2()
305 session->ns_data.dd_state == NDMP_DATA_STATE_HALTED) { in ndmpd_data_abort_v2()
317 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v2()
318 (*session->ns_data.dd_module.dm_abort_func)( in ndmpd_data_abort_v2()
319 session->ns_data.dd_module.dm_module_cookie); in ndmpd_data_abort_v2()
348 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v3() local
355 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v3()
356 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v3()
357 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v3()
362 session->ns_data.dd_module.dm_stats.ms_bytes_processed); in ndmpd_data_get_state_v3()
365 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v3()
369 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) in ndmpd_data_get_state_v3()
371 &session->ns_data.dd_data_addr); in ndmpd_data_get_state_v3()
372 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v3()
373 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v3()
397 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_backup_v3() local
403 if (session->ns_data.dd_state != NDMP_DATA_STATE_CONNECTED) { in ndmpd_data_start_backup_v3()
412 if (session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_LOCAL) { in ndmpd_data_start_backup_v3()
413 if (session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { in ndmpd_data_start_backup_v3()
421 session->ns_butype = NDMP_BUTYPE_TAR; in ndmpd_data_start_backup_v3()
423 session->ns_butype = NDMP_BUTYPE_DUMP; in ndmpd_data_start_backup_v3()
425 session->ns_butype = NDMP_BUTYPE_ZFS; in ndmpd_data_start_backup_v3()
435 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_backup_v3()
437 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_backup_v3()
446 if (session->ns_butype == NDMP_BUTYPE_ZFS) { in ndmpd_data_start_backup_v3()
447 reply.error = ndmpd_zfs_start_op(session, request->env.env_val, in ndmpd_data_start_backup_v3()
450 reply.error = ndmpd_tar_start_backup_v3(session, in ndmpd_data_start_backup_v3()
466 ndmpd_data_cleanup(session); in ndmpd_data_start_backup_v3()
487 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_recover_v3() local
493 if (session->ns_data.dd_state != NDMP_DATA_STATE_CONNECTED) { in ndmpd_data_start_recover_v3()
500 session->ns_butype = NDMP_BUTYPE_TAR; in ndmpd_data_start_recover_v3()
502 session->ns_butype = NDMP_BUTYPE_DUMP; in ndmpd_data_start_recover_v3()
504 session->ns_butype = NDMP_BUTYPE_ZFS; in ndmpd_data_start_recover_v3()
514 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_recover_v3()
516 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_recover_v3()
525 if (session->ns_butype == NDMP_BUTYPE_ZFS) { in ndmpd_data_start_recover_v3()
526 reply.error = ndmpd_zfs_start_op(session, request->env.env_val, in ndmpd_data_start_recover_v3()
530 reply.error = ndmpd_tar_start_recover_v3(session, in ndmpd_data_start_recover_v3()
546 ndmpd_data_error(session, NDMP_DATA_HALT_INTERNAL_ERROR); in ndmpd_data_start_recover_v3()
547 ndmpd_data_cleanup(session); in ndmpd_data_start_recover_v3()
570 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_abort_v3() local
572 switch (session->ns_data.dd_state) { in ndmpd_data_abort_v3()
585 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v3()
586 if (session->ns_data.dd_module.dm_abort_func) in ndmpd_data_abort_v3()
587 (*session->ns_data.dd_module.dm_abort_func)( in ndmpd_data_abort_v3()
588 session->ns_data.dd_module.dm_module_cookie); in ndmpd_data_abort_v3()
595 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v3()
596 ndmpd_data_error(session, NDMP_DATA_HALT_ABORTED); in ndmpd_data_abort_v3()
601 session->ns_data.dd_state); in ndmpd_data_abort_v3()
626 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_stop_v3() local
628 if (session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_stop_v3()
635 ndmp_waitfor_op(session); in ndmpd_data_stop_v3()
636 ndmpd_data_cleanup(session); in ndmpd_data_stop_v3()
637 ndmpd_file_history_cleanup(session, FALSE); in ndmpd_data_stop_v3()
640 (void) ndmpd_data_init(session); in ndmpd_data_stop_v3()
641 ndmpd_file_history_init(session); in ndmpd_data_stop_v3()
667 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_listen_v3() local
675 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_listen_v3()
679 } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { in ndmpd_data_listen_v3()
696 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_listen_v3()
699 if (create_listen_socket_v3(session, &addr, &port) < 0) { in ndmpd_data_listen_v3()
708 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v3()
709 session->ns_data.dd_data_addr.tcp_ip_v3 = addr; in ndmpd_data_listen_v3()
710 session->ns_data.dd_data_addr.tcp_port_v3 = ntohs(port); in ndmpd_data_listen_v3()
712 session->ns_data.dd_listen_sock); in ndmpd_data_listen_v3()
723 session->ns_data.dd_state = NDMP_DATA_STATE_LISTEN; in ndmpd_data_listen_v3()
748 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_connect_v3() local
758 } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_connect_v3()
777 if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN || in ndmpd_data_connect_v3()
778 session->ns_mover.md_listen_sock != -1) { in ndmpd_data_connect_v3()
783 session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; in ndmpd_data_connect_v3()
788 reply.error = data_connect_sock_v3(session, in ndmpd_data_connect_v3()
799 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in ndmpd_data_connect_v3()
831 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_env_v4() local
835 if (session->ns_data.dd_state != NDMP_DATA_STATE_ACTIVE && in ndmpd_data_get_env_v4()
836 session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_get_env_v4()
840 } else if (session->ns_data.dd_operation != NDMP_DATA_OP_BACKUP) { in ndmpd_data_get_env_v4()
846 reply.env.env_len = session->ns_data.dd_env_len; in ndmpd_data_get_env_v4()
847 reply.env.env_val = session->ns_data.dd_env; in ndmpd_data_get_env_v4()
870 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v4() local
877 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v4()
878 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v4()
879 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v4()
883 session->ns_data.dd_module.dm_stats.ms_bytes_processed); in ndmpd_data_get_state_v4()
886 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v4()
890 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) in ndmpd_data_get_state_v4()
892 &session->ns_data.dd_data_addr_v4); in ndmpd_data_get_state_v4()
894 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v4()
895 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v4()
921 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_connect_v4() local
931 } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_connect_v4()
950 if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN || in ndmpd_data_connect_v4()
951 session->ns_mover.md_listen_sock != -1) { in ndmpd_data_connect_v4()
956 session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; in ndmpd_data_connect_v4()
961 reply.error = data_connect_sock_v3(session, in ndmpd_data_connect_v4()
972 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in ndmpd_data_connect_v4()
996 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_listen_v4() local
1004 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_listen_v4()
1008 } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { in ndmpd_data_listen_v4()
1025 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_listen_v4()
1028 if (create_listen_socket_v3(session, &addr, &port) < 0) { in ndmpd_data_listen_v4()
1042 session->ns_data.dd_data_addr_v4.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v4()
1043 session->ns_data.dd_data_addr_v4.tcp_addr_v4 = in ndmpd_data_listen_v4()
1046 session->ns_data.dd_data_addr_v4.tcp_ip_v4(0) = addr; in ndmpd_data_listen_v4()
1047 session->ns_data.dd_data_addr_v4.tcp_port_v4(0) = ntohs(port); in ndmpd_data_listen_v4()
1048 session->ns_data.dd_data_addr_v4.tcp_len_v4 = 1; in ndmpd_data_listen_v4()
1051 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v4()
1052 session->ns_data.dd_data_addr.tcp_ip_v3 = addr; in ndmpd_data_listen_v4()
1053 session->ns_data.dd_data_addr.tcp_port_v3 = ntohs(port); in ndmpd_data_listen_v4()
1055 session->ns_data.dd_listen_sock); in ndmpd_data_listen_v4()
1066 session->ns_data.dd_state = NDMP_DATA_STATE_LISTEN; in ndmpd_data_listen_v4()
1119 ndmpd_data_error_send(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error_send() argument
1123 req.reason = session->ns_data.dd_halt_reason; in ndmpd_data_error_send()
1126 return (ndmp_send_request(session->ns_connection, in ndmpd_data_error_send()
1145 ndmpd_data_error_send_v4(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error_send_v4() argument
1149 req.reason = session->ns_data.dd_halt_reason; in ndmpd_data_error_send_v4()
1151 return ndmp_send_request(session->ns_connection, in ndmpd_data_error_send_v4()
1171 ndmpd_data_error(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error() argument
1173 if (session->ns_data.dd_state == NDMP_DATA_STATE_IDLE || in ndmpd_data_error()
1174 session->ns_data.dd_state == NDMP_DATA_STATE_HALTED) in ndmpd_data_error()
1177 if (session->ns_data.dd_operation == NDMP_DATA_OP_BACKUP) { in ndmpd_data_error()
1181 ndmpd_file_history_cleanup(session, in ndmpd_data_error()
1188 if (session->ns_data.dd_data_addr.addr_type in ndmpd_data_error()
1190 (void) ndmpd_local_write_v3(session, 0, 0); in ndmpd_data_error()
1193 session->ns_data.dd_state = NDMP_DATA_STATE_HALTED; in ndmpd_data_error()
1194 session->ns_data.dd_halt_reason = reason; in ndmpd_data_error()
1196 if (session->ns_protocol_version == NDMPV4) { in ndmpd_data_error()
1197 if (ndmpd_data_error_send_v4(session, reason) < 0) in ndmpd_data_error()
1201 if (ndmpd_data_error_send(session, reason) < 0) in ndmpd_data_error()
1206 if (session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_TCP) { in ndmpd_data_error()
1207 if (session->ns_data.dd_sock != -1) { in ndmpd_data_error()
1208 (void) ndmpd_remove_file_handler(session, in ndmpd_data_error()
1209 session->ns_data.dd_sock); in ndmpd_data_error()
1214 if (session->ns_data.dd_sock != in ndmpd_data_error()
1215 session->ns_mover.md_sock) in ndmpd_data_error()
1216 (void) close(session->ns_data.dd_sock); in ndmpd_data_error()
1218 session->ns_data.dd_sock = -1; in ndmpd_data_error()
1220 if (session->ns_data.dd_listen_sock != -1) { in ndmpd_data_error()
1221 (void) ndmpd_remove_file_handler(session, in ndmpd_data_error()
1222 session->ns_data.dd_listen_sock); in ndmpd_data_error()
1224 (void) close(session->ns_data.dd_listen_sock); in ndmpd_data_error()
1225 session->ns_data.dd_listen_sock = -1; in ndmpd_data_error()
1228 ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); in ndmpd_data_error()
1252 ndmpd_session_t *session = (ndmpd_session_t *)cookie; in data_accept_connection_v3() local
1257 session->ns_data.dd_sock = accept(fd, (struct sockaddr *)&from, in data_accept_connection_v3()
1261 session->ns_data.dd_sock); in data_accept_connection_v3()
1266 (void) ndmpd_remove_file_handler(session, fd); in data_accept_connection_v3()
1267 (void) close(session->ns_data.dd_listen_sock); in data_accept_connection_v3()
1268 session->ns_data.dd_listen_sock = -1; in data_accept_connection_v3()
1270 if (session->ns_data.dd_sock < 0) { in data_accept_connection_v3()
1272 ndmpd_data_error(session, NDMP_DATA_HALT_CONNECT_ERROR); in data_accept_connection_v3()
1279 session->ns_data.dd_data_addr.tcp_ip_v3 = from.sin_addr.s_addr; in data_accept_connection_v3()
1280 session->ns_data.dd_data_addr.tcp_port_v3 = ntohs(from.sin_port); in data_accept_connection_v3()
1283 set_socket_options(session->ns_data.dd_sock); in data_accept_connection_v3()
1285 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in data_accept_connection_v3()
1296 create_listen_socket_v3(ndmpd_session_t *session, ulong_t *addr, ushort_t *port) in create_listen_socket_v3() argument
1298 session->ns_data.dd_listen_sock = ndmp_create_socket(addr, port); in create_listen_socket_v3()
1299 if (session->ns_data.dd_listen_sock < 0) in create_listen_socket_v3()
1307 if (ndmpd_add_file_handler(session, (void*)session, in create_listen_socket_v3()
1308 session->ns_data.dd_listen_sock, NDMPD_SELECT_MODE_READ, HC_MOVER, in create_listen_socket_v3()
1310 (void) close(session->ns_data.dd_listen_sock); in create_listen_socket_v3()
1311 session->ns_data.dd_listen_sock = -1; in create_listen_socket_v3()
1336 data_connect_sock_v3(ndmpd_session_t *session, ulong_t addr, ushort_t port) in data_connect_sock_v3() argument
1344 session->ns_data.dd_sock = sock; in data_connect_sock_v3()
1345 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in data_connect_sock_v3()
1346 session->ns_data.dd_data_addr.tcp_ip_v3 = ntohl(addr); in data_connect_sock_v3()
1347 session->ns_data.dd_data_addr.tcp_port_v3 = port; in data_connect_sock_v3()
1369 ndmpd_tar_start_backup_v3(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_backup_v3() argument
1379 err = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_backup_v3()
1383 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_backup_v3()
1389 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_backup_v3()
1390 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_backup_v3()
1391 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_backup_v3()
1399 if (session->ns_protocol_version == NDMPV4) in ndmpd_tar_start_backup_v3()
1409 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_backup_v3()
1410 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_backup_v3()
1430 session->ns_data.dd_module.dm_start_func = ndmpd_tar_backup_starter_v3; in ndmpd_tar_start_backup_v3()
1431 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_backup_abort_v3; in ndmpd_tar_start_backup_v3()
1433 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_backup_v3()
1434 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_backup_v3()
1435 session->ns_data.dd_nlist_v3 = 0; in ndmpd_tar_start_backup_v3()
1436 session->ns_data.dd_nlist_len = 0; in ndmpd_tar_start_backup_v3()
1437 session->ns_data.dd_bytes_left_to_read = 0; in ndmpd_tar_start_backup_v3()
1438 session->ns_data.dd_position = 0; in ndmpd_tar_start_backup_v3()
1439 session->ns_data.dd_discard_length = 0; in ndmpd_tar_start_backup_v3()
1440 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_backup_v3()
1441 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_backup_v3()
1443 reply.error = ndmp_backup_get_params_v3(session, params); in ndmpd_tar_start_backup_v3()
1451 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_backup_v3()
1458 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_backup_v3()
1459 session->ns_data.dd_operation = NDMP_DATA_OP_BACKUP; in ndmpd_tar_start_backup_v3()
1460 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_backup_v3()
1469 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_backup_v3()
1497 ndmpd_tar_start_recover_v3(ndmpd_session_t *session, in ndmpd_tar_start_recover_v3() argument
1508 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_recover_v3()
1515 reply.error = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_recover_v3()
1521 reply.error = ndmpd_save_nlist_v3(session, nlist_val, nlist_len); in ndmpd_tar_start_recover_v3()
1530 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_recover_v3()
1531 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_recover_v3()
1532 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_recover_v3()
1540 if (session->ns_protocol_version == NDMPV4) { in ndmpd_tar_start_recover_v3()
1556 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_recover_v3()
1558 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_recover_v3()
1559 session->ns_data.dd_module.dm_start_func = ndmpd_tar_restore_starter_v3; in ndmpd_tar_start_recover_v3()
1560 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_restore_abort_v3; in ndmpd_tar_start_recover_v3()
1561 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_recover_v3()
1562 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_recover_v3()
1563 session->ns_data.dd_bytes_left_to_read = 0; in ndmpd_tar_start_recover_v3()
1564 session->ns_data.dd_position = 0; in ndmpd_tar_start_recover_v3()
1565 session->ns_data.dd_discard_length = 0; in ndmpd_tar_start_recover_v3()
1566 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_recover_v3()
1567 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_recover_v3()
1569 err = ndmp_restore_get_params_v3(session, params); in ndmpd_tar_start_recover_v3()
1576 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_recover_v3()
1579 ndmpd_free_nlist_v3(session); in ndmpd_tar_start_recover_v3()
1582 ndmpd_data_error(session, NDMP_DATA_HALT_CONNECT_ERROR); in ndmpd_tar_start_recover_v3()
1587 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_recover_v3()
1588 session->ns_data.dd_operation = NDMP_DATA_OP_RECOVER; in ndmpd_tar_start_recover_v3()
1589 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_recover_v3()
1598 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_recover_v3()
1609 ndmpd_zfs_start_op(ndmpd_session_t *session, ndmp_pval *env_val, in ndmpd_zfs_start_op() argument
1613 ndmpd_zfs_args_t *ndmpd_zfs_args = &session->ns_ndmpd_zfs_args; in ndmpd_zfs_start_op()
1621 if (ndmpd_zfs_init(session) != 0) in ndmpd_zfs_start_op()
1624 err = ndmpd_save_env(session, env_val, env_len); in ndmpd_zfs_start_op()
1642 session->ns_data.dd_module.dm_start_func = in ndmpd_zfs_start_op()
1647 err = ndmpd_save_nlist_v3(session, nlist_val, nlist_len); in ndmpd_zfs_start_op()
1663 session->ns_data.dd_module.dm_start_func = in ndmpd_zfs_start_op()
1670 session->ns_data.dd_operation = op; in ndmpd_zfs_start_op()
1671 session->ns_data.dd_module.dm_abort_func = ndmpd_zfs_abort; in ndmpd_zfs_start_op()
1672 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_zfs_start_op()
1673 session->ns_data.dd_abort = FALSE; in ndmpd_zfs_start_op()
1685 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_zfs_start_op()
1689 ndmpd_data_error(session, NDMP_DATA_HALT_CONNECT_ERROR); in ndmpd_zfs_start_op()
1695 (funct_t)session->ns_data.dd_module.dm_start_func, ndmpd_zfs_args); in ndmpd_zfs_start_op()
1733 discard_data_v3(ndmpd_session_t *session, ulong_t length) in discard_data_v3() argument
1742 n = read(session->ns_data.dd_sock, buf, toread); in discard_data_v3()
1767 ndmpd_remote_read_v3(ndmpd_session_t *session, char *data, ulong_t length) in ndmpd_remote_read_v3() argument
1777 session->ns_data.dd_bytes_left_to_read, in ndmpd_remote_read_v3()
1778 session->ns_data.dd_read_offset, in ndmpd_remote_read_v3()
1779 session->ns_data.dd_read_length, in ndmpd_remote_read_v3()
1780 session->ns_data.dd_position, in ndmpd_remote_read_v3()
1781 session->ns_data.dd_discard_length); in ndmpd_remote_read_v3()
1797 if (session->ns_data.dd_bytes_left_to_read == 0) { in ndmpd_remote_read_v3()
1799 if (session->ns_data.dd_read_length == 0) { in ndmpd_remote_read_v3()
1800 session->ns_data.dd_bytes_left_to_read = ~0LL; in ndmpd_remote_read_v3()
1801 session->ns_data.dd_read_offset = 0LL; in ndmpd_remote_read_v3()
1802 session->ns_data.dd_read_length = ~0LL; in ndmpd_remote_read_v3()
1810 jstat = session->ns_ndmp_lbr_params->nlp_jstat; in ndmpd_remote_read_v3()
1823 session->ns_data.dd_bytes_left_to_read = fsize; in ndmpd_remote_read_v3()
1824 session->ns_data.dd_read_offset = in ndmpd_remote_read_v3()
1825 session->ns_data.dd_position; in ndmpd_remote_read_v3()
1826 session->ns_data.dd_read_length = fsize; in ndmpd_remote_read_v3()
1830 long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_remote_read_v3()
1832 long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_remote_read_v3()
1835 session->ns_data.dd_read_offset, in ndmpd_remote_read_v3()
1836 session->ns_data.dd_read_length); in ndmpd_remote_read_v3()
1838 if (ndmp_send_request_lock(session->ns_connection, in ndmpd_remote_read_v3()
1852 if (session->ns_data.dd_discard_length != 0) { in ndmpd_remote_read_v3()
1853 n = discard_data_v3(session, in ndmpd_remote_read_v3()
1854 (ulong_t)session->ns_data.dd_discard_length); in ndmpd_remote_read_v3()
1858 session->ns_data.dd_discard_length -= n; in ndmpd_remote_read_v3()
1865 if (len > session->ns_data.dd_bytes_left_to_read) in ndmpd_remote_read_v3()
1866 len = session->ns_data.dd_bytes_left_to_read; in ndmpd_remote_read_v3()
1868 if ((n = read(session->ns_data.dd_sock, &data[count], in ndmpd_remote_read_v3()
1882 session->ns_data.dd_bytes_left_to_read -= n; in ndmpd_remote_read_v3()
1883 session->ns_data.dd_position += n; in ndmpd_remote_read_v3()
1900 nlp_release_job_stat(ndmpd_session_t *session) in nlp_release_job_stat() argument
1904 if ((nlp = ndmp_get_nlp(session)) == NULL) { in nlp_release_job_stat()
1932 ndmpd_data_init(ndmpd_session_t *session) in ndmpd_data_init() argument
1934 session->ns_data.dd_operation = NDMP_DATA_OP_NOACTION; in ndmpd_data_init()
1935 session->ns_data.dd_state = NDMP_DATA_STATE_IDLE; in ndmpd_data_init()
1936 session->ns_data.dd_halt_reason = NDMP_DATA_HALT_NA; in ndmpd_data_init()
1937 session->ns_data.dd_abort = FALSE; in ndmpd_data_init()
1938 session->ns_data.dd_env = 0; in ndmpd_data_init()
1939 session->ns_data.dd_env_len = 0; in ndmpd_data_init()
1940 session->ns_data.dd_nlist = 0; in ndmpd_data_init()
1941 session->ns_data.dd_nlist_len = 0; in ndmpd_data_init()
1942 session->ns_data.dd_mover.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_init()
1943 session->ns_data.dd_sock = -1; in ndmpd_data_init()
1944 session->ns_data.dd_read_offset = 0; in ndmpd_data_init()
1945 session->ns_data.dd_read_length = 0; in ndmpd_data_init()
1946 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_data_init()
1947 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_data_init()
1951 session->ns_data.dd_state = NDMP_DATA_STATE_IDLE; in ndmpd_data_init()
1952 session->ns_data.dd_nlist_v3 = 0; in ndmpd_data_init()
1953 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_init()
1954 session->ns_data.dd_listen_sock = -1; in ndmpd_data_init()
1955 session->ns_data.dd_bytes_left_to_read = 0LL; in ndmpd_data_init()
1956 session->ns_data.dd_position = 0LL; in ndmpd_data_init()
1957 session->ns_data.dd_discard_length = 0LL; in ndmpd_data_init()
1975 ndmpd_data_cleanup(ndmpd_session_t *session) in ndmpd_data_cleanup() argument
1977 if (session->ns_data.dd_listen_sock != -1) { in ndmpd_data_cleanup()
1979 session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1980 (void) ndmpd_remove_file_handler(session, in ndmpd_data_cleanup()
1981 session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1982 (void) close(session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1983 session->ns_data.dd_listen_sock = -1; in ndmpd_data_cleanup()
1985 if (session->ns_data.dd_sock != -1) { in ndmpd_data_cleanup()
1987 session->ns_data.dd_sock); in ndmpd_data_cleanup()
1993 if (session->ns_data.dd_sock != session->ns_mover.md_sock) in ndmpd_data_cleanup()
1994 (void) close(session->ns_data.dd_sock); in ndmpd_data_cleanup()
1996 session->ns_data.dd_sock = -1; in ndmpd_data_cleanup()
1999 ndmpd_free_env(session); in ndmpd_data_cleanup()
2000 ndmpd_free_nlist(session); in ndmpd_data_cleanup()
2017 ndmp_data_get_mover_mode(ndmpd_session_t *session) in ndmp_data_get_mover_mode() argument
2021 switch (session->ns_protocol_version) { in ndmp_data_get_mover_mode()
2023 rv = ((session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) in ndmp_data_get_mover_mode()
2027 rv = ((session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_TCP) in ndmp_data_get_mover_mode()
2031 rv = ((session->ns_data.dd_data_addr.addr_type == in ndmp_data_get_mover_mode()
2033 (session->ns_data.dd_data_addr_v4.addr_type == in ndmp_data_get_mover_mode()
2039 session->ns_protocol_version); in ndmp_data_get_mover_mode()
2064 ndmpd_tar_start_backup_v2(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_backup_v2() argument
2072 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_tar_start_backup_v2()
2082 if ((err = ndmpd_save_env(session, env_val, env_len)) != NDMP_NO_ERR) in ndmpd_tar_start_backup_v2()
2085 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_backup_v2()
2091 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_backup_v2()
2092 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_backup_v2()
2093 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_backup_v2()
2106 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_backup_v2()
2108 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_backup_v2()
2128 session->ns_data.dd_module.dm_start_func = ndmpd_tar_backup_starter; in ndmpd_tar_start_backup_v2()
2129 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_backup_abort; in ndmpd_tar_start_backup_v2()
2131 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_backup_v2()
2132 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_backup_v2()
2133 session->ns_data.dd_nlist = 0; in ndmpd_tar_start_backup_v2()
2134 session->ns_data.dd_nlist_len = 0; in ndmpd_tar_start_backup_v2()
2135 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_backup_v2()
2136 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_backup_v2()
2138 if ((err = ndmp_backup_extract_params(session, in ndmpd_tar_start_backup_v2()
2145 err = ndmpd_mover_connect(session, NDMP_MOVER_MODE_READ); in ndmpd_tar_start_backup_v2()
2153 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_backup_v2()
2155 session->ns_data.dd_operation = NDMP_DATA_OP_BACKUP; in ndmpd_tar_start_backup_v2()
2156 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_backup_v2()
2161 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_backup_v2()
2165 if (session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) { in ndmpd_tar_start_backup_v2()
2170 if (session->ns_data.dd_sock != in ndmpd_tar_start_backup_v2()
2171 session->ns_mover.md_sock) in ndmpd_tar_start_backup_v2()
2172 (void) close(session->ns_data.dd_sock); in ndmpd_tar_start_backup_v2()
2174 session->ns_data.dd_sock = -1; in ndmpd_tar_start_backup_v2()
2176 ndmpd_mover_error(session, in ndmpd_tar_start_backup_v2()
2188 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_backup_v2()
2212 ndmpd_tar_start_recover_v2(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_recover_v2() argument
2221 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_tar_start_recover_v2()
2233 reply.error = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_recover_v2()
2237 reply.error = ndmpd_save_nlist_v2(session, nlist_val, nlist_len); in ndmpd_tar_start_recover_v2()
2241 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_recover_v2()
2250 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_recover_v2()
2251 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_recover_v2()
2252 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_recover_v2()
2269 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_recover_v2()
2271 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_recover_v2()
2272 session->ns_data.dd_module.dm_start_func = ndmpd_tar_restore_starter; in ndmpd_tar_start_recover_v2()
2273 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_restore_abort; in ndmpd_tar_start_recover_v2()
2274 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_recover_v2()
2275 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_recover_v2()
2276 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_recover_v2()
2277 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_recover_v2()
2279 if ((err = ndmp_restore_extract_params(session, in ndmpd_tar_start_recover_v2()
2285 err = ndmpd_mover_connect(session, NDMP_MOVER_MODE_WRITE); in ndmpd_tar_start_recover_v2()
2291 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_recover_v2()
2292 session->ns_data.dd_operation = NDMP_DATA_OP_RECOVER; in ndmpd_tar_start_recover_v2()
2293 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_recover_v2()
2296 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_recover_v2()
2300 if (session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) { in ndmpd_tar_start_recover_v2()
2305 if (session->ns_data.dd_sock != in ndmpd_tar_start_recover_v2()
2306 session->ns_mover.md_sock) in ndmpd_tar_start_recover_v2()
2307 (void) close(session->ns_data.dd_sock); in ndmpd_tar_start_recover_v2()
2309 session->ns_data.dd_sock = -1; in ndmpd_tar_start_recover_v2()
2311 ndmpd_mover_error(session, in ndmpd_tar_start_recover_v2()
2325 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_recover_v2()
2343 ndmpd_data_get_info(ndmpd_session_t *session) in ndmpd_data_get_info() argument
2347 nlp = ndmp_get_nlp(session); in ndmpd_data_get_info()