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