Print this page
NEX-9532 NDMP: readdir errors when file/directory has special characters
Reviewed by: Peer Dampmann <peer.dampmann@nexenta.com>
Reviewed by: Alexander Eremin <alexander.eremin@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@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
*** 36,47 ****
--- 36,49 ----
* 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/types.h>
+ #include <syslog.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include "ndmpd_common.h"
*** 101,111 ****
{
ndmp_scsi_close_reply reply;
ndmpd_session_t *session = ndmp_get_client_data(connection);
if (session->ns_scsi.sd_is_open == -1) {
! NDMP_LOG(LOG_ERR, "SCSI device is not open.");
reply.error = NDMP_DEV_NOT_OPEN_ERR;
ndmp_send_reply(connection, (void *) &reply,
"sending scsi_close reply");
return;
}
--- 103,113 ----
{
ndmp_scsi_close_reply reply;
ndmpd_session_t *session = ndmp_get_client_data(connection);
if (session->ns_scsi.sd_is_open == -1) {
! syslog(LOG_ERR, "SCSI device is not open.");
reply.error = NDMP_DEV_NOT_OPEN_ERR;
ndmp_send_reply(connection, (void *) &reply,
"sending scsi_close reply");
return;
}
*** 224,243 ****
ndmpd_session_t *session = ndmp_get_client_data(connection);
struct uscsi_cmd cmd;
if (session->ns_scsi.sd_devid == -1) {
! NDMP_LOG(LOG_ERR, "SCSI device is not open.");
reply.error = NDMP_DEV_NOT_OPEN_ERR;
} else {
reply.error = NDMP_NO_ERR;
(void) memset((void*)&cmd, 0, sizeof (cmd));
cmd.uscsi_flags |= USCSI_RESET;
if (ioctl(session->ns_scsi.sd_devid, USCSICMD, &cmd) < 0) {
! NDMP_LOG(LOG_ERR, "USCSI reset failed: %m.");
! NDMP_LOG(LOG_DEBUG,
! "ioctl(USCSICMD) USCSI_RESET failed: %m.");
reply.error = NDMP_IO_ERR;
}
}
ndmp_send_reply(connection, (void *) &reply,
--- 226,243 ----
ndmpd_session_t *session = ndmp_get_client_data(connection);
struct uscsi_cmd cmd;
if (session->ns_scsi.sd_devid == -1) {
! syslog(LOG_ERR, "SCSI device is not open.");
reply.error = NDMP_DEV_NOT_OPEN_ERR;
} else {
reply.error = NDMP_NO_ERR;
(void) memset((void*)&cmd, 0, sizeof (cmd));
cmd.uscsi_flags |= USCSI_RESET;
if (ioctl(session->ns_scsi.sd_devid, USCSICMD, &cmd) < 0) {
! syslog(LOG_ERR, "USCSI reset failed: %m.");
reply.error = NDMP_IO_ERR;
}
}
ndmp_send_reply(connection, (void *) &reply,
*** 263,273 ****
void
ndmpd_scsi_reset_bus_v2(ndmp_connection_t *connection, void *body)
{
ndmp_scsi_reset_bus_reply reply;
- NDMP_LOG(LOG_DEBUG, "request not supported");
reply.error = NDMP_NOT_SUPPORTED_ERR;
ndmp_send_reply(connection, (void *) &reply,
"sending scsi_reset_bus reply");
}
--- 263,272 ----
*** 294,304 ****
if (session->ns_scsi.sd_is_open == -1 ||
!session->ns_scsi.sd_valid_target_set) {
(void) memset((void *) &reply, 0, sizeof (reply));
- NDMP_LOG(LOG_ERR, "SCSI device is not open.");
reply.error = NDMP_DEV_NOT_OPEN_ERR;
ndmp_send_reply(connection, (void *) &reply,
"sending scsi_execute_cdb reply");
} else {
ndmp_execute_cdb(session, session->ns_scsi.sd_adapter_name,
--- 293,302 ----
*** 414,446 ****
ndmpd_session_t *session = ndmp_get_client_data(connection);
char adptnm[SCSI_MAX_NAME];
int sid, lun;
int err;
scsi_adapter_t *sa;
! int devid;
err = NDMP_NO_ERR;
if (session->ns_tape.td_fd != -1 || session->ns_scsi.sd_is_open != -1) {
- NDMP_LOG(LOG_ERR,
- "Session already has a tape or scsi device open.");
err = NDMP_DEVICE_OPENED_ERR;
} else if ((sa = scsi_get_adapter(0)) != NULL) {
- NDMP_LOG(LOG_DEBUG, "Adapter device found: %s", devname);
(void) strlcpy(adptnm, devname, SCSI_MAX_NAME-2);
adptnm[SCSI_MAX_NAME-1] = '\0';
sid = lun = -1;
scsi_find_sid_lun(sa, devname, &sid, &lun);
if (ndmp_open_list_find(devname, sid, lun) == NULL &&
(devid = open(devname, O_RDWR | O_NDELAY)) < 0) {
! NDMP_LOG(LOG_ERR, "Failed to open device %s: %m.",
devname);
err = NDMP_NO_DEVICE_ERR;
}
} else {
! NDMP_LOG(LOG_ERR, "%s: No such SCSI adapter.", devname);
err = NDMP_NO_DEVICE_ERR;
}
if (err != NDMP_NO_ERR) {
scsi_open_send_reply(connection, err);
--- 412,441 ----
ndmpd_session_t *session = ndmp_get_client_data(connection);
char adptnm[SCSI_MAX_NAME];
int sid, lun;
int err;
scsi_adapter_t *sa;
! int devid = -1;
err = NDMP_NO_ERR;
if (session->ns_tape.td_fd != -1 || session->ns_scsi.sd_is_open != -1) {
err = NDMP_DEVICE_OPENED_ERR;
} else if ((sa = scsi_get_adapter(0)) != NULL) {
(void) strlcpy(adptnm, devname, SCSI_MAX_NAME-2);
adptnm[SCSI_MAX_NAME-1] = '\0';
sid = lun = -1;
scsi_find_sid_lun(sa, devname, &sid, &lun);
if (ndmp_open_list_find(devname, sid, lun) == NULL &&
(devid = open(devname, O_RDWR | O_NDELAY)) < 0) {
! syslog(LOG_ERR, "Failed to open device %s: %m.",
devname);
err = NDMP_NO_DEVICE_ERR;
}
} else {
! syslog(LOG_ERR, "%s: No such SCSI adapter.", devname);
err = NDMP_NO_DEVICE_ERR;
}
if (err != NDMP_NO_ERR) {
scsi_open_send_reply(connection, err);
*** 510,527 ****
if (session->ns_scsi.sd_is_open == -1) {
reply.error = NDMP_DEV_NOT_OPEN_ERR;
} else if (!scsi_dev_exists(session->ns_scsi.sd_adapter_name, sid,
lun)) {
! NDMP_LOG(LOG_ERR, "No such SCSI device: target %d lun %d.",
sid, lun);
reply.error = NDMP_NO_DEVICE_ERR;
} else {
type = scsi_get_devtype(session->ns_scsi.sd_adapter_name, sid,
lun);
if (type != DTYPE_SEQUENTIAL && type != DTYPE_CHANGER) {
! NDMP_LOG(LOG_ERR,
"Not a tape or robot device: target %d lun %d.",
sid, lun);
reply.error = NDMP_ILLEGAL_ARGS_ERR;
}
}
--- 505,522 ----
if (session->ns_scsi.sd_is_open == -1) {
reply.error = NDMP_DEV_NOT_OPEN_ERR;
} else if (!scsi_dev_exists(session->ns_scsi.sd_adapter_name, sid,
lun)) {
! syslog(LOG_ERR, "No such SCSI device: target %d lun %d.",
sid, lun);
reply.error = NDMP_NO_DEVICE_ERR;
} else {
type = scsi_get_devtype(session->ns_scsi.sd_adapter_name, sid,
lun);
if (type != DTYPE_SEQUENTIAL && type != DTYPE_CHANGER) {
! syslog(LOG_ERR,
"Not a tape or robot device: target %d lun %d.",
sid, lun);
reply.error = NDMP_ILLEGAL_ARGS_ERR;
}
}
*** 555,565 ****
reply.error = NDMP_IO_ERR;
}
}
if (reply.error == NDMP_NO_ERR) {
- NDMP_LOG(LOG_DEBUG, "Updated sid %d lun %d", sid, lun);
session->ns_scsi.sd_sid = sid;
session->ns_scsi.sd_lun = lun;
session->ns_scsi.sd_valid_target_set = TRUE;
}
--- 550,559 ----