From bf16cb3ebb889c21e3c618eb36b56ce62614b3bf Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Mon, 19 May 2008 15:14:02 +0000 Subject: [PATCH] ebl use tokyocabinet by default instead of htable git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6988 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/filed/Makefile.in | 11 +++-- bacula/src/filed/accurate.c | 94 ------------------------------------ bacula/src/filed/filed.h | 6 +-- bacula/src/jcr.h | 4 -- bacula/src/lib/Makefile.in | 2 +- 5 files changed, 8 insertions(+), 109 deletions(-) diff --git a/bacula/src/filed/Makefile.in b/bacula/src/filed/Makefile.in index 2e7304319c..6a402d7f24 100644 --- a/bacula/src/filed/Makefile.in +++ b/bacula/src/filed/Makefile.in @@ -7,6 +7,7 @@ @MCOMMON@ srcdir = . +libdir = ../lib VPATH = . .PATH: . @@ -55,7 +56,7 @@ WIN32LIBS = $(@WIN32@) # inference rules .c.o: @echo "Compiling $<" - $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< + $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) -I$(libdir) $(CFLAGS) $< #------------------------------------------------------------------------- all: Makefile @WIN32@ bacula-fd @STATIC_FD@ @echo "==== Make of filed is good ====" @@ -78,15 +79,15 @@ win32: $(WIN32OBJS) (cd win32; $(MAKE) DESTDIR=$(DESTDIR)) @rm -f bacula-fd.exe -bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@ +bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a ../lib/libtokyocabinet.a @WIN32@ @echo "Linking $@ ..." $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \ - $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \ + $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyocabinet -lm $(PYTHON_LIBS) $(LIBS) \ $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) static-bacula-fd: $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@ $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \ - $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \ + $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyodbm -lm $(PYTHON_LIBS) $(LIBS) \ $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) strip $@ @@ -152,7 +153,7 @@ depend: @$(MV) Makefile Makefile.bak @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile - @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.c >> Makefile + @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) -I$(libdir) *.c >> Makefile @if test -f Makefile ; then \ $(RMF) Makefile.bak; \ else \ diff --git a/bacula/src/filed/accurate.c b/bacula/src/filed/accurate.c index e404d18f5e..ba491bfcac 100644 --- a/bacula/src/filed/accurate.c +++ b/bacula/src/filed/accurate.c @@ -36,16 +36,12 @@ static int dbglvl=200; typedef struct PrivateCurFile { -#ifndef USE_TCADB - hlink link; -#endif char *fname; /* not stored with tchdb mode */ time_t ctime; time_t mtime; bool seen; } CurFile; -#ifdef USE_TCADB static void realfree(void *p); /* used by tokyo code */ /* @@ -190,83 +186,6 @@ bail_out: return true; } -#else /* HTABLE mode */ - -static bool accurate_mark_file_as_seen(JCR *jcr, CurFile *elt) -{ - CurFile *temp = (CurFile *)jcr->file_list->lookup(elt->fname); - temp->seen = 1; /* records are in memory */ - return true; -} - -static bool accurate_lookup(JCR *jcr, char *fname, CurFile *ret) -{ - bool found=false; - ret->seen = 0; - - CurFile *temp = (CurFile *)jcr->file_list->lookup(fname); - if (temp) { - memcpy(ret, temp, sizeof(CurFile)); - found=true; -// Dmsg1(dbglvl, "lookup <%s> ok\n", fname); - } - - return found; -} - -static bool accurate_init(JCR *jcr, int nbfile) -{ - CurFile *elt=NULL; - jcr->file_list = (htable *)malloc(sizeof(htable)); - jcr->file_list->init(elt, &elt->link, nbfile); - return true; -} - -/* This function is called at the end of backup - * We walk over all hash disk element, and we check - * for elt.seen. - */ -bool accurate_send_deleted_list(JCR *jcr) -{ - CurFile *elt; - FF_PKT *ff_pkt; - int stream = STREAM_UNIX_ATTRIBUTES; - - if (!jcr->accurate || jcr->JobLevel == L_FULL) { - goto bail_out; - } - - if (jcr->file_list == NULL) { - goto bail_out; - } - - ff_pkt = init_find_files(); - ff_pkt->type = FT_DELETED; - - foreach_htable (elt, jcr->file_list) { - if (!elt->seen) { /* already seen */ - Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen); - ff_pkt->fname = elt->fname; - ff_pkt->statp.st_mtime = elt->mtime; - ff_pkt->statp.st_ctime = elt->ctime; - encode_and_send_attributes(jcr, ff_pkt, stream); - } -// free(elt->fname); - } - - term_find_files(ff_pkt); -bail_out: - /* TODO: clean htable when this function is not reached ? */ - if (jcr->file_list) { - jcr->file_list->destroy(); - free(jcr->file_list); - jcr->file_list = NULL; - } - return true; -} - -#endif /* common code */ - static bool accurate_add_file(JCR *jcr, char *fname, char *lstat) { bool ret = true; @@ -278,7 +197,6 @@ static bool accurate_add_file(JCR *jcr, char *fname, char *lstat) elt.mtime = statp.st_mtime; elt.seen = 0; -#ifdef USE_TCADB if (!tcadbput(jcr->file_list, fname, strlen(fname)+1, &elt, sizeof(CurFile))) @@ -286,15 +204,6 @@ static bool accurate_add_file(JCR *jcr, char *fname, char *lstat) Jmsg(jcr, M_ERROR, 1, _("Can't update accurate hash disk ERR=%s\n")); ret = false; } -#else /* HTABLE */ - CurFile *item; - /* we store CurFile, fname and ctime/mtime in the same chunk */ - item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+strlen(fname)+1); - memcpy(item, &elt, sizeof(CurFile)); - item->fname = (char *)item+sizeof(CurFile); - strcpy(item->fname, fname); - jcr->file_list->insert(item->fname, item); -#endif // Dmsg2(dbglvl, "add fname=<%s> lstat=%s\n", fname, lstat); return ret; @@ -399,8 +308,6 @@ int accurate_cmd(JCR *jcr) return true; } -#ifdef USE_TCADB - /* * Tokyo Cabinet library doesn't use smartalloc by default * results need to be released with real free() @@ -411,4 +318,3 @@ void realfree(void *p) free(p); } -#endif diff --git a/bacula/src/filed/filed.h b/bacula/src/filed/filed.h index 81a20fa0ca..9653dbaa02 100644 --- a/bacula/src/filed/filed.h +++ b/bacula/src/filed/filed.h @@ -35,11 +35,7 @@ #define FILE_DAEMON 1 -#ifdef USE_TCADB /* hash disk based */ -# include -#else -# include "lib/htable.h" -#endif +#include "lib/tcadb.h" #include "filed_conf.h" #include "fd_plugins.h" #include "findlib/find.h" diff --git a/bacula/src/jcr.h b/bacula/src/jcr.h index 2ad419f19a..40c79ece66 100644 --- a/bacula/src/jcr.h +++ b/bacula/src/jcr.h @@ -341,12 +341,8 @@ public: CRYPTO_CTX crypto; /* Crypto ctx */ DIRRES* director; /* Director resource */ bool VSS; /* VSS used by FD */ -#ifdef USE_TCADB TCADB *file_list; /* Previous file list (accurate mode) */ POOLMEM *hash_name; -#else - htable *file_list; /* Previous file list (accurate mode) */ -#endif #endif /* FILE_DAEMON */ diff --git a/bacula/src/lib/Makefile.in b/bacula/src/lib/Makefile.in index 3cf96fe0ff..bb6c0b638c 100644 --- a/bacula/src/lib/Makefile.in +++ b/bacula/src/lib/Makefile.in @@ -69,7 +69,7 @@ libtokyocabinet.a: @(cd tokyocabinet ; echo "==>Entering directory `pwd`"; \ $(MAKE) $@ || (echo ""; echo ""; echo " ====== Error in `pwd` ======"; \ echo ""; echo "";)); - @cp tokyocabinet/tcadb.h tokyocabinet/tcbdb.h tokyocabinet/tchdb.h . + @cp tokyocabinet/t*.h . @cp tokyocabinet/libtokyocabinet.a . libbac.a: $(LIBOBJS) -- 2.39.5