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,16 +35,17 @@
* 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. */
+/* 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,11 +185,10 @@
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;
}
@@ -243,11 +243,10 @@
{
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;
@@ -278,11 +277,10 @@
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;
@@ -315,11 +313,10 @@
{
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;
@@ -368,16 +365,14 @@
*/
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",
+ 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,18 +415,17 @@
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");
+ 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,11 +472,10 @@
{
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;
@@ -511,10 +504,11 @@
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,30 +604,23 @@
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");
+ 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;
- NDMP_LOG(LOG_ERR, "Write protected device.");
+ syslog(LOG_ERR, "Write protected device.");
}
if (reply.error != NDMP_NO_ERR) {
ndmp_send_reply(connection, &reply,
"error sending ndmp_mover_listen reply");
@@ -656,17 +643,15 @@
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",
+ syslog(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;
@@ -699,20 +684,19 @@
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");
+ syslog(LOG_DEBUG, "Precondition check");
reply.error = NDMP_PRECONDITION_ERR;
ndmp_send_reply(connection, (void *) &reply,
"sending mover_continue reply");
return;
}
@@ -751,11 +735,10 @@
/*
* 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;
}
}
@@ -793,11 +776,10 @@
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;
@@ -841,25 +823,20 @@
*/
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");
@@ -922,22 +899,19 @@
(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");
+ 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;
- NDMP_LOG(LOG_DEBUG, "Illegal args");
} else {
reply.error = NDMP_NO_ERR;
}
ndmp_send_reply(connection, (void *) &reply,
@@ -993,20 +967,16 @@
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)
+ } 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))) {
+ 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,26 +1013,21 @@
(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");
+ 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;
- NDMP_LOG(LOG_ERR, "Write protected device.");
+ 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,12 +1041,10 @@
* 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;
@@ -1090,12 +1053,10 @@
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;
@@ -1194,33 +1155,25 @@
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");
+ syslog(LOG_ERR, "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.");
+ 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,17 +1206,15 @@
/* 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",
+ syslog(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;
@@ -1297,29 +1248,23 @@
(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");
+ 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;
- NDMP_LOG(LOG_ERR, "Write protected device.");
+ syslog(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,
@@ -1333,12 +1278,10 @@
* 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;
@@ -1347,12 +1290,10 @@
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;
@@ -1509,11 +1450,11 @@
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.");
+ syslog(LOG_ERR, "Socket write error: %m.");
return (-1);
}
count += n;
}
@@ -1584,12 +1525,10 @@
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);
}
/*
@@ -1671,12 +1610,10 @@
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
@@ -1751,12 +1688,10 @@
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)
@@ -1779,15 +1714,13 @@
* 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.");
+ syslog(LOG_ERR, "Socket read error: %m.");
return (-1);
}
/* read returns 0 if the connection was closed */
if (n == 0)
return (-1);
@@ -1869,20 +1802,16 @@
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;
}
@@ -1946,65 +1875,60 @@
session->ns_data.dd_sock =
session->ns_mover.md_sock;
return (NDMP_NO_ERR);
}
- NDMP_LOG(LOG_DEBUG, "addr: %u port: %u",
+ 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) {
- NDMP_LOG(LOG_DEBUG, "Socket error: %m");
+ syslog(LOG_ERR, "Socket error: %m");
return (NDMP_IO_ERR);
}
if (connect(sock, (struct sockaddr *)&sin,
sizeof (sin)) < 0) {
- NDMP_LOG(LOG_DEBUG, "Connect error: %m");
+ 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)) {
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"Not in active state mover"
- " state = %d or Invalid mover sock=%d",
+ " 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;
- NDMP_LOG(LOG_DEBUG,
+ syslog(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");
+ 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) {
- NDMP_LOG(LOG_ERR, "Write protected device.");
+ 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,12 +1980,10 @@
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;
@@ -2070,12 +1992,10 @@
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);
}
/*
@@ -2099,15 +2019,10 @@
*/
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) {
@@ -2128,21 +2043,17 @@
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 ************************************************** */
@@ -2179,11 +2090,10 @@
(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
@@ -2215,35 +2125,31 @@
(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");
+ syslog(LOG_ERR, "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",
+ syslog(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",
+ syslog(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
@@ -2267,11 +2173,11 @@
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.");
+ syslog(LOG_ERR, "Tape read error: %m.");
return (TAPE_READ_ERR);
}
NS_ADD(rtape, n);
if (n == 0) {
@@ -2286,11 +2192,11 @@
*/
NDMP_APILOG((void*)session, NDMP_LOG_NORMAL,
++ndmp_log_msg_id,
"End of tape reached. Load next tape");
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"End of tape reached. Load next tape");
err = change_tape(session);
/* Operation aborted or connection terminated? */
@@ -2351,18 +2257,16 @@
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",
+ 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) {
- NDMP_LOG(LOG_DEBUG,
- "Sending notify_mover_paused request");
return (-1);
}
/*
* Wait for until the state is changed by
* an abort or continue request.
@@ -2395,11 +2299,11 @@
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.");
+ syslog(LOG_ERR, "Socket read error: %m.");
free(addr);
return (-1);
}
free(addr);
@@ -2438,34 +2342,28 @@
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));
@@ -2513,11 +2411,10 @@
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;
@@ -2535,35 +2432,35 @@
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);
+ 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 {
- NDMP_LOG(LOG_DEBUG, "r%d", bidx);
+ 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) {
- NDMP_LOG(LOG_DEBUG, "Exiting, rv: %d", rv);
+ syslog(LOG_DEBUG, "Exiting, rv: %d", rv);
break;
}
/*
* Can we do more buffering?
*/
if (is_buffer_erroneous(buf)) {
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"Exiting, errno: %d, eot: %d, eof: %d",
buf->tb_errno, buf->tb_eot, buf->tb_eof);
break;
}
@@ -2607,14 +2504,11 @@
/* 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;
@@ -2626,11 +2520,10 @@
* 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);
}
@@ -2661,11 +2554,10 @@
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;
@@ -2683,40 +2575,37 @@
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);
+ syslog(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);
+ 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)
- NDMP_LOG(LOG_DEBUG, "cmds->tcs_writer == (int)TLM_ABORT");
+ syslog(LOG_DEBUG, "cmds->tcs_writer == (int)TLM_ABORT");
if (lcmd->tc_writer == (int)TLM_ABORT)
- NDMP_LOG(LOG_DEBUG, "lcmd->tc_writer == 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,11 +2638,10 @@
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));
@@ -2774,21 +2662,17 @@
*/
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);
@@ -2818,26 +2702,21 @@
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) {
@@ -2849,11 +2728,11 @@
} else {
buf->tb_eof = TRUE;
buf->tb_buffer_size = 0;
}
- NDMP_LOG(LOG_DEBUG, "full: %d, eot: %d, eof: %d,"
+ 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,11 +2763,10 @@
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;
@@ -2906,27 +2784,27 @@
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);
+ 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 {
- NDMP_LOG(LOG_DEBUG, "r%d, nr: %d", bidx, ++nr);
+ 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)) {
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"Exiting, errno: %d, eot: %d, eof: %d",
buf->tb_errno, buf->tb_eot, buf->tb_eof);
break;
}
@@ -2935,14 +2813,14 @@
bidx = bufs->tbs_buffer_in;
}
}
if (cmds->tcs_reader != TLM_BACKUP_RUN)
- NDMP_LOG(LOG_DEBUG, "cmds->tcs_reader != TLM_BACKUP_RUN");
+ syslog(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);
+ 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,30 +2850,27 @@
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,"
+ 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);
- 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);
}
@@ -3024,11 +2899,10 @@
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;
@@ -3045,14 +2919,14 @@
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);
+ syslog(LOG_DEBUG, "w%d, nw: %d", bidx, ++nw);
if (mover_tape_write_one_buf(session, buf) < 0) {
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_DEBUG,
"mover_tape_write_one_buf() failed");
break;
}
(void) tlm_buffer_advance_out_idx(bufs);
@@ -3060,32 +2934,29 @@
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);
+ 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)
- NDMP_LOG(LOG_DEBUG, "cmds->tcs_writer == TLM_ABORT");
+ syslog(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);
+ syslog(LOG_DEBUG, "lcmd->tc_writer == TLM_ABORT");
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);
@@ -3120,11 +2991,10 @@
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));
@@ -3145,21 +3015,17 @@
*/
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);
@@ -3314,18 +3180,18 @@
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,
+ 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)
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_ERR,
"Error sending notify_mover_halted request");
}
(void) mutex_lock(&nlp->nlp_mtx);
if (session->ns_mover.md_listen_sock != -1) {
@@ -3379,11 +3245,11 @@
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,
+ syslog(LOG_ERR,
"Error sending notify_mover_paused_request");
return (-1);
}
/*
@@ -3422,12 +3288,10 @@
} 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);
@@ -3460,21 +3324,21 @@
* 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");
+ 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) {
- NDMP_LOG(LOG_ERR, "Tape write error: %m.");
+ syslog(LOG_ERR, "Tape write error: %m.");
return (-1);
} else if (n > 0) {
NS_ADD(wtape, n);
count -= n;
data += n;
@@ -3485,11 +3349,11 @@
if (count > 0) {
struct mtget mtstatus;
(void) ioctl(session->ns_tape.td_fd, MTIOCGET,
&mtstatus);
- NDMP_LOG(LOG_DEBUG, "EOM detected (%d written bytes, "
+ 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,11 +3402,11 @@
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.");
+ syslog(LOG_ERR, "Tape write error: %m.");
return (-1);
}
session->ns_mover.md_w_index = 0;
session->ns_mover.md_position += n;
@@ -3573,11 +3437,10 @@
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
@@ -3701,21 +3564,22 @@
* 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");
+ 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) {
- NDMP_LOG(LOG_ERR, "No data to read");
+ syslog(LOG_DEBUG, "No data to read");
return;
}
- NDMP_LOG(LOG_ERR, "Failed to read from socket: %m");
+ 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,12 +3592,10 @@
}
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);
@@ -3783,11 +3645,10 @@
/*
* 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");
}
@@ -3794,18 +3655,18 @@
/*
* 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,
+ 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 {
- NDMP_LOG(LOG_ERR, "Tape read error: %m.");
+ syslog(LOG_ERR, "Tape read error: %m.");
return (TAPE_READ_ERR);
}
} else if (n > 0) {
NS_ADD(rtape, n);
data += n;
@@ -3820,16 +3681,16 @@
* 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");
+ 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 {
- NDMP_LOG(LOG_DEBUG, "EOF detected");
+ 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,11 +3744,11 @@
* 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,
+ 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,11 +3763,11 @@
(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,
+ syslog(LOG_DEBUG,
"Sending notify_mover_paused request");
ndmpd_mover_error(session,
NDMP_MOVER_HALT_INTERNAL_ERROR);
}
return;
@@ -3916,11 +3777,11 @@
* 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,
+ syslog(LOG_DEBUG,
"read %u bytes from tape", n);
if (n <= 0) {
ndmpd_mover_error(session, (n == 0 ?
NDMP_MOVER_HALT_ABORTED
@@ -3964,22 +3825,18 @@
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,
@@ -3986,20 +3843,20 @@
&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");
+ syslog(LOG_ERR, "Cannot write to socket");
return;
}
- NDMP_LOG(LOG_ERR, "Failed to write to socket: %m");
+ syslog(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",
+ 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,19 +3908,19 @@
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),
+ 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) {
- NDMP_LOG(LOG_DEBUG, "Accept error: %m");
+ syslog(LOG_DEBUG, "Accept error: %m");
ndmpd_mover_error(session, NDMP_MOVER_HALT_CONNECT_ERROR);
return;
}
/*
@@ -4080,31 +3937,31 @@
* 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 "
+ syslog(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);
+ 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;
}
- NDMP_LOG(LOG_DEBUG, "Backup connection established by %s:%d",
+ syslog(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",
+ 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,11 +3999,11 @@
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",
+ syslog(LOG_DEBUG, "IP %s port %d",
inet_ntoa(*(struct in_addr *)addr), ntohs(*port));
return (0);
}
@@ -4179,11 +4036,11 @@
* 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 "
+ syslog(LOG_ERR, "Could not set non-blocking mode "
"on socket: %m");
(void) close(sock);
return (NDMP_CONNECT_ERR);
}
@@ -4227,11 +4084,10 @@
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.
@@ -4350,12 +4206,10 @@
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