Print this page
NEX-13374 NDMP should be able to backup unmounted ZFS filesystems
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Revert "NEX-5801 Snapshots left over after failed backups"
This reverts commit f182fb95f09036db71fbfc6f0a6b90469b761f21.
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-2911 NDMP logging should use syslog and is too chatty
NEX-2690 NDMP V4 required to have Record size is persistent between mover connections and state transitions
NEX-2911 NDMP logging should use syslog and is too chatty
NEX-727 Netbackup Catalog verification hangs waiting for NDMP server
NEX-799 past last file mark returned NDMP_IO_ERR, should be NDMP_EOM_ERR (V4+)
NEX-812 NDMP backup terminate after hit the EOM in Netbackup backup
NEX-559 NDMP cannot backup/restore a file which spans multiple tapes
SUP-484 NDMP backup jobs error out when reaching the end of media (EOM)

*** 35,50 **** * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* Copyright (c) 2007, The Storage Networking Industry Association. */ /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */ ! /* Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/socketvar.h> #include <netinet/in.h> #include <arpa/inet.h> #include <net/if.h> #include <errno.h> #include <fcntl.h> --- 35,51 ---- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* Copyright (c) 2007, The Storage Networking Industry Association. */ /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */ ! /* Copyright 2017 Nexenta Systems, Inc. All rights reserved. */ #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/socketvar.h> + #include <syslog.h> #include <netinet/in.h> #include <arpa/inet.h> #include <net/if.h> #include <errno.h> #include <fcntl.h>
*** 184,194 **** request = (ndmp_mover_listen_request_v2 *)body; if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE || session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_listen reply"); return; } --- 185,194 ----
*** 243,253 **** { ndmp_mover_continue_reply reply; ndmpd_session_t *session = ndmp_get_client_data(connection); if (session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_continue reply"); return; --- 243,252 ----
*** 278,288 **** ndmp_mover_abort_reply reply; ndmpd_session_t *session = ndmp_get_client_data(connection); if (session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE || session->ns_mover.md_state == NDMP_MOVER_STATE_HALTED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_abort reply"); return; --- 277,286 ----
*** 315,325 **** { ndmp_mover_stop_reply reply; ndmpd_session_t *session = ndmp_get_client_data(connection); if (session->ns_mover.md_state != NDMP_MOVER_STATE_HALTED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_stop reply"); return; --- 313,322 ----
*** 368,383 **** */ if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE && session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED && session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid state %d", - session->ns_mover.md_state); } else { if (quad_to_long_long(request->length) == 0) { reply.error = NDMP_ILLEGAL_ARGS_ERR; ! NDMP_LOG(LOG_DEBUG, "Invalid window size %d", quad_to_long_long(request->length)); } else { reply.error = NDMP_NO_ERR; session->ns_mover.md_window_offset = quad_to_long_long(request->offset); --- 365,378 ---- */ if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE && session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED && session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else { if (quad_to_long_long(request->length) == 0) { reply.error = NDMP_ILLEGAL_ARGS_ERR; ! syslog(LOG_ERR, "Illegal window size %d", quad_to_long_long(request->length)); } else { reply.error = NDMP_NO_ERR; session->ns_mover.md_window_offset = quad_to_long_long(request->offset);
*** 420,437 **** int err; if (session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE || session->ns_mover.md_bytes_left_to_read != 0 || session->ns_mover.md_mode != NDMP_MOVER_MODE_WRITE) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, &reply, "sending mover_read reply"); return; } if (session->ns_tape.td_fd == -1) { ! NDMP_LOG(LOG_DEBUG, "Tape device is not open"); reply.error = NDMP_DEV_NOT_OPEN_ERR; ndmp_send_reply(connection, &reply, "sending mover_read reply"); return; } --- 415,431 ---- int err; if (session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE || session->ns_mover.md_bytes_left_to_read != 0 || session->ns_mover.md_mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, &reply, "sending mover_read reply"); return; } if (session->ns_tape.td_fd == -1) { ! syslog(LOG_ERR, "Tape device is not open"); reply.error = NDMP_DEV_NOT_OPEN_ERR; ndmp_send_reply(connection, &reply, "sending mover_read reply"); return; }
*** 478,488 **** { ndmp_mover_close_reply reply; ndmpd_session_t *session = ndmp_get_client_data(connection); if (session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, &reply, "sending mover_close reply"); return; --- 472,481 ----
*** 511,520 **** --- 504,514 ---- void ndmpd_mover_set_record_size_v2(ndmp_connection_t *connection, void *body) { ndmp_mover_set_record_size_request *request; ndmp_mover_set_record_size_reply reply; + ndmpd_session_t *session = ndmp_get_client_data(connection); request = (ndmp_mover_set_record_size_request *) body; session->ns_mover.md_record_size = request->len;
*** 610,639 **** reply.error = NDMP_NO_ERR; if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid mode %d", request->mode); } else if (!ndmp_valid_v3addr_type(request->addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr_type); } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, - "Invalid mover state to process listen request"); } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, - "Invalid data state to process listen request"); } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! NDMP_LOG(LOG_DEBUG, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! NDMP_LOG(LOG_ERR, "Write protected device."); } if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, &reply, "error sending ndmp_mover_listen reply"); --- 604,626 ---- reply.error = NDMP_NO_ERR; if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (!ndmp_valid_v3addr_type(request->addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! syslog(LOG_ERR, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! syslog(LOG_ERR, "Write protected device."); } if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, &reply, "error sending ndmp_mover_listen reply");
*** 656,672 **** reply.data_connection_addr.tcp_ip_v3 = htonl(addr); reply.data_connection_addr.tcp_port_v3 = htons(port); session->ns_mover.md_data_addr.addr_type = NDMP_ADDR_TCP; session->ns_mover.md_data_addr.tcp_ip_v3 = addr; session->ns_mover.md_data_addr.tcp_port_v3 = ntohs(port); ! NDMP_LOG(LOG_DEBUG, "listen_socket: %d", session->ns_mover.md_listen_sock); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type: %d", - request->addr_type); } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_mode = request->mode; session->ns_mover.md_state = NDMP_MOVER_STATE_LISTEN; --- 643,657 ---- reply.data_connection_addr.tcp_ip_v3 = htonl(addr); reply.data_connection_addr.tcp_port_v3 = htons(port); session->ns_mover.md_data_addr.addr_type = NDMP_ADDR_TCP; session->ns_mover.md_data_addr.tcp_ip_v3 = addr; session->ns_mover.md_data_addr.tcp_port_v3 = ntohs(port); ! syslog(LOG_DEBUG, "listen_socket: %d", session->ns_mover.md_listen_sock); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_mode = request->mode; session->ns_mover.md_state = NDMP_MOVER_STATE_LISTEN;
*** 699,718 **** int ret; (void) memset((void*)&reply, 0, sizeof (reply)); if (session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_continue reply"); return; } if (session->ns_protocol_version == NDMPV4 && !session->ns_mover.md_pre_cond) { ! NDMP_LOG(LOG_DEBUG, "Precondition check"); reply.error = NDMP_PRECONDITION_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_continue reply"); return; } --- 684,702 ---- int ret; (void) memset((void*)&reply, 0, sizeof (reply)); if (session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED) { reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_continue reply"); return; } if (session->ns_protocol_version == NDMPV4 && !session->ns_mover.md_pre_cond) { ! syslog(LOG_DEBUG, "Precondition check"); reply.error = NDMP_PRECONDITION_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_continue reply"); return; }
*** 751,761 **** /* * This should not happen because we should be in the * right window. This means that DMA does not follow * the V3 spec. */ - NDMP_LOG(LOG_DEBUG, "DMA Error."); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } } --- 735,744 ----
*** 793,803 **** ndmp_mover_abort_reply reply; ndmpd_session_t *session = ndmp_get_client_data(connection); if (session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE || session->ns_mover.md_state == NDMP_MOVER_STATE_HALTED) { - NDMP_LOG(LOG_DEBUG, "Invalid state"); reply.error = NDMP_ILLEGAL_STATE_ERR; ndmp_send_reply(connection, (void *) &reply, "sending mover_abort reply"); return; --- 776,785 ----
*** 841,865 **** */ if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE && session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN && session->ns_mover.md_state != NDMP_MOVER_STATE_PAUSED) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid state %d", - session->ns_mover.md_state); } else if (session->ns_mover.md_record_size == 0) { if (session->ns_protocol_version == NDMPV4) reply.error = NDMP_PRECONDITION_ERR; else reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid record size 0"); } else reply.error = NDMP_NO_ERR; if (quad_to_long_long(request->length) == 0) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid window size %d", - quad_to_long_long(request->length)); } if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply, "sending mover_set_window_v3 reply"); --- 823,842 ----
*** 922,943 **** (void) memset((void*)&reply, 0, sizeof (reply)); if (session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE || session->ns_mover.md_mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid state"); } else if (session->ns_mover.md_bytes_left_to_read != 0) { reply.error = NDMP_READ_IN_PROGRESS_ERR; - NDMP_LOG(LOG_DEBUG, "In progress"); } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! NDMP_LOG(LOG_DEBUG, "Tape device is not open"); } else if (quad_to_long_long(request->length) == 0 || (quad_to_long_long(request->length) == MAX_WINDOW_SIZE && quad_to_long_long(request->offset) != 0)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Illegal args"); } else { reply.error = NDMP_NO_ERR; } ndmp_send_reply(connection, (void *) &reply, --- 899,917 ---- (void) memset((void*)&reply, 0, sizeof (reply)); if (session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE || session->ns_mover.md_mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_mover.md_bytes_left_to_read != 0) { reply.error = NDMP_READ_IN_PROGRESS_ERR; } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! syslog(LOG_ERR, "Tape device is not open"); } else if (quad_to_long_long(request->length) == 0 || (quad_to_long_long(request->length) == MAX_WINDOW_SIZE && quad_to_long_long(request->offset) != 0)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else { reply.error = NDMP_NO_ERR; } ndmp_send_reply(connection, (void *) &reply,
*** 993,1012 **** request = (ndmp_mover_set_record_size_request *) body; if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid mover state %d", - session->ns_mover.md_state); } else if (request->len > (unsigned int)ndmp_max_mover_recsize) { reply.error = NDMP_ILLEGAL_ARGS_ERR; ! NDMP_LOG(LOG_DEBUG, ! "Invalid argument %d, should be > 0 and <= %d", ! request->len, ndmp_max_mover_recsize); ! } else if (request->len == session->ns_mover.md_record_size) reply.error = NDMP_NO_ERR; ! else if (!(cp = realloc(session->ns_mover.md_buf, request->len))) { reply.error = NDMP_NO_MEM_ERR; } else { reply.error = NDMP_NO_ERR; session->ns_mover.md_buf = cp; session->ns_mover.md_record_size = request->len; --- 967,982 ---- request = (ndmp_mover_set_record_size_request *) body; if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (request->len > (unsigned int)ndmp_max_mover_recsize) { reply.error = NDMP_ILLEGAL_ARGS_ERR; ! } else if (request->len == session->ns_mover.md_record_size) { reply.error = NDMP_NO_ERR; ! session->ns_mover.md_pre_cond = TRUE; ! } else if (!(cp = realloc(session->ns_mover.md_buf, request->len))) { reply.error = NDMP_NO_MEM_ERR; } else { reply.error = NDMP_NO_ERR; session->ns_mover.md_buf = cp; session->ns_mover.md_record_size = request->len;
*** 1043,1068 **** (void) memset((void*)&reply, 0, sizeof (reply)); if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid mode %d", request->mode); } else if (!ndmp_valid_v3addr_type(request->addr.addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr.addr_type); } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid state %d: mover is not idle", - session->ns_mover.md_state); } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! NDMP_LOG(LOG_DEBUG, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_WRITE_PROTECT_ERR; ! NDMP_LOG(LOG_ERR, "Write protected device."); } else reply.error = NDMP_NO_ERR; if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply, --- 1013,1033 ---- (void) memset((void*)&reply, 0, sizeof (reply)); if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (!ndmp_valid_v3addr_type(request->addr.addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! syslog(LOG_ERR, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_WRITE_PROTECT_ERR; ! syslog(LOG_ERR, "Write protected device."); } else reply.error = NDMP_NO_ERR; if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply,
*** 1076,1087 **** * Verify that the data server is listening for a * local connection. */ if (session->ns_data.dd_state != NDMP_DATA_STATE_LISTEN || session->ns_data.dd_listen_sock != -1) { - NDMP_LOG(LOG_DEBUG, - "Data server is not in local listen state"); reply.error = NDMP_ILLEGAL_STATE_ERR; } else session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; break; --- 1041,1050 ----
*** 1090,1101 **** request->addr.tcp_ip_v3, request->addr.tcp_port_v3); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr.addr_type); } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_data_addr.addr_type = request->addr.addr_type; --- 1053,1062 ----
*** 1194,1226 **** reply.error = NDMP_NO_ERR; if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid mode %d", request->mode); } else if (!ndmp_valid_v3addr_type(request->addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr_type); } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, - "Invalid mover state to process listen request"); } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, - "Invalid data state to process listen request"); } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! NDMP_LOG(LOG_DEBUG, "No tape device open"); } else if (session->ns_mover.md_record_size == 0) { reply.error = NDMP_PRECONDITION_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid record size 0"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! NDMP_LOG(LOG_ERR, "Write protected device."); } if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply, "error sending ndmp_mover_listen reply"); --- 1155,1179 ---- reply.error = NDMP_NO_ERR; if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (!ndmp_valid_v3addr_type(request->addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_data.dd_state != NDMP_DATA_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! syslog(LOG_ERR, "No tape device open"); } else if (session->ns_mover.md_record_size == 0) { reply.error = NDMP_PRECONDITION_ERR; } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! syslog(LOG_ERR, "Write protected device."); } if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply, "error sending ndmp_mover_listen reply");
*** 1253,1269 **** /* For compatibility with V3 */ session->ns_mover.md_data_addr.addr_type = NDMP_ADDR_TCP; session->ns_mover.md_data_addr.tcp_ip_v3 = addr; session->ns_mover.md_data_addr.tcp_port_v3 = ntohs(port); ! NDMP_LOG(LOG_DEBUG, "listen_socket: %d", session->ns_mover.md_listen_sock); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type: %d", - request->addr_type); } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_mode = request->mode; session->ns_mover.md_state = NDMP_MOVER_STATE_LISTEN; --- 1206,1220 ---- /* For compatibility with V3 */ session->ns_mover.md_data_addr.addr_type = NDMP_ADDR_TCP; session->ns_mover.md_data_addr.tcp_ip_v3 = addr; session->ns_mover.md_data_addr.tcp_port_v3 = ntohs(port); ! syslog(LOG_DEBUG, "listen_socket: %d", session->ns_mover.md_listen_sock); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_mode = request->mode; session->ns_mover.md_state = NDMP_MOVER_STATE_LISTEN;
*** 1297,1325 **** (void) memset((void*)&reply, 0, sizeof (reply)); if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid mode %d", request->mode); } else if (!ndmp_valid_v3addr_type(request->addr.addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr.addr_type); } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid state %d: mover is not idle", - session->ns_mover.md_state); } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! NDMP_LOG(LOG_DEBUG, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! NDMP_LOG(LOG_ERR, "Write protected device."); } else if (session->ns_mover.md_record_size == 0) { reply.error = NDMP_PRECONDITION_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid record size 0"); } else reply.error = NDMP_NO_ERR; if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply, --- 1248,1270 ---- (void) memset((void*)&reply, 0, sizeof (reply)); if (request->mode != NDMP_MOVER_MODE_READ && request->mode != NDMP_MOVER_MODE_WRITE) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (!ndmp_valid_v3addr_type(request->addr.addr_type)) { reply.error = NDMP_ILLEGAL_ARGS_ERR; } else if (session->ns_mover.md_state != NDMP_MOVER_STATE_IDLE) { reply.error = NDMP_ILLEGAL_STATE_ERR; } else if (session->ns_tape.td_fd == -1) { reply.error = NDMP_DEV_NOT_OPEN_ERR; ! syslog(LOG_ERR, "No tape device open"); } else if (request->mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { reply.error = NDMP_PERMISSION_ERR; ! syslog(LOG_ERR, "Write protected device."); } else if (session->ns_mover.md_record_size == 0) { reply.error = NDMP_PRECONDITION_ERR; } else reply.error = NDMP_NO_ERR; if (reply.error != NDMP_NO_ERR) { ndmp_send_reply(connection, (void *) &reply,
*** 1333,1344 **** * Verify that the data server is listening for a * local connection. */ if (session->ns_data.dd_state != NDMP_DATA_STATE_LISTEN || session->ns_data.dd_listen_sock != -1) { - NDMP_LOG(LOG_DEBUG, - "Data server is not in local listen state"); reply.error = NDMP_ILLEGAL_STATE_ERR; } else session->ns_data.dd_state = NDMP_DATA_STATE_CONNECTED; break; --- 1278,1287 ----
*** 1347,1358 **** request->addr.tcp_ip_v4(0), request->addr.tcp_port_v4(0)); break; default: reply.error = NDMP_ILLEGAL_ARGS_ERR; - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - request->addr.addr_type); } if (reply.error == NDMP_NO_ERR) { session->ns_mover.md_data_addr.addr_type = request->addr.addr_type; --- 1290,1299 ----
*** 1509,1519 **** session->ns_data.dd_abort == TRUE) return (-1); if ((n = write(session->ns_data.dd_sock, &data[count], length - count)) < 0) { ! NDMP_LOG(LOG_ERR, "Socket write error: %m."); return (-1); } count += n; } --- 1450,1460 ---- session->ns_data.dd_abort == TRUE) return (-1); if ((n = write(session->ns_data.dd_sock, &data[count], length - count)) < 0) { ! syslog(LOG_ERR, "Socket write error: %m."); return (-1); } count += n; }
*** 1584,1595 **** long_long_to_quad(session->ns_mover.md_position); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *) &pause_request, 0) < 0) { - NDMP_LOG(LOG_DEBUG, - "Sending notify_mover_paused request"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return (-1); } /* --- 1525,1534 ----
*** 1671,1682 **** return (n == 0) ? (1) : (-1); } session->ns_mover.md_w_index = n; session->ns_mover.md_r_index = 0; - NDMP_LOG(LOG_DEBUG, "n: %d", n); - /* * Discard data if the current data stream position is * prior to the seek position. This is necessary if a seek * request set the seek pointer to a position that is not a * record boundary. The seek request handler can only position --- 1610,1619 ----
*** 1751,1762 **** long_long_to_quad(session->ns_data.dd_read_length); if (ndmp_send_request_lock(session->ns_connection, NDMP_NOTIFY_DATA_READ, NDMP_NO_ERR, (void *) &request, 0) < 0) { - NDMP_LOG(LOG_DEBUG, - "Sending notify_data_read request"); return (-1); } } if (session->ns_eof == TRUE || session->ns_data.dd_abort == TRUE) --- 1688,1697 ----
*** 1779,1793 **** * Don't attempt to read more data than the remote is sending. */ if (len > session->ns_mover.md_bytes_left_to_read) len = session->ns_mover.md_bytes_left_to_read; - NDMP_LOG(LOG_DEBUG, "len: %u", len); - if ((n = read(session->ns_data.dd_sock, &data[count], len)) < 0) { ! NDMP_LOG(LOG_ERR, "Socket read error: %m."); return (-1); } /* read returns 0 if the connection was closed */ if (n == 0) return (-1); --- 1714,1726 ---- * Don't attempt to read more data than the remote is sending. */ if (len > session->ns_mover.md_bytes_left_to_read) len = session->ns_mover.md_bytes_left_to_read; if ((n = read(session->ns_data.dd_sock, &data[count], len)) < 0) { ! syslog(LOG_ERR, "Socket read error: %m."); return (-1); } /* read returns 0 if the connection was closed */ if (n == 0) return (-1);
*** 1869,1888 **** if ((nlp = ndmp_get_nlp(session)) == NULL) return; (void) mutex_lock(&nlp->nlp_mtx); if (session->ns_mover.md_listen_sock != -1) { - NDMP_LOG(LOG_DEBUG, "mover.listen_sock: %d", - session->ns_mover.md_listen_sock); (void) ndmpd_remove_file_handler(session, session->ns_mover.md_listen_sock); (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; } if (session->ns_mover.md_sock != -1) { - NDMP_LOG(LOG_DEBUG, "mover.sock: %d", - session->ns_mover.md_sock); (void) ndmpd_remove_file_handler(session, session->ns_mover.md_sock); (void) close(session->ns_mover.md_sock); session->ns_mover.md_sock = -1; } --- 1802,1817 ----
*** 1946,2010 **** session->ns_data.dd_sock = session->ns_mover.md_sock; return (NDMP_NO_ERR); } ! NDMP_LOG(LOG_DEBUG, "addr: %u port: %u", mover->ndmp_mover_addr_u.addr.ip_addr, (ulong_t)sin.sin_port); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ! NDMP_LOG(LOG_DEBUG, "Socket error: %m"); return (NDMP_IO_ERR); } if (connect(sock, (struct sockaddr *)&sin, sizeof (sin)) < 0) { ! NDMP_LOG(LOG_DEBUG, "Connect error: %m"); (void) close(sock); return (NDMP_IO_ERR); } set_socket_options(sock); } else { if ((session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE) || (session->ns_mover.md_sock == -1)) { ! NDMP_LOG(LOG_DEBUG, "Not in active state mover" ! " state = %d or Invalid mover sock=%d", session->ns_mover.md_state, session->ns_mover.md_sock); return (NDMP_ILLEGAL_STATE_ERR); } sock = session->ns_mover.md_sock; ! NDMP_LOG(LOG_DEBUG, "session: 0x%x setting data sock fd: %d to be" " same as listen_sock", session, sock); } - NDMP_LOG(LOG_DEBUG, "sock fd: %d", sock); - session->ns_data.dd_sock = sock; - NDMP_LOG(LOG_DEBUG, "data.mover_sock: %u", sock); - return (NDMP_NO_ERR); } /* Local mover connection. */ if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN) { - NDMP_LOG(LOG_DEBUG, "Mover is not in listen state"); return (NDMP_ILLEGAL_STATE_ERR); } if (session->ns_tape.td_fd == -1) { ! NDMP_LOG(LOG_DEBUG, "Tape device not open"); return (NDMP_DEV_NOT_OPEN_ERR); } if (mover_mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { ! NDMP_LOG(LOG_ERR, "Write protected device."); return (NDMP_WRITE_PROTECT_ERR); } session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; session->ns_mover.md_mode = mover_mode; --- 1875,1934 ---- session->ns_data.dd_sock = session->ns_mover.md_sock; return (NDMP_NO_ERR); } ! syslog(LOG_DEBUG, "addr: %u port: %u", mover->ndmp_mover_addr_u.addr.ip_addr, (ulong_t)sin.sin_port); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ! syslog(LOG_ERR, "Socket error: %m"); return (NDMP_IO_ERR); } if (connect(sock, (struct sockaddr *)&sin, sizeof (sin)) < 0) { ! syslog(LOG_ERR, "Connect error: %m"); (void) close(sock); return (NDMP_IO_ERR); } set_socket_options(sock); } else { if ((session->ns_mover.md_state != NDMP_MOVER_STATE_ACTIVE) || (session->ns_mover.md_sock == -1)) { ! syslog(LOG_DEBUG, "Not in active state mover" ! " state = %d or Illegal mover sock=%d", session->ns_mover.md_state, session->ns_mover.md_sock); return (NDMP_ILLEGAL_STATE_ERR); } sock = session->ns_mover.md_sock; ! syslog(LOG_DEBUG, "session: 0x%x setting data sock fd: %d to be" " same as listen_sock", session, sock); } session->ns_data.dd_sock = sock; return (NDMP_NO_ERR); } /* Local mover connection. */ if (session->ns_mover.md_state != NDMP_MOVER_STATE_LISTEN) { return (NDMP_ILLEGAL_STATE_ERR); } if (session->ns_tape.td_fd == -1) { ! syslog(LOG_ERR, "Tape device not open"); return (NDMP_DEV_NOT_OPEN_ERR); } if (mover_mode == NDMP_MOVER_MODE_READ && session->ns_tape.td_mode == NDMP_TAPE_READ_MODE) { ! syslog(LOG_ERR, "Write protected device."); return (NDMP_WRITE_PROTECT_ERR); } session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; session->ns_mover.md_mode = mover_mode;
*** 2056,2067 **** if (session->ns_mover.md_seek_position < session->ns_mover.md_window_offset || session->ns_mover.md_seek_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { - NDMP_LOG(LOG_DEBUG, "MOVER_PAUSE_SEEK(%llu)", - session->ns_mover.md_seek_position); session->ns_mover.md_w_index = 0; session->ns_mover.md_r_index = 0; session->ns_mover.md_state = NDMP_MOVER_STATE_PAUSED; --- 1980,1989 ----
*** 2070,2081 **** pause_request.seek_position = long_long_to_quad(offset); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *) &pause_request, 0) < 0) { - NDMP_LOG(LOG_DEBUG, - "Sending notify_mover_paused request"); return (-1); } return (1); } /* --- 1992,2001 ----
*** 2099,2113 **** */ if (offset >= buf_position && offset < tape_position) { session->ns_mover.md_position = offset; session->ns_mover.md_r_index = session->ns_mover.md_position - buf_position; - - NDMP_LOG(LOG_DEBUG, "pos %llu r_index %u", - session->ns_mover.md_position, - session->ns_mover.md_r_index); - return (0); } ctlcmd = 0; if (tape_position > session->ns_mover.md_seek_position) { --- 2019,2028 ----
*** 2128,2148 **** session->ns_mover.md_record_size)) * (u_longlong_t)session->ns_mover.md_record_size); } /* Reposition the tape if necessary. */ if (ctlcmd) { - NDMP_LOG(LOG_DEBUG, "cmd %d count %d", - ctlcmd, ctlcnt); (void) ndmp_mtioctl(session->ns_tape.td_fd, ctlcmd, ctlcnt); } session->ns_mover.md_position = tape_position; session->ns_mover.md_r_index = 0; session->ns_mover.md_w_index = 0; - NDMP_LOG(LOG_DEBUG, "pos %llu", session->ns_mover.md_position); - return (0); } /* ** static functions ************************************************** */ --- 2043,2059 ----
*** 2179,2189 **** (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; return (-1); } - NDMP_LOG(LOG_DEBUG, "addr: 0x%x, port: %d", *addr, *port); return (0); } /* * accept_connection --- 2090,2099 ----
*** 2215,2249 **** (void) ndmpd_remove_file_handler(session, fd); (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; if (session->ns_mover.md_sock < 0) { ! NDMP_LOG(LOG_DEBUG, "Accept error: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_ERROR); return; } set_socket_options(session->ns_mover.md_sock); - NDMP_LOG(LOG_DEBUG, "sock fd: %d", session->ns_mover.md_sock); - if (session->ns_mover.md_mode == NDMP_MOVER_MODE_READ) { if (start_mover_for_backup(session) < 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! NDMP_LOG(LOG_DEBUG, "Backup connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } else { ! NDMP_LOG(LOG_DEBUG, "Restore connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } - NDMP_LOG(LOG_DEBUG, "Received connection"); - session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; } /* * tape_read --- 2125,2155 ---- (void) ndmpd_remove_file_handler(session, fd); (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; if (session->ns_mover.md_sock < 0) { ! syslog(LOG_ERR, "Accept error: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_ERROR); return; } set_socket_options(session->ns_mover.md_sock); if (session->ns_mover.md_mode == NDMP_MOVER_MODE_READ) { if (start_mover_for_backup(session) < 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! syslog(LOG_DEBUG, "Backup connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } else { ! syslog(LOG_DEBUG, "Restore connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; } /* * tape_read
*** 2267,2277 **** int count = session->ns_mover.md_record_size; for (; ; ) { n = read(session->ns_tape.td_fd, data, count); if (n < 0) { ! NDMP_LOG(LOG_ERR, "Tape read error: %m."); return (TAPE_READ_ERR); } NS_ADD(rtape, n); if (n == 0) { --- 2173,2183 ---- int count = session->ns_mover.md_record_size; for (; ; ) { n = read(session->ns_tape.td_fd, data, count); if (n < 0) { ! syslog(LOG_ERR, "Tape read error: %m."); return (TAPE_READ_ERR); } NS_ADD(rtape, n); if (n == 0) {
*** 2286,2296 **** */ NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of tape reached. Load next tape"); ! NDMP_LOG(LOG_DEBUG, "End of tape reached. Load next tape"); err = change_tape(session); /* Operation aborted or connection terminated? */ --- 2192,2202 ---- */ NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of tape reached. Load next tape"); ! syslog(LOG_DEBUG, "End of tape reached. Load next tape"); err = change_tape(session); /* Operation aborted or connection terminated? */
*** 2351,2368 **** session->ns_mover.md_pause_reason = NDMP_MOVER_PAUSE_EOF; request.reason = session->ns_mover.md_pause_reason; request.seek_position = long_long_to_quad(0LL); ! NDMP_LOG(LOG_DEBUG, "ndmp_send_request: MOVER_PAUSED, reason: %d", session->ns_mover.md_pause_reason); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *) &request, 0) < 0) { - NDMP_LOG(LOG_DEBUG, - "Sending notify_mover_paused request"); return (-1); } /* * Wait for until the state is changed by * an abort or continue request. --- 2257,2272 ---- session->ns_mover.md_pause_reason = NDMP_MOVER_PAUSE_EOF; request.reason = session->ns_mover.md_pause_reason; request.seek_position = long_long_to_quad(0LL); ! syslog(LOG_DEBUG, "ndmp_send_request: MOVER_PAUSED, reason: %d", session->ns_mover.md_pause_reason); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *) &request, 0) < 0) { return (-1); } /* * Wait for until the state is changed by * an abort or continue request.
*** 2395,2405 **** return (-1); /* Read and discard the data. */ n = read(session->ns_mover.md_sock, addr, length); if (n < 0) { ! NDMP_LOG(LOG_ERR, "Socket read error: %m."); free(addr); return (-1); } free(addr); --- 2299,2309 ---- return (-1); /* Read and discard the data. */ n = read(session->ns_mover.md_sock, addr, length); if (n < 0) { ! syslog(LOG_ERR, "Socket read error: %m."); free(addr); return (-1); } free(addr);
*** 2438,2471 **** if (session->ns_mover.md_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { ndmp_notify_mover_paused_request pause_request; - NDMP_LOG(LOG_DEBUG, "end of mover window"); - session->ns_mover.md_state = NDMP_MOVER_STATE_PAUSED; session->ns_mover.md_pause_reason = NDMP_MOVER_PAUSE_SEEK; pause_request.reason = NDMP_MOVER_PAUSE_SEEK; pause_request.seek_position = long_long_to_quad(session->ns_mover.md_position); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *) &pause_request, 0) < 0) { - NDMP_LOG(LOG_DEBUG, - "Sending notify_mover_paused request"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } buf->tb_errno = EIO; return (TAPE_READ_ERR); } n = tape_read(session, buf->tb_buffer_data); - NDMP_LOG(LOG_DEBUG, "read %d bytes from tape", n); - if (n <= 0) { if (n < 0) ndmpd_mover_error(session, (n == 0 ? NDMP_MOVER_HALT_ABORTED : NDMP_MOVER_HALT_INTERNAL_ERROR)); --- 2342,2369 ----
*** 2513,2523 **** tlm_buffers_t *bufs; tlm_cmd_t *lcmd; /* Local command */ tlm_commands_t *cmds; /* Commands structure */ if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; lcmd = cmds->tcs_command; --- 2411,2420 ----
*** 2535,2569 **** while (cmds->tcs_reader == TLM_RESTORE_RUN && lcmd->tc_reader == TLM_RESTORE_RUN) { buf = tlm_buffer_in_buf(bufs, NULL); if (buf->tb_full) { ! NDMP_LOG(LOG_DEBUG, "R%d", bidx); /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); } else { ! NDMP_LOG(LOG_DEBUG, "r%d", bidx); rv = mover_tape_read_one_buf(session, buf); /* * If there was an error while reading, such as * end of stream. */ if (rv < 0) { ! NDMP_LOG(LOG_DEBUG, "Exiting, rv: %d", rv); break; } /* * Can we do more buffering? */ if (is_buffer_erroneous(buf)) { ! NDMP_LOG(LOG_DEBUG, "Exiting, errno: %d, eot: %d, eof: %d", buf->tb_errno, buf->tb_eot, buf->tb_eof); break; } --- 2432,2466 ---- while (cmds->tcs_reader == TLM_RESTORE_RUN && lcmd->tc_reader == TLM_RESTORE_RUN) { buf = tlm_buffer_in_buf(bufs, NULL); if (buf->tb_full) { ! syslog(LOG_DEBUG, "R%d", bidx); /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); } else { ! syslog(LOG_DEBUG, "r%d", bidx); rv = mover_tape_read_one_buf(session, buf); /* * If there was an error while reading, such as * end of stream. */ if (rv < 0) { ! syslog(LOG_DEBUG, "Exiting, rv: %d", rv); break; } /* * Can we do more buffering? */ if (is_buffer_erroneous(buf)) { ! syslog(LOG_DEBUG, "Exiting, errno: %d, eot: %d, eof: %d", buf->tb_errno, buf->tb_eot, buf->tb_eof); break; }
*** 2607,2620 **** /* Write the data to the data connection. */ errno = 0; n = write(session->ns_mover.md_sock, buf->tb_buffer_data, buf->tb_buffer_size); - NDMP_LOG(LOG_DEBUG, "n: %d, len: %d", n, buf->tb_buffer_size); - if (n < 0) { - NDMP_LOG(LOG_DEBUG, "n: %d, errno: %m", n); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); return (-1); } session->ns_mover.md_position += n; --- 2504,2514 ----
*** 2626,2636 **** * then remove the file handler to prevent this * function from getting called. The next mover_read request * will reinstall the handler. */ if (session->ns_mover.md_bytes_left_to_read == 0) { - NDMP_LOG(LOG_DEBUG, "bytes_left_to_read == 0"); (void) ndmpd_remove_file_handler(session, session->ns_mover.md_sock); return (-1); } --- 2520,2529 ----
*** 2661,2671 **** tlm_buffers_t *bufs; tlm_cmd_t *lcmd; /* Local command */ tlm_commands_t *cmds; /* Commands structure */ if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; lcmd = cmds->tcs_command; --- 2554,2563 ----
*** 2683,2722 **** while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { buf = &bufs->tbs_buffer[bidx]; if (buf->tb_full) { ! NDMP_LOG(LOG_DEBUG, "w%d", bidx); if (mover_socket_write_one_buf(session, buf) < 0) { - NDMP_LOG(LOG_DEBUG, - "mover_socket_write_one_buf() < 0"); break; } (void) tlm_buffer_advance_out_idx(bufs); tlm_buffer_release_out_buf(bufs); bidx = bufs->tbs_buffer_out; } else { if (lcmd->tc_writer != TLM_RESTORE_RUN) { /* No more data is coming, time to exit */ - NDMP_LOG(LOG_DEBUG, "Time to exit"); break; } ! NDMP_LOG(LOG_DEBUG, "W%d", bidx); /* * The buffer is not full, wait for the producer * thread to fill it. */ tlm_buffer_in_buf_timed_wait(bufs, 100); } } if (cmds->tcs_writer == (int)TLM_ABORT) ! NDMP_LOG(LOG_DEBUG, "cmds->tcs_writer == (int)TLM_ABORT"); if (lcmd->tc_writer == (int)TLM_ABORT) ! NDMP_LOG(LOG_DEBUG, "lcmd->tc_writer == TLM_ABORT"); /* If the producer is waiting for us, wake it up. */ tlm_buffer_release_out_buf(bufs); /* --- 2575,2611 ---- while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { buf = &bufs->tbs_buffer[bidx]; if (buf->tb_full) { ! syslog(LOG_DEBUG, "w%d", bidx); if (mover_socket_write_one_buf(session, buf) < 0) { break; } (void) tlm_buffer_advance_out_idx(bufs); tlm_buffer_release_out_buf(bufs); bidx = bufs->tbs_buffer_out; } else { if (lcmd->tc_writer != TLM_RESTORE_RUN) { /* No more data is coming, time to exit */ break; } ! syslog(LOG_DEBUG, "W%d", bidx); /* * The buffer is not full, wait for the producer * thread to fill it. */ tlm_buffer_in_buf_timed_wait(bufs, 100); } } if (cmds->tcs_writer == (int)TLM_ABORT) ! syslog(LOG_DEBUG, "cmds->tcs_writer == (int)TLM_ABORT"); if (lcmd->tc_writer == (int)TLM_ABORT) ! syslog(LOG_DEBUG, "lcmd->tc_writer == TLM_ABORT"); /* If the producer is waiting for us, wake it up. */ tlm_buffer_release_out_buf(bufs); /*
*** 2749,2759 **** tlm_commands_t *cmds; long xfer_size; int rc; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; (void) memset(cmds, 0, sizeof (*cmds)); --- 2638,2647 ----
*** 2774,2794 **** */ rc = pthread_create(NULL, NULL, (funct_t)mover_tape_reader, session); if (rc == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_TAPE_READER); } else { - NDMP_LOG(LOG_DEBUG, "Launch mover_tape_reader: %s", - strerror(rc)); return (-1); } rc = pthread_create(NULL, NULL, (funct_t)mover_socket_writer, session); if (rc == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_SOCK_WRITER); } else { - NDMP_LOG(LOG_DEBUG, "Launch mover_socket_writer: %s", - strerror(rc)); return (-1); } tlm_release_reader_writer_ipc(cmds->tcs_command); return (0); --- 2662,2678 ----
*** 2818,2843 **** long toread; tlm_buffer_mark_empty(buf); for (index = 0, toread = read_size; toread > 0; ) { errno = 0; - NDMP_LOG(LOG_DEBUG, "index: %d, toread: %d", index, toread); - n = read(session->ns_mover.md_sock, &buf->tb_buffer_data[index], toread); if (n == 0) { - NDMP_LOG(LOG_DEBUG, "n: %d", n); break; } else if (n > 0) { - NDMP_LOG(LOG_DEBUG, "n: %d", n); index += n; toread -= n; } else { buf->tb_eof = TRUE; buf->tb_errno = errno; buf->tb_buffer_size = 0; - NDMP_LOG(LOG_DEBUG, "n: %d, errno: %m", n); return (-1); } } if (index > 0) { --- 2702,2722 ----
*** 2849,2859 **** } else { buf->tb_eof = TRUE; buf->tb_buffer_size = 0; } ! NDMP_LOG(LOG_DEBUG, "full: %d, eot: %d, eof: %d," " errno: %d, size: %d, data: 0x%x", buf->tb_full, buf->tb_eot, buf->tb_eof, buf->tb_errno, buf->tb_buffer_size, buf->tb_buffer_data); return (0); --- 2728,2738 ---- } else { buf->tb_eof = TRUE; buf->tb_buffer_size = 0; } ! syslog(LOG_DEBUG, "full: %d, eot: %d, eof: %d," " errno: %d, size: %d, data: 0x%x", buf->tb_full, buf->tb_eot, buf->tb_eof, buf->tb_errno, buf->tb_buffer_size, buf->tb_buffer_data); return (0);
*** 2884,2894 **** tlm_cmd_t *lcmd; /* Local command */ tlm_commands_t *cmds; /* Commands structure */ static int nr = 0; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; lcmd = cmds->tcs_command; --- 2763,2772 ----
*** 2906,2932 **** while (cmds->tcs_reader == TLM_BACKUP_RUN && lcmd->tc_reader == TLM_BACKUP_RUN) { buf = &bufs->tbs_buffer[bidx]; if (buf->tb_full) { ! NDMP_LOG(LOG_DEBUG, "R%d", bidx); /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); } else { ! NDMP_LOG(LOG_DEBUG, "r%d, nr: %d", bidx, ++nr); (void) mover_socket_read_one_buf(session, buf, bufs->tbs_data_transfer_size); /* * Can we do more buffering? */ if (is_buffer_erroneous(buf)) { ! NDMP_LOG(LOG_DEBUG, "Exiting, errno: %d, eot: %d, eof: %d", buf->tb_errno, buf->tb_eot, buf->tb_eof); break; } --- 2784,2810 ---- while (cmds->tcs_reader == TLM_BACKUP_RUN && lcmd->tc_reader == TLM_BACKUP_RUN) { buf = &bufs->tbs_buffer[bidx]; if (buf->tb_full) { ! syslog(LOG_DEBUG, "R%d", bidx); /* * The buffer is still full, wait for the consumer * thread to use it. */ tlm_buffer_out_buf_timed_wait(bufs, 100); } else { ! syslog(LOG_DEBUG, "r%d, nr: %d", bidx, ++nr); (void) mover_socket_read_one_buf(session, buf, bufs->tbs_data_transfer_size); /* * Can we do more buffering? */ if (is_buffer_erroneous(buf)) { ! syslog(LOG_DEBUG, "Exiting, errno: %d, eot: %d, eof: %d", buf->tb_errno, buf->tb_eot, buf->tb_eof); break; }
*** 2935,2948 **** bidx = bufs->tbs_buffer_in; } } if (cmds->tcs_reader != TLM_BACKUP_RUN) ! NDMP_LOG(LOG_DEBUG, "cmds->tcs_reader != TLM_BACKUP_RUN"); if (lcmd->tc_reader != TLM_BACKUP_RUN) ! NDMP_LOG(LOG_DEBUG, "lcmd->tc_reader != TLM_BACKUP_RUN"); ! NDMP_LOG(LOG_DEBUG, "nr: %d", nr); /* If the consumer is waiting for us, wake it up. */ tlm_buffer_release_in_buf(bufs); /* --- 2813,2826 ---- bidx = bufs->tbs_buffer_in; } } if (cmds->tcs_reader != TLM_BACKUP_RUN) ! syslog(LOG_DEBUG, "cmds->tcs_reader != TLM_BACKUP_RUN"); if (lcmd->tc_reader != TLM_BACKUP_RUN) ! syslog(LOG_DEBUG, "lcmd->tc_reader != TLM_BACKUP_RUN"); ! syslog(LOG_DEBUG, "nr: %d", nr); /* If the consumer is waiting for us, wake it up. */ tlm_buffer_release_in_buf(bufs); /*
*** 2972,3001 **** static int mover_tape_write_one_buf(ndmpd_session_t *session, tlm_buffer_t *buf) { int n; ! NDMP_LOG(LOG_DEBUG, "full: %d, eot: %d, eof: %d," " errno: %d, size: %d, data: 0x%x", buf->tb_full, buf->tb_eot, buf->tb_eof, buf->tb_errno, buf->tb_buffer_size, buf->tb_buffer_data); n = mover_tape_write_v3(session, buf->tb_buffer_data, buf->tb_buffer_size); - NDMP_LOG(LOG_DEBUG, "n: %d", n); - if (n <= 0) { ndmpd_mover_error(session, (n == 0 ? NDMP_MOVER_HALT_ABORTED : NDMP_MOVER_HALT_INTERNAL_ERROR)); return (-1); } session->ns_mover.md_position += n; session->ns_mover.md_data_written += n; session->ns_mover.md_record_num++; - NDMP_LOG(LOG_DEBUG, "Calling tlm_buffer_mark_empty(buf)"); tlm_buffer_mark_empty(buf); return (0); } --- 2850,2876 ---- static int mover_tape_write_one_buf(ndmpd_session_t *session, tlm_buffer_t *buf) { int n; ! syslog(LOG_DEBUG, "full: %d, eot: %d, eof: %d," " errno: %d, size: %d, data: 0x%x", buf->tb_full, buf->tb_eot, buf->tb_eof, buf->tb_errno, buf->tb_buffer_size, buf->tb_buffer_data); n = mover_tape_write_v3(session, buf->tb_buffer_data, buf->tb_buffer_size); if (n <= 0) { ndmpd_mover_error(session, (n == 0 ? NDMP_MOVER_HALT_ABORTED : NDMP_MOVER_HALT_INTERNAL_ERROR)); return (-1); } session->ns_mover.md_position += n; session->ns_mover.md_data_written += n; session->ns_mover.md_record_num++; tlm_buffer_mark_empty(buf); return (0); }
*** 3024,3034 **** tlm_cmd_t *lcmd; tlm_commands_t *cmds; static int nw = 0; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; lcmd = cmds->tcs_command; --- 2899,2908 ----
*** 3045,3058 **** bidx = bufs->tbs_buffer_out; buf = &bufs->tbs_buffer[bidx]; while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { if (buf->tb_full) { ! NDMP_LOG(LOG_DEBUG, "w%d, nw: %d", bidx, ++nw); if (mover_tape_write_one_buf(session, buf) < 0) { ! NDMP_LOG(LOG_DEBUG, "mover_tape_write_one_buf() failed"); break; } (void) tlm_buffer_advance_out_idx(bufs); --- 2919,2932 ---- bidx = bufs->tbs_buffer_out; buf = &bufs->tbs_buffer[bidx]; while (cmds->tcs_writer != (int)TLM_ABORT && lcmd->tc_writer != (int)TLM_ABORT) { if (buf->tb_full) { ! syslog(LOG_DEBUG, "w%d, nw: %d", bidx, ++nw); if (mover_tape_write_one_buf(session, buf) < 0) { ! syslog(LOG_DEBUG, "mover_tape_write_one_buf() failed"); break; } (void) tlm_buffer_advance_out_idx(bufs);
*** 3060,3091 **** bidx = bufs->tbs_buffer_out; buf = &bufs->tbs_buffer[bidx]; } else { if (lcmd->tc_writer != TLM_BACKUP_RUN) { /* No more data is coming, time to exit */ - NDMP_LOG(LOG_DEBUG, "Time to exit"); break; } ! NDMP_LOG(LOG_DEBUG, "W%d", bidx); /* * The buffer is not full, wait for the producer * thread to fill it. */ tlm_buffer_in_buf_timed_wait(bufs, 100); } } if (cmds->tcs_writer == (int)TLM_ABORT) ! NDMP_LOG(LOG_DEBUG, "cmds->tcs_writer == TLM_ABORT"); if (lcmd->tc_writer == (int)TLM_ABORT) ! NDMP_LOG(LOG_DEBUG, "lcmd->tc_writer == TLM_ABORT"); ! NDMP_LOG(LOG_DEBUG, "nw: %d", nw); if (buf->tb_errno == 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); } else { - NDMP_LOG(LOG_DEBUG, "buf->tb_errno: %d", buf->tb_errno); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } /* If the producer is waiting for us, wake it up. */ tlm_buffer_release_out_buf(bufs); --- 2934,2962 ---- bidx = bufs->tbs_buffer_out; buf = &bufs->tbs_buffer[bidx]; } else { if (lcmd->tc_writer != TLM_BACKUP_RUN) { /* No more data is coming, time to exit */ break; } ! syslog(LOG_DEBUG, "W%d", bidx); /* * The buffer is not full, wait for the producer * thread to fill it. */ tlm_buffer_in_buf_timed_wait(bufs, 100); } } if (cmds->tcs_writer == (int)TLM_ABORT) ! syslog(LOG_DEBUG, "cmds->tcs_writer == TLM_ABORT"); if (lcmd->tc_writer == (int)TLM_ABORT) ! syslog(LOG_DEBUG, "lcmd->tc_writer == TLM_ABORT"); if (buf->tb_errno == 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); } else { ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } /* If the producer is waiting for us, wake it up. */ tlm_buffer_release_out_buf(bufs);
*** 3120,3130 **** ndmp_lbr_params_t *nlp; tlm_commands_t *cmds; int rc; if ((nlp = ndmp_get_nlp(session)) == NULL) { - NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } cmds = &nlp->nlp_cmds; (void) memset(cmds, 0, sizeof (*cmds)); --- 2991,3000 ----
*** 3145,3165 **** */ rc = pthread_create(NULL, NULL, (funct_t)mover_socket_reader, session); if (rc == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_SOCK_READER); } else { - NDMP_LOG(LOG_DEBUG, "Launch mover_socket_reader: %s", - strerror(rc)); return (-1); } rc = pthread_create(NULL, NULL, (funct_t)mover_tape_writer, session); if (rc == 0) { tlm_cmd_wait(cmds->tcs_command, TLM_TAPE_WRITER); } else { - NDMP_LOG(LOG_DEBUG, "Launch mover_tape_writer: %s", - strerror(rc)); return (-1); } tlm_release_reader_writer_ipc(cmds->tcs_command); return (0); --- 3015,3031 ----
*** 3314,3331 **** session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE)) return; if (session->ns_protocol_version == NDMPV4) { if (ndmpd_mover_error_send_v4(session, reason) < 0) ! NDMP_LOG(LOG_DEBUG, "Error sending notify_mover_halted request"); } else { /* No media error in V3 */ if (reason == NDMP_MOVER_HALT_MEDIA_ERROR) reason = NDMP_MOVER_HALT_INTERNAL_ERROR; if (ndmpd_mover_error_send(session, reason) < 0) ! NDMP_LOG(LOG_DEBUG, "Error sending notify_mover_halted request"); } (void) mutex_lock(&nlp->nlp_mtx); if (session->ns_mover.md_listen_sock != -1) { --- 3180,3197 ---- session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE)) return; if (session->ns_protocol_version == NDMPV4) { if (ndmpd_mover_error_send_v4(session, reason) < 0) ! syslog(LOG_ERR, "Error sending notify_mover_halted request"); } else { /* No media error in V3 */ if (reason == NDMP_MOVER_HALT_MEDIA_ERROR) reason = NDMP_MOVER_HALT_INTERNAL_ERROR; if (ndmpd_mover_error_send(session, reason) < 0) ! syslog(LOG_ERR, "Error sending notify_mover_halted request"); } (void) mutex_lock(&nlp->nlp_mtx); if (session->ns_mover.md_listen_sock != -1) {
*** 3379,3389 **** request.seek_position = long_long_to_quad(session->ns_mover.md_position); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *)&request, 0) < 0) { ! NDMP_LOG(LOG_DEBUG, "Error sending notify_mover_paused_request"); return (-1); } /* --- 3245,3255 ---- request.seek_position = long_long_to_quad(session->ns_mover.md_position); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *)&request, 0) < 0) { ! syslog(LOG_ERR, "Error sending notify_mover_paused_request"); return (-1); } /*
*** 3422,3433 **** } else { if (session->ns_mover.md_data_addr.addr_type == NDMP_ADDR_LOCAL) { rv = ndmp_wait_for_mover(session); } else { - NDMP_LOG(LOG_DEBUG, "Invalid address type %d", - session->ns_mover.md_data_addr.addr_type); rv = -1; } } return (rv); --- 3288,3297 ----
*** 3460,3480 **** * Enforce mover window on write. */ if (session->ns_mover.md_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { ! NDMP_LOG(LOG_DEBUG, "MOVER_PAUSE_EOW"); if (mover_pause_v3(session, NDMP_MOVER_PAUSE_EOW) < 0) /* Operation aborted or connection terminated */ return (-1); } n = write(session->ns_tape.td_fd, data, count); if (n < 0) { ! NDMP_LOG(LOG_ERR, "Tape write error: %m."); return (-1); } else if (n > 0) { NS_ADD(wtape, n); count -= n; data += n; --- 3324,3344 ---- * Enforce mover window on write. */ if (session->ns_mover.md_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { ! syslog(LOG_DEBUG, "MOVER_PAUSE_EOW"); if (mover_pause_v3(session, NDMP_MOVER_PAUSE_EOW) < 0) /* Operation aborted or connection terminated */ return (-1); } n = write(session->ns_tape.td_fd, data, count); if (n < 0) { ! syslog(LOG_ERR, "Tape write error: %m."); return (-1); } else if (n > 0) { NS_ADD(wtape, n); count -= n; data += n;
*** 3485,3495 **** if (count > 0) { struct mtget mtstatus; (void) ioctl(session->ns_tape.td_fd, MTIOCGET, &mtstatus); ! NDMP_LOG(LOG_DEBUG, "EOM detected (%d written bytes, " "mover record %d, file #%d, block #%d)", n, session->ns_tape.td_record_count, mtstatus.mt_fileno, mtstatus.mt_blkno); /* --- 3349,3359 ---- if (count > 0) { struct mtget mtstatus; (void) ioctl(session->ns_tape.td_fd, MTIOCGET, &mtstatus); ! syslog(LOG_DEBUG, "EOM detected (%d written bytes, " "mover record %d, file #%d, block #%d)", n, session->ns_tape.td_record_count, mtstatus.mt_fileno, mtstatus.mt_blkno); /*
*** 3538,3548 **** session->ns_mover.md_record_size - session->ns_mover.md_w_index); n = mover_tape_write_v3(session, session->ns_mover.md_buf, session->ns_mover.md_record_size); if (n < 0) { ! NDMP_LOG(LOG_ERR, "Tape write error: %m."); return (-1); } session->ns_mover.md_w_index = 0; session->ns_mover.md_position += n; --- 3402,3412 ---- session->ns_mover.md_record_size - session->ns_mover.md_w_index); n = mover_tape_write_v3(session, session->ns_mover.md_buf, session->ns_mover.md_record_size); if (n < 0) { ! syslog(LOG_ERR, "Tape write error: %m."); return (-1); } session->ns_mover.md_w_index = 0; session->ns_mover.md_position += n;
*** 3573,3583 **** ulong_t len; if (session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE || session->ns_mover.md_state == NDMP_MOVER_STATE_LISTEN || session->ns_mover.md_state == NDMP_MOVER_STATE_HALTED) { - NDMP_LOG(LOG_DEBUG, "Invalid mover state to write data"); return (-1); } /* * A length of 0 indicates that any buffered data should be --- 3437,3446 ----
*** 3701,3721 **** * is available to be read, a return of zero indicates the * connection has been closed. */ if (n <= 0) { if (n == 0) { ! NDMP_LOG(LOG_DEBUG, "Data connection closed"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); } else { /* Socket is non-blocking, perhaps there are no data */ if (errno == EAGAIN) { ! NDMP_LOG(LOG_ERR, "No data to read"); return; } ! NDMP_LOG(LOG_ERR, "Failed to read from socket: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } /* Save the index since mover_tape_flush_v3 resets it. */ --- 3564,3585 ---- * is available to be read, a return of zero indicates the * connection has been closed. */ if (n <= 0) { if (n == 0) { ! syslog(LOG_DEBUG, "Data connection closed"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); } else { /* Socket is non-blocking, perhaps there are no data */ if (errno == EAGAIN) { ! syslog(LOG_DEBUG, "No data to read"); return; } ! syslog(LOG_ERR, ! "Failed to read from socket %d: %m", fd); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } /* Save the index since mover_tape_flush_v3 resets it. */
*** 3728,3739 **** } return; } - NDMP_LOG(LOG_DEBUG, "n %d", n); - session->ns_mover.md_w_index += n; if (session->ns_mover.md_w_index == session->ns_mover.md_record_size) { n = mover_tape_write_v3(session, session->ns_mover.md_buf, session->ns_mover.md_record_size); --- 3592,3601 ----
*** 3783,3793 **** /* * If at beginning of file and read fails with EIO, * then it's repeated attempt to read at EOT. */ if (errno == EIO && tape_is_at_bof(session)) { - NDMP_LOG(LOG_DEBUG, "Repeated read at EOT"); pause_reason = NDMP_MOVER_PAUSE_EOM; NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of tape reached. Load next tape"); } --- 3645,3654 ----
*** 3794,3811 **** /* * According to NDMPv4 spec preferred error code when * trying to read from blank tape is NDMP_EOM_ERR. */ else if (errno == EIO && tape_is_at_bot(session)) { ! NDMP_LOG(LOG_ERR, "Blank tape detected, returning EOM"); NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "Blank tape. Load another tape"); pause_reason = NDMP_MOVER_PAUSE_EOM; } else { ! NDMP_LOG(LOG_ERR, "Tape read error: %m."); return (TAPE_READ_ERR); } } else if (n > 0) { NS_ADD(rtape, n); data += n; --- 3655,3672 ---- /* * According to NDMPv4 spec preferred error code when * trying to read from blank tape is NDMP_EOM_ERR. */ else if (errno == EIO && tape_is_at_bot(session)) { ! syslog(LOG_ERR, "Blank tape detected, returning EOM"); NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "Blank tape. Load another tape"); pause_reason = NDMP_MOVER_PAUSE_EOM; } else { ! syslog(LOG_ERR, "Tape read error: %m."); return (TAPE_READ_ERR); } } else if (n > 0) { NS_ADD(rtape, n); data += n;
*** 3820,3835 **** * wait for the client to either abort the data * operation or continue the operation after changing * the tape. */ if (tape_is_at_bof(session)) { ! NDMP_LOG(LOG_DEBUG, "EOT detected"); pause_reason = NDMP_MOVER_PAUSE_EOM; NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of medium reached"); } else { ! NDMP_LOG(LOG_DEBUG, "EOF detected"); /* reposition the tape to BOT side of FM */ fm_dance(session); pause_reason = NDMP_MOVER_PAUSE_EOF; NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of file reached."); --- 3681,3696 ---- * wait for the client to either abort the data * operation or continue the operation after changing * the tape. */ if (tape_is_at_bof(session)) { ! syslog(LOG_DEBUG, "EOT detected"); pause_reason = NDMP_MOVER_PAUSE_EOM; NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of medium reached"); } else { ! syslog(LOG_DEBUG, "EOF detected"); /* reposition the tape to BOT side of FM */ fm_dance(session); pause_reason = NDMP_MOVER_PAUSE_EOF; NDMP_APILOG((void*)session, NDMP_LOG_NORMAL, ++ndmp_log_msg_id, "End of file reached.");
*** 3883,3893 **** * being called. The handler will be reinstalled in * ndmpd_mover_continue. */ if (session->ns_mover.md_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { ! NDMP_LOG(LOG_DEBUG, "MOVER_PAUSE_SEEK(%llu)", session->ns_mover.md_position); session->ns_mover.md_w_index = 0; session->ns_mover.md_r_index = 0; --- 3744,3754 ---- * being called. The handler will be reinstalled in * ndmpd_mover_continue. */ if (session->ns_mover.md_position >= session->ns_mover.md_window_offset + session->ns_mover.md_window_length) { ! syslog(LOG_DEBUG, "MOVER_PAUSE_SEEK(%llu)", session->ns_mover.md_position); session->ns_mover.md_w_index = 0; session->ns_mover.md_r_index = 0;
*** 3902,3912 **** (void) ndmpd_remove_file_handler(session, fd); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *)&pause_request, 0) < 0) { ! NDMP_LOG(LOG_DEBUG, "Sending notify_mover_paused request"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } return; --- 3763,3773 ---- (void) ndmpd_remove_file_handler(session, fd); if (ndmp_send_request(session->ns_connection, NDMP_NOTIFY_MOVER_PAUSED, NDMP_NO_ERR, (void *)&pause_request, 0) < 0) { ! syslog(LOG_DEBUG, "Sending notify_mover_paused request"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); } return;
*** 3916,3926 **** * Read more data into the tape buffer if the buffer is empty. */ if (session->ns_mover.md_w_index == 0) { n = mover_tape_read_v3(session, session->ns_mover.md_buf); ! NDMP_LOG(LOG_DEBUG, "read %u bytes from tape", n); if (n <= 0) { ndmpd_mover_error(session, (n == 0 ? NDMP_MOVER_HALT_ABORTED --- 3777,3787 ---- * Read more data into the tape buffer if the buffer is empty. */ if (session->ns_mover.md_w_index == 0) { n = mover_tape_read_v3(session, session->ns_mover.md_buf); ! syslog(LOG_DEBUG, "read %u bytes from tape", n); if (n <= 0) { ndmpd_mover_error(session, (n == 0 ? NDMP_MOVER_HALT_ABORTED
*** 3964,3985 **** session->ns_mover.md_window_length - session->ns_mover.md_position; else wlen = session->ns_mover.md_bytes_left_to_read; - NDMP_LOG(LOG_DEBUG, "wlen window restrictions: %llu", wlen); - /* * Now limit the length to the amount of data in the buffer. */ if (wlen > session->ns_mover.md_w_index - session->ns_mover.md_r_index) wlen = session->ns_mover.md_w_index - session->ns_mover.md_r_index; len = wlen & 0xffffffff; - NDMP_LOG(LOG_DEBUG, - "buffer restrictions: wlen %llu len %u", wlen, len); /* * Write the data to the data connection. */ n = write(session->ns_mover.md_sock, --- 3825,3842 ----
*** 3986,4005 **** &session->ns_mover.md_buf[session->ns_mover.md_r_index], len); if (n < 0) { /* Socket is non-blocking, perhaps the write queue is full */ if (errno == EAGAIN) { ! NDMP_LOG(LOG_ERR, "Cannot write to socket"); return; } ! NDMP_LOG(LOG_ERR, "Failed to write to socket: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); return; } ! NDMP_LOG(LOG_DEBUG, ! "wrote %u of %u bytes to data connection position %llu r_index %lu", n, len, session->ns_mover.md_position, session->ns_mover.md_r_index); session->ns_mover.md_r_index += n; session->ns_mover.md_position += n; --- 3843,3862 ---- &session->ns_mover.md_buf[session->ns_mover.md_r_index], len); if (n < 0) { /* Socket is non-blocking, perhaps the write queue is full */ if (errno == EAGAIN) { ! syslog(LOG_ERR, "Cannot write to socket"); return; } ! syslog(LOG_ERR, "Failed to write to socket: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_CLOSED); return; } ! syslog(LOG_DEBUG, ! "wrote %u of %u bytes to data connection position %lu r_index %lu", n, len, session->ns_mover.md_position, session->ns_mover.md_r_index); session->ns_mover.md_r_index += n; session->ns_mover.md_position += n;
*** 4051,4069 **** from_len = sizeof (from); session->ns_mover.md_sock = accept(fd, (struct sockaddr *)&from, &from_len); ! NDMP_LOG(LOG_DEBUG, "sin: port %d addr %s", ntohs(from.sin_port), inet_ntoa(IN_ADDR(from.sin_addr.s_addr))); (void) ndmpd_remove_file_handler(session, fd); (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; if (session->ns_mover.md_sock < 0) { ! NDMP_LOG(LOG_DEBUG, "Accept error: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_ERROR); return; } /* --- 3908,3926 ---- from_len = sizeof (from); session->ns_mover.md_sock = accept(fd, (struct sockaddr *)&from, &from_len); ! syslog(LOG_DEBUG, "sin: port %d addr %s", ntohs(from.sin_port), inet_ntoa(IN_ADDR(from.sin_addr.s_addr))); (void) ndmpd_remove_file_handler(session, fd); (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; if (session->ns_mover.md_sock < 0) { ! syslog(LOG_DEBUG, "Accept error: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_ERROR); return; } /*
*** 4080,4110 **** * which reads/writes data to md_sock socket. IO on socket must be * non-blocking, otherwise ndmpd would be unable to process other * incoming requests. */ if (!set_socket_nonblock(session->ns_mover.md_sock)) { ! NDMP_LOG(LOG_ERR, "Could not set non-blocking mode " "on socket: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! NDMP_LOG(LOG_DEBUG, "sock fd: %d", session->ns_mover.md_sock); if (session->ns_mover.md_mode == NDMP_MOVER_MODE_READ) { if (ndmpd_add_file_handler(session, (void*)session, session->ns_mover.md_sock, NDMPD_SELECT_MODE_READ, HC_MOVER, mover_data_read_v3) < 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! NDMP_LOG(LOG_DEBUG, "Backup connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } else { ! NDMP_LOG(LOG_DEBUG, "Restore connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE; --- 3937,3967 ---- * which reads/writes data to md_sock socket. IO on socket must be * non-blocking, otherwise ndmpd would be unable to process other * incoming requests. */ if (!set_socket_nonblock(session->ns_mover.md_sock)) { ! syslog(LOG_ERR, "Could not set non-blocking mode " "on socket: %m"); ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! syslog(LOG_DEBUG, "sock fd: %d", session->ns_mover.md_sock); if (session->ns_mover.md_mode == NDMP_MOVER_MODE_READ) { if (ndmpd_add_file_handler(session, (void*)session, session->ns_mover.md_sock, NDMPD_SELECT_MODE_READ, HC_MOVER, mover_data_read_v3) < 0) { ndmpd_mover_error(session, NDMP_MOVER_HALT_INTERNAL_ERROR); return; } ! syslog(LOG_DEBUG, "Backup connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } else { ! syslog(LOG_DEBUG, "Restore connection established by %s:%d", inet_ntoa(IN_ADDR(from.sin_addr.s_addr)), ntohs(from.sin_port)); } session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE;
*** 4142,4152 **** accept_connection_v3) < 0) { (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; return (-1); } ! NDMP_LOG(LOG_DEBUG, "IP %s port %d", inet_ntoa(*(struct in_addr *)addr), ntohs(*port)); return (0); } --- 3999,4009 ---- accept_connection_v3) < 0) { (void) close(session->ns_mover.md_listen_sock); session->ns_mover.md_listen_sock = -1; return (-1); } ! syslog(LOG_DEBUG, "IP %s port %d", inet_ntoa(*(struct in_addr *)addr), ntohs(*port)); return (0); }
*** 4179,4189 **** * which reads/writes data to md_sock socket. IO on socket must be * non-blocking, otherwise ndmpd would be unable to process other * incoming requests. */ if (!set_socket_nonblock(sock)) { ! NDMP_LOG(LOG_ERR, "Could not set non-blocking mode " "on socket: %m"); (void) close(sock); return (NDMP_CONNECT_ERR); } --- 4036,4046 ---- * which reads/writes data to md_sock socket. IO on socket must be * non-blocking, otherwise ndmpd would be unable to process other * incoming requests. */ if (!set_socket_nonblock(sock)) { ! syslog(LOG_ERR, "Could not set non-blocking mode " "on socket: %m"); (void) close(sock); return (NDMP_CONNECT_ERR); }
*** 4227,4237 **** count = 0; if (session->ns_mover.md_state == NDMP_MOVER_STATE_IDLE || session->ns_mover.md_state == NDMP_MOVER_STATE_LISTEN || session->ns_mover.md_state == NDMP_MOVER_STATE_HALTED) { - NDMP_LOG(LOG_DEBUG, "Invalid mover state to read data"); return (-1); } /* * Automatically increase the seek window if necessary. --- 4084,4093 ----
*** 4350,4361 **** session->ns_mover.md_w_index = n; session->ns_mover.md_r_index = 0; session->ns_mover.md_record_num++; - NDMP_LOG(LOG_DEBUG, "n: %d", n); - /* * Discard data if the current data stream position is * prior to the seek position. This is necessary if a seek * request set the seek pointer to a position that is not a * record boundary. The seek request handler can only position --- 4206,4215 ----