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)