]> arthur.barton.de Git - netatalk.git/commitdiff
Added more DEBUG log messages to cnid_dbd, fixed existing ones.
authorlenneis <lenneis>
Wed, 21 Jan 2004 21:28:42 +0000 (21:28 +0000)
committerlenneis <lenneis>
Wed, 21 Jan 2004 21:28:42 +0000 (21:28 +0000)
We now also log dev/ino with DEBUG defined. Fixed minor
issue with dbd_delete always returning CNID_DBD_RES_NOTFOUND.

etc/cnid_dbd/dbd_add.c
etc/cnid_dbd/dbd_delete.c
etc/cnid_dbd/dbd_get.c
etc/cnid_dbd/dbd_lookup.c
etc/cnid_dbd/dbd_resolve.c
etc/cnid_dbd/dbd_update.c
etc/cnid_dbd/pack.c
etc/cnid_dbd/pack.h

index 2359a930bca5806c7d9dc59d5914739b1ff69c1d..f34f20ea1e2fa11c0ffdd24d010bc6ab3624ac4f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_add.c,v 1.1.4.5 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_add.c,v 1.1.4.6 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -175,7 +175,7 @@ int dbd_add(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
     if (rply->result == CNID_DBD_RES_OK) {
         /* Found it. rply->cnid is the correct CNID now. */
 #ifdef DEBUG
-        LOG(log_info, logtype_cnid, "dbd_add: Looked up did %u, name %s as %u", ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
+        LOG(log_info, logtype_cnid, "dbd_add: dbd_lookup success, cnid %u", ntohl(rply->cnid));
 #endif
         return 1;
     }
@@ -202,7 +202,9 @@ int dbd_add(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
         }
     }
 #ifdef DEBUG
-    LOG(log_info, logtype_cnid, "dbd_add: Returned CNID for did %u, name %s as %u", ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
+    LOG(log_info, logtype_cnid, "dbd_add: Added dev/ino %s did %u name %s cnid %u",
+       stringify_devino(rqst->dev, rqst->ino),
+       ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
 #endif
     rply->result = CNID_DBD_RES_OK;
     return 1;
index 1f0cade7ee54d60506d14b0dc28e90c3696b5a6f..63ebb45c83072edd3bd2679903eba66f8539a148 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_delete.c,v 1.1.4.4 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_delete.c,v 1.1.4.5 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -36,10 +36,15 @@ int dbd_delete(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
         rply->result = CNID_DBD_RES_ERR_DB;
         return -1;
     }
-    else {
+
+    if (rc) {
+#ifdef DEBUG
+        LOG(log_info, logtype_cnid, "cnid_delete: CNID %u deleted", ntohl(rqst->cnid));
+#endif
+        rply->result = CNID_DBD_RES_OK;
+    } else {
 #ifdef DEBUG
-        LOG(log_info, logtype_cnid, "cnid_delete: CNID %u not in database",
-            ntohl(rqst->cnid));
+        LOG(log_info, logtype_cnid, "cnid_delete: CNID %u not in database", ntohl(rqst->cnid));
 #endif
         rply->result = CNID_DBD_RES_NOTFOUND;
     }
index cd51e90d4ba4823646bfd019f7a512abff56b0cf..c3fc9557224ca4632ca3efbca0f9e742dc41508b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_get.c,v 1.1.4.4 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_get.c,v 1.1.4.5 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -50,13 +50,17 @@ int dbd_get(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
     }
 
     if (rc == 0) {
+#ifdef DEBUG
+       LOG(log_info, logtype_cnid, "cnid_get: CNID not found for did %u name %s",
+           ntohl(rqst->did), rqst->name);
+#endif
         rply->result = CNID_DBD_RES_NOTFOUND;
         return 1;
     }
 
     memcpy(&rply->cnid, data.data, sizeof(rply->cnid));
 #ifdef DEBUG
-    LOG(log_info, logtype_cnid, "cnid_get: Returning CNID for %u, name %s as %u",
+    LOG(log_info, logtype_cnid, "cnid_get: Returning CNID did %u name %s as %u",
         ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
 #endif
     rply->result = CNID_DBD_RES_OK;
index 740763cdd353cb3929d744e6de0fe5001690fd94..f17efba2e9517b10962299e381ea1b145aeb3da5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_lookup.c,v 1.1.4.5 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_lookup.c,v 1.1.4.6 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -95,12 +95,20 @@ int dbd_lookup(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
     
     if (!devino && !didname) {  
         /* not found */
+#ifdef DEBUG
+       LOG(log_info, logtype_cnid, "cnid_lookup: dev/ino %s did %u name %s neither in devino nor didname", 
+           stringify_devino(rqst->dev, rqst->ino), ntohl(rqst->did), rqst->name);
+#endif
         rply->result = CNID_DBD_RES_NOTFOUND;
         return 1;
     }
 
     if (devino && didname && id_devino == id_didname && type_devino == rqst->type) {
         /* the same */
+#ifdef DEBUG
+       LOG(log_info, logtype_cnid, "cnid_lookup: Looked up dev/ino %s did %u name %s as %u", 
+           stringify_devino(rqst->dev, rqst->ino), ntohl(rqst->did), rqst->name, ntohl(id_didname));
+#endif
         rply->cnid = id_didname;
         rply->result = CNID_DBD_RES_OK;
         return 1;
@@ -147,8 +155,8 @@ int dbd_lookup(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
         rply->cnid = rqst->cnid;
     }
 #ifdef DEBUG
-    LOG(log_info, logtype_cnid, "cnid_lookup: Looked up did %u, name %s, as %u (needed update)", 
-    ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
+    LOG(log_info, logtype_cnid, "cnid_lookup: Looked up dev/ino %s did %u name %s as %u (needed update)", 
+       stringify_devino(rqst->dev, rqst->ino), ntohl(rqst->did), rqst->name, ntohl(rply->cnid));
 #endif
     return rc;
 }
index a09bd25bc0ac1322d4bf282318abd2c91ca6b6ec..309c4b8d5b42ebcfe7d0219db7011064edec5fb9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_resolve.c,v 1.1.4.5 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_resolve.c,v 1.1.4.6 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -35,12 +35,16 @@ int dbd_resolve(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
     key.size = sizeof(cnid_t);
 
     if ((rc = dbif_get(DBIF_IDX_CNID, &key, &data, 0)) < 0) {
-        LOG(log_error, logtype_cnid, "dbd_resolve: Unable to get did/name %u/%s", ntohl(rqst->did), rqst->name);
+        LOG(log_error, logtype_cnid, "dbd_resolve: DB Error resolving CNID %u", ntohl(rqst->cnid));
         rply->result = CNID_DBD_RES_ERR_DB;
         return -1;
     }
      
     if (rc == 0) {
+#ifdef DEBUG
+       LOG(log_info, logtype_cnid, "dbd_resolve: Could not resolve CNID %u",
+           ntohl(rqst->cnid));
+#endif
         rply->result = CNID_DBD_RES_NOTFOUND;
         return 1;
     }
@@ -51,8 +55,8 @@ int dbd_resolve(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
     rply->name = data.data + CNID_NAME_OFS;
 
 #ifdef DEBUG
-    LOG(log_info, logtype_cnid, "cnid_resolve: Returning id = %u, did/name = %s",
-        ntohl(rply->did), (char *)data.data + CNID_NAME_OFS);
+    LOG(log_info, logtype_cnid, "dbd_resolve: Resolving CNID %u to did %u name %s",
+        ntohl(rqst->cnid), ntohl(rply->did), rply->name);
 #endif
     rply->result = CNID_DBD_RES_OK;
     return 1;
index b88a9b69d5732698e8c5c209879734c00bc66286..9098e3cbda785aad4a7c780edf1608b5de407cdf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: dbd_update.c,v 1.1.4.9 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: dbd_update.c,v 1.1.4.10 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -36,9 +36,12 @@ int dbd_update(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
 {
     DBT key,pkey, data;
     int rc;
-    char *buf;                                                                                               
+    char *buf;                            
     int notfound = 0;
-    char getbuf[CNID_HEADER_LEN + MAXPATHLEN +1];    
+    char getbuf[CNID_HEADER_LEN + MAXPATHLEN +1];
+#ifdef DEBUG
+    cnid_t tmpcnid;
+#endif
 
     memset(&key, 0, sizeof(key));
     memset(&pkey, 0, sizeof(pkey));
@@ -56,6 +59,11 @@ int dbd_update(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
         goto err_db;
     }
     else if  (rc > 0) {
+#ifdef DEBUG
+       memcpy(tmpcnid, pkey.data, sizeof(cnid_t));
+       LOG(log_info, logtype_cnid, "dbd_update: Deleting %u corresponding to dev/ino %s from cnid2.db",
+           ntohl(tmpcnid), stringify_devino(rqst->dev, rqst->ino));
+#endif
         if ((rc = dbif_del(DBIF_IDX_CNID, &pkey, 0)) < 0 ) {
             goto err_db;
         }
@@ -76,11 +84,16 @@ int dbd_update(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
         goto err_db;
     }
     else if  (rc > 0) {
+#ifdef DEBUG
+       memcpy(tmpcnid, pkey.data, sizeof(cnid_t));
+       LOG(log_info, logtype_cnid, "dbd_update: Deleting %u corresponding to did %u name %s from cnid2.db",
+           ntohl(tmpcnid), ntohl(rqst->did), rqst->name);
+#endif
         if ((rc = dbif_del(DBIF_IDX_CNID, &pkey, 0)) < 0) {
             goto err_db;
         }
         else if (!rc) {
-               LOG(log_error, logtype_cnid, "dbd_update: delete DIDNAME %u %s",ntohl(rqst->cnid), db_strerror(errno));
+               LOG(log_error, logtype_cnid, "dbd_update: delete DIDNAME %u %s", ntohl(rqst->cnid), db_strerror(errno));
         }
     }
     if (!rc) {
@@ -99,13 +112,17 @@ int dbd_update(struct cnid_dbd_rqst *rqst, struct cnid_dbd_rply *rply)
 
     if (dbif_put(DBIF_IDX_CNID, &key, &data, 0) < 0)
         goto err_db;
-
+#ifdef DEBUG
+    LOG(log_info, logtype_cnid, "dbd_update: Updated cnid2.db with dev/ino %s did %u name %s cnid %u",
+       stringify_devino(rqst->dev, rqst->ino),
+       ntohl(rqst->did), rqst->name, ntohl(rqst->cnid));
+#endif
     rply->result = CNID_DBD_RES_OK;
     return 1;
 
 err_db:
-    LOG(log_error, logtype_cnid, "dbd_update: Unable to update CNID %u inode %llx, DID %x:%s",
-        ntohl(rqst->cnid), rqst->ino, rqst->did, rqst->name);
+    LOG(log_error, logtype_cnid, "dbd_update: Unable to update CNID %u dev/ino %s, DID %x:%s",
+        ntohl(rqst->cnid), stringify_devino(rqst->ino, rqst->did), rqst->name);
     rply->result = CNID_DBD_RES_ERR_DB;
     return -1;
 }
index bc18833b58ea4b7a9c120e121af2251ecc6dc0d6..d7da431df5f28ab5cd0057daeb0a9c49f3b8e048 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: pack.c,v 1.1.4.7 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: pack.c,v 1.1.4.8 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
 #include <netatalk/endian.h>
 #include "pack.h"
 
+#ifdef DEBUG
+/*
+ *  Auxiliary stuff for stringify_devino. See comments below.
+ */
+static char hexchars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+#endif
+
 /* --------------- */
 /*
  *  This implementation is portable, but could probably be faster by using htonl
@@ -102,3 +109,44 @@ char *pack_cnid_data(struct cnid_dbd_rqst *rqst)
 
     return start;
 }
+
+#ifdef DEBUG
+
+/*
+ *  Whack 4 or 8 byte dev/ino numbers into something printable for DEBUG
+ *  logging. This function must not be used more that once per printf() style
+ *  invocation. This (or something improved) should probably migrate to
+ *  libatalk logging. Checking for printf() %ll support would be an alternative.
+ */
+
+char *stringify_devino(dev_t dev, ino_t ino)
+{
+    static char rbuf[CNID_DEV_LEN * 2 + 1 + CNID_INO_LEN * 2 + 1] = {0};
+    char buf[CNID_DEV_LEN + CNID_INO_LEN];
+    char *c1;
+    char *c2;
+    char *middle;
+    char *end;
+    int   ci;
+
+    pack_devino(buf, dev, ino);
+    
+    middle = buf + CNID_DEV_LEN;
+    end = buf + CNID_DEV_LEN + CNID_INO_LEN;
+    c1  = buf;
+    c2  = rbuf;  
+    
+    while (c1 < end) {
+       if (c1 == middle) {
+           *c2 = '/';
+           c2++;
+       }    
+       ci = *c1;
+       c2[0] = hexchars[(ci & 0xf0) >> 4];
+       c2[1] = hexchars[ci & 0x0f];
+       c1++;
+       c2 += 2;
+    }
+    return rbuf;
+}
+#endif
index 56a9239cf9c890e50314edd4c9074e4a940371be..cacd45547676e112e04ee35358c1cecd68ee1fa1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: pack.h,v 1.1.4.2 2004-01-09 21:05:50 lenneis Exp $
+ * $Id: pack.h,v 1.1.4.3 2004-01-21 21:28:42 lenneis Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -40,4 +40,8 @@
 
 extern char      *pack_cnid_data  __P((struct cnid_dbd_rqst *));
 
+#ifdef DEBUG
+extern char      *stringify_devino  __P((dev_t dev, ino_t ino));
+#endif
+
 #endif /* CNID_DBD_PACK_H */