/*
- * $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.
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;
}
}
}
#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;
/*
- * $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.
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;
}
/*
- * $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.
}
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;
/*
- * $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.
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;
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;
}
/*
- * $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.
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;
}
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;
/*
- * $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.
{
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));
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;
}
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) {
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;
}
/*
- * $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
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
/*
- * $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.
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 */