Lines Matching refs:session

51 static int ndmpd_data_error_send_v4(ndmpd_session_t *session,
53 static int ndmpd_data_error_send(ndmpd_session_t *session,
56 static int create_listen_socket_v3(ndmpd_session_t *session, ulong_t *addr,
58 static ndmp_error data_connect_sock_v3(ndmpd_session_t *session, ulong_t addr,
60 static int discard_data_v3(ndmpd_session_t *session, ulong_t length);
61 static void nlp_release_job_stat(ndmpd_session_t *session);
62 static u_longlong_t ndmpd_data_get_info(ndmpd_session_t *session);
100 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v2() local
103 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v2()
104 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v2()
105 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v2()
108 session->ns_data.dd_module.dm_stats.ms_est_time_remaining; in ndmpd_data_get_state_v2()
111 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining); in ndmpd_data_get_state_v2()
114 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v2()
116 reply.mover = session->ns_data.dd_mover; in ndmpd_data_get_state_v2()
117 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v2()
118 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v2()
142 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_backup_v2() local
148 session->ns_data.dd_mover = request->mover; in ndmpd_data_start_backup_v2()
150 err = ndmpd_tar_start_backup_v2(session, request->bu_type, in ndmpd_data_start_backup_v2()
162 ndmpd_data_cleanup(session); in ndmpd_data_start_backup_v2()
183 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_recover_v2() local
187 session->ns_data.dd_mover = request->mover; in ndmpd_data_start_recover_v2()
189 err = ndmpd_tar_start_recover_v2(session, request->bu_type, in ndmpd_data_start_recover_v2()
201 ndmpd_data_cleanup(session); in ndmpd_data_start_recover_v2()
224 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_env_v2() local
227 if (session->ns_data.dd_operation != NDMP_DATA_OP_BACKUP) { in ndmpd_data_get_env_v2()
233 reply.env.env_len = session->ns_data.dd_env_len; in ndmpd_data_get_env_v2()
234 reply.env.env_val = session->ns_data.dd_env; in ndmpd_data_get_env_v2()
258 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_stop_v2() local
260 if (session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_stop_v2()
267 ndmp_waitfor_op(session); in ndmpd_data_stop_v2()
268 ndmpd_data_cleanup(session); in ndmpd_data_stop_v2()
269 ndmpd_file_history_cleanup(session, FALSE); in ndmpd_data_stop_v2()
271 nlp_release_job_stat(session); in ndmpd_data_stop_v2()
274 (void) ndmpd_data_init(session); in ndmpd_data_stop_v2()
275 ndmpd_file_history_init(session); in ndmpd_data_stop_v2()
301 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_abort_v2() local
303 if (session->ns_data.dd_state == NDMP_DATA_STATE_IDLE || in ndmpd_data_abort_v2()
304 session->ns_data.dd_state == NDMP_DATA_STATE_HALTED) { in ndmpd_data_abort_v2()
316 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v2()
317 (*session->ns_data.dd_module.dm_abort_func)( in ndmpd_data_abort_v2()
318 session->ns_data.dd_module.dm_module_cookie); in ndmpd_data_abort_v2()
347 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v3() local
354 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v3()
355 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v3()
356 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v3()
361 session->ns_data.dd_module.dm_stats.ms_bytes_processed); in ndmpd_data_get_state_v3()
364 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v3()
368 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) in ndmpd_data_get_state_v3()
370 &session->ns_data.dd_data_addr); in ndmpd_data_get_state_v3()
371 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v3()
372 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v3()
396 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_backup_v3() local
402 if (session->ns_data.dd_state != NDMP_DATA_STATE_CONNECTED) { in ndmpd_data_start_backup_v3()
411 if (session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_LOCAL) { in ndmpd_data_start_backup_v3()
412 if (session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { in ndmpd_data_start_backup_v3()
420 session->ns_butype = NDMP_BUTYPE_TAR; in ndmpd_data_start_backup_v3()
422 session->ns_butype = NDMP_BUTYPE_DUMP; in ndmpd_data_start_backup_v3()
424 session->ns_butype = NDMP_BUTYPE_ZFS; in ndmpd_data_start_backup_v3()
434 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_backup_v3()
436 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_backup_v3()
445 if (session->ns_butype == NDMP_BUTYPE_ZFS) { in ndmpd_data_start_backup_v3()
446 reply.error = ndmpd_zfs_start_op(session, request->env.env_val, in ndmpd_data_start_backup_v3()
449 reply.error = ndmpd_tar_start_backup_v3(session, in ndmpd_data_start_backup_v3()
465 ndmpd_data_cleanup(session); in ndmpd_data_start_backup_v3()
486 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_start_recover_v3() local
492 if (session->ns_data.dd_state != NDMP_DATA_STATE_CONNECTED) { in ndmpd_data_start_recover_v3()
499 session->ns_butype = NDMP_BUTYPE_TAR; in ndmpd_data_start_recover_v3()
501 session->ns_butype = NDMP_BUTYPE_DUMP; in ndmpd_data_start_recover_v3()
503 session->ns_butype = NDMP_BUTYPE_ZFS; in ndmpd_data_start_recover_v3()
513 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_recover_v3()
515 NDMP_APILOG((void *) session, NDMP_LOG_ERROR, ++ndmp_log_msg_id, in ndmpd_data_start_recover_v3()
524 if (session->ns_butype == NDMP_BUTYPE_ZFS) { in ndmpd_data_start_recover_v3()
525 reply.error = ndmpd_zfs_start_op(session, request->env.env_val, in ndmpd_data_start_recover_v3()
529 reply.error = ndmpd_tar_start_recover_v3(session, in ndmpd_data_start_recover_v3()
545 ndmpd_data_error(session, NDMP_DATA_HALT_INTERNAL_ERROR); in ndmpd_data_start_recover_v3()
546 ndmpd_data_cleanup(session); in ndmpd_data_start_recover_v3()
569 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_abort_v3() local
571 switch (session->ns_data.dd_state) { in ndmpd_data_abort_v3()
584 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v3()
585 if (session->ns_data.dd_module.dm_abort_func) in ndmpd_data_abort_v3()
586 (*session->ns_data.dd_module.dm_abort_func)( in ndmpd_data_abort_v3()
587 session->ns_data.dd_module.dm_module_cookie); in ndmpd_data_abort_v3()
594 session->ns_data.dd_abort = TRUE; in ndmpd_data_abort_v3()
595 ndmpd_data_error(session, NDMP_DATA_HALT_ABORTED); in ndmpd_data_abort_v3()
600 session->ns_data.dd_state); in ndmpd_data_abort_v3()
625 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_stop_v3() local
627 if (session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_stop_v3()
634 ndmp_waitfor_op(session); in ndmpd_data_stop_v3()
635 ndmpd_data_cleanup(session); in ndmpd_data_stop_v3()
636 ndmpd_file_history_cleanup(session, FALSE); in ndmpd_data_stop_v3()
639 (void) ndmpd_data_init(session); in ndmpd_data_stop_v3()
640 ndmpd_file_history_init(session); in ndmpd_data_stop_v3()
666 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_listen_v3() local
674 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_listen_v3()
678 } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { in ndmpd_data_listen_v3()
695 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_listen_v3()
698 if (create_listen_socket_v3(session, &addr, &port) < 0) { in ndmpd_data_listen_v3()
707 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v3()
708 session->ns_data.dd_data_addr.tcp_ip_v3 = addr; in ndmpd_data_listen_v3()
709 session->ns_data.dd_data_addr.tcp_port_v3 = ntohs(port); in ndmpd_data_listen_v3()
711 session->ns_data.dd_listen_sock); in ndmpd_data_listen_v3()
722 session->ns_data.dd_state = NDMP_DATA_STATE_LISTEN; in ndmpd_data_listen_v3()
747 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_connect_v3() local
757 } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_connect_v3()
776 if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN || in ndmpd_data_connect_v3()
777 session->ns_mover.md_listen_sock != -1) { in ndmpd_data_connect_v3()
782 session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; in ndmpd_data_connect_v3()
787 reply.error = data_connect_sock_v3(session, in ndmpd_data_connect_v3()
798 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in ndmpd_data_connect_v3()
830 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_env_v4() local
834 if (session->ns_data.dd_state != NDMP_DATA_STATE_ACTIVE && in ndmpd_data_get_env_v4()
835 session->ns_data.dd_state != NDMP_DATA_STATE_HALTED) { in ndmpd_data_get_env_v4()
839 } else if (session->ns_data.dd_operation != NDMP_DATA_OP_BACKUP) { in ndmpd_data_get_env_v4()
845 reply.env.env_len = session->ns_data.dd_env_len; in ndmpd_data_get_env_v4()
846 reply.env.env_val = session->ns_data.dd_env; in ndmpd_data_get_env_v4()
869 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_get_state_v4() local
876 reply.operation = session->ns_data.dd_operation; in ndmpd_data_get_state_v4()
877 reply.state = session->ns_data.dd_state; in ndmpd_data_get_state_v4()
878 reply.halt_reason = session->ns_data.dd_halt_reason; in ndmpd_data_get_state_v4()
882 session->ns_data.dd_module.dm_stats.ms_bytes_processed); in ndmpd_data_get_state_v4()
885 long_long_to_quad(ndmpd_data_get_info(session)); in ndmpd_data_get_state_v4()
889 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) in ndmpd_data_get_state_v4()
891 &session->ns_data.dd_data_addr_v4); in ndmpd_data_get_state_v4()
893 reply.read_offset = long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_data_get_state_v4()
894 reply.read_length = long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_data_get_state_v4()
920 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_connect_v4() local
930 } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_connect_v4()
949 if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN || in ndmpd_data_connect_v4()
950 session->ns_mover.md_listen_sock != -1) { in ndmpd_data_connect_v4()
955 session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; in ndmpd_data_connect_v4()
960 reply.error = data_connect_sock_v3(session, in ndmpd_data_connect_v4()
971 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in ndmpd_data_connect_v4()
995 ndmpd_session_t *session = ndmp_get_client_data(connection); in ndmpd_data_listen_v4() local
1003 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_data_listen_v4()
1007 } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { in ndmpd_data_listen_v4()
1024 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_listen_v4()
1027 if (create_listen_socket_v3(session, &addr, &port) < 0) { in ndmpd_data_listen_v4()
1041 session->ns_data.dd_data_addr_v4.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v4()
1042 session->ns_data.dd_data_addr_v4.tcp_addr_v4 = in ndmpd_data_listen_v4()
1045 session->ns_data.dd_data_addr_v4.tcp_ip_v4(0) = addr; in ndmpd_data_listen_v4()
1046 session->ns_data.dd_data_addr_v4.tcp_port_v4(0) = ntohs(port); in ndmpd_data_listen_v4()
1047 session->ns_data.dd_data_addr_v4.tcp_len_v4 = 1; in ndmpd_data_listen_v4()
1050 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in ndmpd_data_listen_v4()
1051 session->ns_data.dd_data_addr.tcp_ip_v3 = addr; in ndmpd_data_listen_v4()
1052 session->ns_data.dd_data_addr.tcp_port_v3 = ntohs(port); in ndmpd_data_listen_v4()
1054 session->ns_data.dd_listen_sock); in ndmpd_data_listen_v4()
1065 session->ns_data.dd_state = NDMP_DATA_STATE_LISTEN; in ndmpd_data_listen_v4()
1118 ndmpd_data_error_send(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error_send() argument
1122 req.reason = session->ns_data.dd_halt_reason; in ndmpd_data_error_send()
1125 return (ndmp_send_request(session->ns_connection, in ndmpd_data_error_send()
1144 ndmpd_data_error_send_v4(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error_send_v4() argument
1148 req.reason = session->ns_data.dd_halt_reason; in ndmpd_data_error_send_v4()
1150 return ndmp_send_request(session->ns_connection, in ndmpd_data_error_send_v4()
1170 ndmpd_data_error(ndmpd_session_t *session, ndmp_data_halt_reason reason) in ndmpd_data_error() argument
1172 if (session->ns_data.dd_state == NDMP_DATA_STATE_IDLE || in ndmpd_data_error()
1173 session->ns_data.dd_state == NDMP_DATA_STATE_HALTED) in ndmpd_data_error()
1176 if (session->ns_data.dd_operation == NDMP_DATA_OP_BACKUP) { in ndmpd_data_error()
1180 ndmpd_file_history_cleanup(session, in ndmpd_data_error()
1187 if (session->ns_data.dd_data_addr.addr_type in ndmpd_data_error()
1189 (void) ndmpd_local_write_v3(session, 0, 0); in ndmpd_data_error()
1192 session->ns_data.dd_state = NDMP_DATA_STATE_HALTED; in ndmpd_data_error()
1193 session->ns_data.dd_halt_reason = reason; in ndmpd_data_error()
1195 if (session->ns_protocol_version == NDMPV4) { in ndmpd_data_error()
1196 if (ndmpd_data_error_send_v4(session, reason) < 0) in ndmpd_data_error()
1200 if (ndmpd_data_error_send(session, reason) < 0) in ndmpd_data_error()
1205 if (session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_TCP) { in ndmpd_data_error()
1206 if (session->ns_data.dd_sock != -1) { in ndmpd_data_error()
1207 (void) ndmpd_remove_file_handler(session, in ndmpd_data_error()
1208 session->ns_data.dd_sock); in ndmpd_data_error()
1213 if (session->ns_data.dd_sock != in ndmpd_data_error()
1214 session->ns_mover.md_sock) in ndmpd_data_error()
1215 (void) close(session->ns_data.dd_sock); in ndmpd_data_error()
1217 session->ns_data.dd_sock = -1; in ndmpd_data_error()
1219 if (session->ns_data.dd_listen_sock != -1) { in ndmpd_data_error()
1220 (void) ndmpd_remove_file_handler(session, in ndmpd_data_error()
1221 session->ns_data.dd_listen_sock); in ndmpd_data_error()
1223 (void) close(session->ns_data.dd_listen_sock); in ndmpd_data_error()
1224 session->ns_data.dd_listen_sock = -1; in ndmpd_data_error()
1227 ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); in ndmpd_data_error()
1251 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()
1285 (void) setsockopt(session->ns_data.dd_sock, SOL_SOCKET, SO_KEEPALIVE, in data_accept_connection_v3()
1287 ndmp_set_socket_nodelay(session->ns_data.dd_sock); in data_accept_connection_v3()
1289 ndmp_set_socket_snd_buf(session->ns_data.dd_sock, in data_accept_connection_v3()
1292 ndmp_set_socket_rcv_buf(session->ns_data.dd_sock, in data_accept_connection_v3()
1295 session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; in data_accept_connection_v3()
1306 create_listen_socket_v3(ndmpd_session_t *session, ulong_t *addr, ushort_t *port) in create_listen_socket_v3() argument
1308 session->ns_data.dd_listen_sock = ndmp_create_socket(addr, port); in create_listen_socket_v3()
1309 if (session->ns_data.dd_listen_sock < 0) in create_listen_socket_v3()
1317 if (ndmpd_add_file_handler(session, (void*)session, in create_listen_socket_v3()
1318 session->ns_data.dd_listen_sock, NDMPD_SELECT_MODE_READ, HC_MOVER, in create_listen_socket_v3()
1320 (void) close(session->ns_data.dd_listen_sock); in create_listen_socket_v3()
1321 session->ns_data.dd_listen_sock = -1; in create_listen_socket_v3()
1346 data_connect_sock_v3(ndmpd_session_t *session, ulong_t addr, ushort_t port) in data_connect_sock_v3() argument
1354 session->ns_data.dd_sock = sock; in data_connect_sock_v3()
1355 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_TCP; in data_connect_sock_v3()
1356 session->ns_data.dd_data_addr.tcp_ip_v3 = ntohl(addr); in data_connect_sock_v3()
1357 session->ns_data.dd_data_addr.tcp_port_v3 = port; in data_connect_sock_v3()
1379 ndmpd_tar_start_backup_v3(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_backup_v3() argument
1389 err = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_backup_v3()
1393 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_backup_v3()
1399 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_backup_v3()
1400 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_backup_v3()
1401 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_backup_v3()
1409 if (session->ns_protocol_version == NDMPV4) in ndmpd_tar_start_backup_v3()
1419 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_backup_v3()
1420 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_backup_v3()
1440 session->ns_data.dd_module.dm_start_func = ndmpd_tar_backup_starter_v3; in ndmpd_tar_start_backup_v3()
1441 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_backup_abort_v3; in ndmpd_tar_start_backup_v3()
1443 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_backup_v3()
1444 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_backup_v3()
1445 session->ns_data.dd_nlist_v3 = 0; in ndmpd_tar_start_backup_v3()
1446 session->ns_data.dd_nlist_len = 0; in ndmpd_tar_start_backup_v3()
1447 session->ns_data.dd_bytes_left_to_read = 0; in ndmpd_tar_start_backup_v3()
1448 session->ns_data.dd_position = 0; in ndmpd_tar_start_backup_v3()
1449 session->ns_data.dd_discard_length = 0; in ndmpd_tar_start_backup_v3()
1450 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_backup_v3()
1451 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_backup_v3()
1453 reply.error = ndmp_backup_get_params_v3(session, params); in ndmpd_tar_start_backup_v3()
1461 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_backup_v3()
1468 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_backup_v3()
1469 session->ns_data.dd_operation = NDMP_DATA_OP_BACKUP; in ndmpd_tar_start_backup_v3()
1470 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_backup_v3()
1479 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_backup_v3()
1507 ndmpd_tar_start_recover_v3(ndmpd_session_t *session, in ndmpd_tar_start_recover_v3() argument
1518 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_recover_v3()
1525 reply.error = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_recover_v3()
1531 reply.error = ndmpd_save_nlist_v3(session, nlist_val, nlist_len); in ndmpd_tar_start_recover_v3()
1540 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_recover_v3()
1541 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_recover_v3()
1542 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_recover_v3()
1550 if (session->ns_protocol_version == NDMPV4) { in ndmpd_tar_start_recover_v3()
1566 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_recover_v3()
1568 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_recover_v3()
1569 session->ns_data.dd_module.dm_start_func = ndmpd_tar_restore_starter_v3; in ndmpd_tar_start_recover_v3()
1570 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_restore_abort_v3; in ndmpd_tar_start_recover_v3()
1571 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_recover_v3()
1572 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_recover_v3()
1573 session->ns_data.dd_bytes_left_to_read = 0; in ndmpd_tar_start_recover_v3()
1574 session->ns_data.dd_position = 0; in ndmpd_tar_start_recover_v3()
1575 session->ns_data.dd_discard_length = 0; in ndmpd_tar_start_recover_v3()
1576 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_recover_v3()
1577 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_recover_v3()
1579 err = ndmp_restore_get_params_v3(session, params); in ndmpd_tar_start_recover_v3()
1586 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_recover_v3()
1589 ndmpd_free_nlist_v3(session); in ndmpd_tar_start_recover_v3()
1592 ndmpd_data_error(session, NDMP_DATA_HALT_CONNECT_ERROR); in ndmpd_tar_start_recover_v3()
1597 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_recover_v3()
1598 session->ns_data.dd_operation = NDMP_DATA_OP_RECOVER; in ndmpd_tar_start_recover_v3()
1599 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_recover_v3()
1608 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_recover_v3()
1619 ndmpd_zfs_start_op(ndmpd_session_t *session, ndmp_pval *env_val, in ndmpd_zfs_start_op() argument
1623 ndmpd_zfs_args_t *ndmpd_zfs_args = &session->ns_ndmpd_zfs_args; in ndmpd_zfs_start_op()
1631 if (ndmpd_zfs_init(session) != 0) in ndmpd_zfs_start_op()
1634 err = ndmpd_save_env(session, env_val, env_len); in ndmpd_zfs_start_op()
1652 session->ns_data.dd_module.dm_start_func = in ndmpd_zfs_start_op()
1657 err = ndmpd_save_nlist_v3(session, nlist_val, nlist_len); in ndmpd_zfs_start_op()
1673 session->ns_data.dd_module.dm_start_func = in ndmpd_zfs_start_op()
1680 session->ns_data.dd_operation = op; in ndmpd_zfs_start_op()
1681 session->ns_data.dd_module.dm_abort_func = ndmpd_zfs_abort; in ndmpd_zfs_start_op()
1682 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_zfs_start_op()
1683 session->ns_data.dd_abort = FALSE; in ndmpd_zfs_start_op()
1695 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_zfs_start_op()
1699 ndmpd_data_error(session, NDMP_DATA_HALT_CONNECT_ERROR); in ndmpd_zfs_start_op()
1705 (funct_t)session->ns_data.dd_module.dm_start_func, ndmpd_zfs_args); in ndmpd_zfs_start_op()
1743 discard_data_v3(ndmpd_session_t *session, ulong_t length) in discard_data_v3() argument
1752 n = read(session->ns_data.dd_sock, buf, toread); in discard_data_v3()
1777 ndmpd_remote_read_v3(ndmpd_session_t *session, char *data, ulong_t length) in ndmpd_remote_read_v3() argument
1787 session->ns_data.dd_bytes_left_to_read, in ndmpd_remote_read_v3()
1788 session->ns_data.dd_read_offset, in ndmpd_remote_read_v3()
1789 session->ns_data.dd_read_length, in ndmpd_remote_read_v3()
1790 session->ns_data.dd_position, in ndmpd_remote_read_v3()
1791 session->ns_data.dd_discard_length); in ndmpd_remote_read_v3()
1807 if (session->ns_data.dd_bytes_left_to_read == 0) { in ndmpd_remote_read_v3()
1809 if (session->ns_data.dd_read_length == 0) { in ndmpd_remote_read_v3()
1810 session->ns_data.dd_bytes_left_to_read = ~0LL; in ndmpd_remote_read_v3()
1811 session->ns_data.dd_read_offset = 0LL; in ndmpd_remote_read_v3()
1812 session->ns_data.dd_read_length = ~0LL; in ndmpd_remote_read_v3()
1820 jstat = session->ns_ndmp_lbr_params->nlp_jstat; in ndmpd_remote_read_v3()
1833 session->ns_data.dd_bytes_left_to_read = fsize; in ndmpd_remote_read_v3()
1834 session->ns_data.dd_read_offset = in ndmpd_remote_read_v3()
1835 session->ns_data.dd_position; in ndmpd_remote_read_v3()
1836 session->ns_data.dd_read_length = fsize; in ndmpd_remote_read_v3()
1840 long_long_to_quad(session->ns_data.dd_read_offset); in ndmpd_remote_read_v3()
1842 long_long_to_quad(session->ns_data.dd_read_length); in ndmpd_remote_read_v3()
1845 session->ns_data.dd_read_offset, in ndmpd_remote_read_v3()
1846 session->ns_data.dd_read_length); in ndmpd_remote_read_v3()
1848 if (ndmp_send_request_lock(session->ns_connection, in ndmpd_remote_read_v3()
1862 if (session->ns_data.dd_discard_length != 0) { in ndmpd_remote_read_v3()
1863 n = discard_data_v3(session, in ndmpd_remote_read_v3()
1864 (ulong_t)session->ns_data.dd_discard_length); in ndmpd_remote_read_v3()
1868 session->ns_data.dd_discard_length -= n; in ndmpd_remote_read_v3()
1875 if (len > session->ns_data.dd_bytes_left_to_read) in ndmpd_remote_read_v3()
1876 len = session->ns_data.dd_bytes_left_to_read; in ndmpd_remote_read_v3()
1878 if ((n = read(session->ns_data.dd_sock, &data[count], in ndmpd_remote_read_v3()
1892 session->ns_data.dd_bytes_left_to_read -= n; in ndmpd_remote_read_v3()
1893 session->ns_data.dd_position += n; in ndmpd_remote_read_v3()
1910 nlp_release_job_stat(ndmpd_session_t *session) in nlp_release_job_stat() argument
1914 if ((nlp = ndmp_get_nlp(session)) == NULL) { in nlp_release_job_stat()
1942 ndmpd_data_init(ndmpd_session_t *session) in ndmpd_data_init() argument
1944 session->ns_data.dd_operation = NDMP_DATA_OP_NOACTION; in ndmpd_data_init()
1945 session->ns_data.dd_state = NDMP_DATA_STATE_IDLE; in ndmpd_data_init()
1946 session->ns_data.dd_halt_reason = NDMP_DATA_HALT_NA; in ndmpd_data_init()
1947 session->ns_data.dd_abort = FALSE; in ndmpd_data_init()
1948 session->ns_data.dd_env = 0; in ndmpd_data_init()
1949 session->ns_data.dd_env_len = 0; in ndmpd_data_init()
1950 session->ns_data.dd_nlist = 0; in ndmpd_data_init()
1951 session->ns_data.dd_nlist_len = 0; in ndmpd_data_init()
1952 session->ns_data.dd_mover.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_init()
1953 session->ns_data.dd_sock = -1; in ndmpd_data_init()
1954 session->ns_data.dd_read_offset = 0; in ndmpd_data_init()
1955 session->ns_data.dd_read_length = 0; in ndmpd_data_init()
1956 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_data_init()
1957 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_data_init()
1961 session->ns_data.dd_state = NDMP_DATA_STATE_IDLE; in ndmpd_data_init()
1962 session->ns_data.dd_nlist_v3 = 0; in ndmpd_data_init()
1963 session->ns_data.dd_data_addr.addr_type = NDMP_ADDR_LOCAL; in ndmpd_data_init()
1964 session->ns_data.dd_listen_sock = -1; in ndmpd_data_init()
1965 session->ns_data.dd_bytes_left_to_read = 0LL; in ndmpd_data_init()
1966 session->ns_data.dd_position = 0LL; in ndmpd_data_init()
1967 session->ns_data.dd_discard_length = 0LL; in ndmpd_data_init()
1985 ndmpd_data_cleanup(ndmpd_session_t *session) in ndmpd_data_cleanup() argument
1987 if (session->ns_data.dd_listen_sock != -1) { in ndmpd_data_cleanup()
1989 session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1990 (void) ndmpd_remove_file_handler(session, in ndmpd_data_cleanup()
1991 session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1992 (void) close(session->ns_data.dd_listen_sock); in ndmpd_data_cleanup()
1993 session->ns_data.dd_listen_sock = -1; in ndmpd_data_cleanup()
1995 if (session->ns_data.dd_sock != -1) { in ndmpd_data_cleanup()
1997 session->ns_data.dd_sock); in ndmpd_data_cleanup()
2003 if (session->ns_data.dd_sock != session->ns_mover.md_sock) in ndmpd_data_cleanup()
2004 (void) close(session->ns_data.dd_sock); in ndmpd_data_cleanup()
2006 session->ns_data.dd_sock = -1; in ndmpd_data_cleanup()
2009 ndmpd_free_env(session); in ndmpd_data_cleanup()
2010 ndmpd_free_nlist(session); in ndmpd_data_cleanup()
2027 ndmp_data_get_mover_mode(ndmpd_session_t *session) in ndmp_data_get_mover_mode() argument
2031 switch (session->ns_protocol_version) { in ndmp_data_get_mover_mode()
2033 rv = ((session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) in ndmp_data_get_mover_mode()
2037 rv = ((session->ns_data.dd_data_addr.addr_type == NDMP_ADDR_TCP) in ndmp_data_get_mover_mode()
2041 rv = ((session->ns_data.dd_data_addr.addr_type == in ndmp_data_get_mover_mode()
2043 (session->ns_data.dd_data_addr_v4.addr_type == in ndmp_data_get_mover_mode()
2049 session->ns_protocol_version); in ndmp_data_get_mover_mode()
2074 ndmpd_tar_start_backup_v2(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_backup_v2() argument
2082 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_tar_start_backup_v2()
2092 if ((err = ndmpd_save_env(session, env_val, env_len)) != NDMP_NO_ERR) in ndmpd_tar_start_backup_v2()
2095 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_backup_v2()
2101 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_backup_v2()
2102 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_backup_v2()
2103 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_backup_v2()
2116 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_backup_v2()
2118 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_backup_v2()
2138 session->ns_data.dd_module.dm_start_func = ndmpd_tar_backup_starter; in ndmpd_tar_start_backup_v2()
2139 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_backup_abort; in ndmpd_tar_start_backup_v2()
2141 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_backup_v2()
2142 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_backup_v2()
2143 session->ns_data.dd_nlist = 0; in ndmpd_tar_start_backup_v2()
2144 session->ns_data.dd_nlist_len = 0; in ndmpd_tar_start_backup_v2()
2145 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_backup_v2()
2146 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_backup_v2()
2148 if ((err = ndmp_backup_extract_params(session, in ndmpd_tar_start_backup_v2()
2155 err = ndmpd_mover_connect(session, NDMP_MOVER_MODE_READ); in ndmpd_tar_start_backup_v2()
2163 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_backup_v2()
2165 session->ns_data.dd_operation = NDMP_DATA_OP_BACKUP; in ndmpd_tar_start_backup_v2()
2166 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_backup_v2()
2171 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_backup_v2()
2175 if (session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) { in ndmpd_tar_start_backup_v2()
2180 if (session->ns_data.dd_sock != in ndmpd_tar_start_backup_v2()
2181 session->ns_mover.md_sock) in ndmpd_tar_start_backup_v2()
2182 (void) close(session->ns_data.dd_sock); in ndmpd_tar_start_backup_v2()
2184 session->ns_data.dd_sock = -1; in ndmpd_tar_start_backup_v2()
2186 ndmpd_mover_error(session, in ndmpd_tar_start_backup_v2()
2198 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_backup_v2()
2222 ndmpd_tar_start_recover_v2(ndmpd_session_t *session, char *bu_type, in ndmpd_tar_start_recover_v2() argument
2231 if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { in ndmpd_tar_start_recover_v2()
2243 reply.error = ndmpd_save_env(session, env_val, env_len); in ndmpd_tar_start_recover_v2()
2247 reply.error = ndmpd_save_nlist_v2(session, nlist_val, nlist_len); in ndmpd_tar_start_recover_v2()
2251 nlp = ndmp_get_nlp(session); in ndmpd_tar_start_recover_v2()
2260 params->mp_daemon_cookie = (void *)session; in ndmpd_tar_start_recover_v2()
2261 params->mp_module_cookie = &session->ns_data.dd_module.dm_module_cookie; in ndmpd_tar_start_recover_v2()
2262 params->mp_protocol_version = session->ns_protocol_version; in ndmpd_tar_start_recover_v2()
2279 params->mp_stats = &session->ns_data.dd_module.dm_stats; in ndmpd_tar_start_recover_v2()
2281 session->ns_data.dd_module.dm_module_cookie = 0; in ndmpd_tar_start_recover_v2()
2282 session->ns_data.dd_module.dm_start_func = ndmpd_tar_restore_starter; in ndmpd_tar_start_recover_v2()
2283 session->ns_data.dd_module.dm_abort_func = ndmpd_tar_restore_abort; in ndmpd_tar_start_recover_v2()
2284 session->ns_data.dd_module.dm_stats.ms_est_bytes_remaining = 0; in ndmpd_tar_start_recover_v2()
2285 session->ns_data.dd_module.dm_stats.ms_est_time_remaining = 0; in ndmpd_tar_start_recover_v2()
2286 session->ns_data.dd_read_offset = 0; in ndmpd_tar_start_recover_v2()
2287 session->ns_data.dd_read_length = 0; in ndmpd_tar_start_recover_v2()
2289 if ((err = ndmp_restore_extract_params(session, in ndmpd_tar_start_recover_v2()
2295 err = ndmpd_mover_connect(session, NDMP_MOVER_MODE_WRITE); in ndmpd_tar_start_recover_v2()
2301 session->ns_data.dd_state = NDMP_DATA_STATE_ACTIVE; in ndmpd_tar_start_recover_v2()
2302 session->ns_data.dd_operation = NDMP_DATA_OP_RECOVER; in ndmpd_tar_start_recover_v2()
2303 session->ns_data.dd_abort = FALSE; in ndmpd_tar_start_recover_v2()
2306 if (ndmp_send_response(session->ns_connection, NDMP_NO_ERR, in ndmpd_tar_start_recover_v2()
2310 if (session->ns_data.dd_mover.addr_type == NDMP_ADDR_TCP) { in ndmpd_tar_start_recover_v2()
2315 if (session->ns_data.dd_sock != in ndmpd_tar_start_recover_v2()
2316 session->ns_mover.md_sock) in ndmpd_tar_start_recover_v2()
2317 (void) close(session->ns_data.dd_sock); in ndmpd_tar_start_recover_v2()
2319 session->ns_data.dd_sock = -1; in ndmpd_tar_start_recover_v2()
2321 ndmpd_mover_error(session, in ndmpd_tar_start_recover_v2()
2335 (funct_t)session->ns_data.dd_module.dm_start_func, in ndmpd_tar_start_recover_v2()
2353 ndmpd_data_get_info(ndmpd_session_t *session) in ndmpd_data_get_info() argument
2357 nlp = ndmp_get_nlp(session); in ndmpd_data_get_info()