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-2911 NDMP logging should use syslog and is too chatty
@@ -34,13 +34,15 @@
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
+/* Copyright 2017 Nexenta Systems, Inc. All rights reserved. */
/* This file contains all the door server code */
+#include <syslog.h>
#include <door.h>
#include <alloca.h>
#include <errno.h>
#include <note.h>
#include <libintl.h>
@@ -66,27 +68,27 @@
int fd;
(void) mutex_lock(&ndmp_doorsrv_mutex);
if (ndmp_door_fildes != -1) {
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_ERR,
"ndmp_door_init: ndmpd service is already running.");
(void) mutex_unlock(&ndmp_doorsrv_mutex);
return (0);
}
if ((ndmp_door_fildes = door_create(ndmp_door_server,
NULL, DOOR_UNREF)) < 0) {
- NDMP_LOG(LOG_DEBUG, "ndmp_door_init: Could not create door.");
+ syslog(LOG_ERR, "ndmp_door_init: Could not create door.");
(void) mutex_unlock(&ndmp_doorsrv_mutex);
return (-1);
}
(void) unlink(NDMP_DOOR_SVC);
if ((fd = creat(NDMP_DOOR_SVC, 0444)) < 0) {
- NDMP_LOG(LOG_DEBUG, "ndmp_door_init: Can't create %s: %m.",
+ syslog(LOG_ERR, "ndmp_door_init: Can't create %s: %m.",
NDMP_DOOR_SVC);
(void) door_revoke(ndmp_door_fildes);
ndmp_door_fildes = -1;
(void) mutex_unlock(&ndmp_doorsrv_mutex);
return (-1);
@@ -94,18 +96,18 @@
(void) close(fd);
(void) fdetach(NDMP_DOOR_SVC);
if (fattach(ndmp_door_fildes, NDMP_DOOR_SVC) < 0) {
- NDMP_LOG(LOG_DEBUG, "ndmp_door_init: fattach failed %m");
+ syslog(LOG_ERR, "ndmp_door_init: fattach failed %m");
(void) door_revoke(ndmp_door_fildes);
ndmp_door_fildes = -1;
(void) mutex_unlock(&ndmp_doorsrv_mutex);
return (-1);
}
- NDMP_LOG(LOG_DEBUG, "ndmp_door_init: Door server successfully started");
+ syslog(LOG_DEBUG, "ndmp_door_init: Door server successfully started");
(void) mutex_unlock(&ndmp_doorsrv_mutex);
return (0);
}
void
@@ -135,11 +137,11 @@
(void) close(door);
return (0);
}
if (info.di_target > 0) {
- NDMP_LOG(LOG_ERR,
+ syslog(LOG_ERR,
"Service already running: pid %ld", info.di_target);
(void) close(door);
return (1);
}
@@ -158,22 +160,22 @@
char *buf;
int buflen;
unsigned int used;
ndmp_door_ctx_t *dec_ctx;
ndmp_door_ctx_t *enc_ctx;
- unsigned int dec_status;
- unsigned int enc_status;
+ unsigned int dec_status = EINVAL;
+ unsigned int enc_status = EINVAL;
dec_ctx = ndmp_door_decode_start(ptr, size);
if (dec_ctx == 0)
return;
req_type = ndmp_door_get_uint32(dec_ctx);
buflen = NDMP_DOOR_SIZE;
if ((buf = alloca(buflen)) == NULL) {
- NDMP_LOG(LOG_DEBUG, "Out of memory.");
+ syslog(LOG_ERR, "Out of memory.");
(void) ndmp_door_decode_finish(dec_ctx);
return;
}
enc_ctx = ndmp_door_encode_start(buf, buflen);
@@ -181,11 +183,11 @@
(void) ndmp_door_decode_finish(dec_ctx);
return;
}
if (req_type != NDMP_GET_STAT)
- NDMP_LOG(LOG_DEBUG, "ndmp_door_server: req_type=%d", req_type);
+ syslog(LOG_DEBUG, "ndmp_door_server: req_type=%d", req_type);
switch (req_type) {
case NDMP_GET_DOOR_STATUS: {
ndmp_door_put_int32(enc_ctx, NDMP_DOOR_SRV_SUCCESS);
break;
@@ -227,11 +229,11 @@
ndmp_door_put_uint64(enc_ctx, ndstat.ns_rtape);
ndmp_door_put_uint64(enc_ctx, ndstat.ns_wtape);
break;
default:
- NDMP_LOG(LOG_DEBUG,
+ syslog(LOG_ERR,
"ndmp_door_server: Invalid request type 0x%x", req_type);
goto decode_error;
}
if ((dec_status = ndmp_door_decode_finish(dec_ctx)) != 0)