]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/testing/accurate-tokyo.patch
ebl Add patch for tokyo support
[bacula/bacula] / bacula / patches / testing / accurate-tokyo.patch
1 Index: src/filed/Makefile.in
2 ===================================================================
3 --- src/filed/Makefile.in       (révision 6991)
4 +++ src/filed/Makefile.in       (copie de travail)
5 @@ -7,6 +7,7 @@
6  @MCOMMON@
7  
8  srcdir =       .
9 +libdir =        ../lib
10  VPATH =        .
11  .PATH:         .
12  
13 @@ -55,7 +56,7 @@
14  # inference rules
15  .c.o:
16         @echo "Compiling $<"
17 -       $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
18 +       $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) -I$(libdir) $(CFLAGS) $<
19  #-------------------------------------------------------------------------
20  all: Makefile @WIN32@ bacula-fd @STATIC_FD@
21         @echo "==== Make of filed is good ===="
22 @@ -78,15 +79,15 @@
23         (cd win32; $(MAKE) DESTDIR=$(DESTDIR))
24         @rm -f bacula-fd.exe
25  
26 -bacula-fd:  $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
27 +bacula-fd:  $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a ../lib/libtokyocabinet.a @WIN32@
28         @echo "Linking $@ ..."
29         $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
30 -         $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
31 +         $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyocabinet -lm $(PYTHON_LIBS) $(LIBS) \
32           $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
33  
34  static-bacula-fd:  $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a @WIN32@
35         $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
36 -          $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(PYTHON_LIBS) $(LIBS) \
37 +          $(WIN32LIBS) $(FDLIBS) -lfind -lbac -ltokyodbm -lm $(PYTHON_LIBS) $(LIBS) \
38            $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
39         strip $@
40  
41 @@ -152,7 +153,7 @@
42         @$(MV) Makefile Makefile.bak
43         @$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
44         @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
45 -       @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.c >> Makefile
46 +       @$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) -I$(libdir) *.c >> Makefile
47         @if test -f Makefile ; then \
48             $(RMF) Makefile.bak; \
49         else \
50 Index: src/filed/accurate.c
51 ===================================================================
52 --- src/filed/accurate.c        (révision 6991)
53 +++ src/filed/accurate.c        (copie de travail)
54 @@ -36,16 +36,12 @@
55  static int dbglvl=200;
56  
57  typedef struct PrivateCurFile {
58 -#ifndef USE_TCADB
59 -   hlink link;
60 -#endif
61     char *fname;                        /* not stored with tchdb mode */
62     time_t ctime;
63     time_t mtime;
64     bool seen;
65  } CurFile;
66  
67 -#ifdef USE_TCADB
68  static void realfree(void *p); /* used by tokyo code */
69  
70  /*
71 @@ -190,83 +186,6 @@
72     return true;
73  }
74  
75 -#else  /* HTABLE mode */
76 -
77 -static bool accurate_mark_file_as_seen(JCR *jcr, CurFile *elt)
78 -{
79 -   CurFile *temp = (CurFile *)jcr->file_list->lookup(elt->fname);
80 -   temp->seen = 1;             /* records are in memory */
81 -   return true;
82 -}
83 -
84 -static bool accurate_lookup(JCR *jcr, char *fname, CurFile *ret)
85 -{
86 -   bool found=false;
87 -   ret->seen = 0;
88 -
89 -   CurFile *temp = (CurFile *)jcr->file_list->lookup(fname);
90 -   if (temp) {
91 -      memcpy(ret, temp, sizeof(CurFile));
92 -      found=true;
93 -//    Dmsg1(dbglvl, "lookup <%s> ok\n", fname);
94 -   }
95 -
96 -   return found;
97 -}
98 -
99 -static bool accurate_init(JCR *jcr, int nbfile)
100 -{
101 -   CurFile *elt=NULL;
102 -   jcr->file_list = (htable *)malloc(sizeof(htable));
103 -   jcr->file_list->init(elt, &elt->link, nbfile);
104 -   return true;
105 -}
106 -
107 -/* This function is called at the end of backup
108 - * We walk over all hash disk element, and we check
109 - * for elt.seen.
110 - */
111 -bool accurate_send_deleted_list(JCR *jcr)
112 -{
113 -   CurFile *elt;
114 -   FF_PKT *ff_pkt;
115 -   int stream = STREAM_UNIX_ATTRIBUTES;
116 -
117 -   if (!jcr->accurate || jcr->JobLevel == L_FULL) {
118 -      goto bail_out;
119 -   }
120 -
121 -   if (jcr->file_list == NULL) {
122 -      goto bail_out;
123 -   }
124 -
125 -   ff_pkt = init_find_files();
126 -   ff_pkt->type = FT_DELETED;
127 -
128 -   foreach_htable (elt, jcr->file_list) {
129 -      if (!elt->seen) { /* already seen */
130 -         Dmsg2(dbglvl, "deleted fname=%s seen=%i\n", elt->fname, elt->seen);
131 -         ff_pkt->fname = elt->fname;
132 -         ff_pkt->statp.st_mtime = elt->mtime;
133 -         ff_pkt->statp.st_ctime = elt->ctime;
134 -         encode_and_send_attributes(jcr, ff_pkt, stream);
135 -      }
136 -//      free(elt->fname);
137 -   }
138 -
139 -   term_find_files(ff_pkt);
140 -bail_out:
141 -   /* TODO: clean htable when this function is not reached ? */
142 -   if (jcr->file_list) {
143 -      jcr->file_list->destroy();
144 -      free(jcr->file_list);
145 -      jcr->file_list = NULL;
146 -   }
147 -   return true;
148 -}
149 -
150 -#endif /* common code */
151 -
152  static bool accurate_add_file(JCR *jcr, char *fname, char *lstat)
153  {
154     bool ret = true;
155 @@ -278,7 +197,6 @@
156     elt.mtime = statp.st_mtime;
157     elt.seen = 0;
158  
159 -#ifdef USE_TCADB
160     if (!tcadbput(jcr->file_list,
161                  fname, strlen(fname)+1,
162                  &elt, sizeof(CurFile)))
163 @@ -286,15 +204,6 @@
164        Jmsg(jcr, M_ERROR, 1, _("Can't update accurate hash disk ERR=%s\n"));
165        ret = false;
166     }
167 -#else  /* HTABLE */
168 -   CurFile *item;
169 -   /* we store CurFile, fname and ctime/mtime in the same chunk */
170 -   item = (CurFile *)jcr->file_list->hash_malloc(sizeof(CurFile)+strlen(fname)+1);
171 -   memcpy(item, &elt, sizeof(CurFile));
172 -   item->fname  = (char *)item+sizeof(CurFile);
173 -   strcpy(item->fname, fname);
174 -   jcr->file_list->insert(item->fname, item); 
175 -#endif
176  
177  // Dmsg2(dbglvl, "add fname=<%s> lstat=%s\n", fname, lstat);
178     return ret;
179 @@ -399,8 +308,6 @@
180     return true;
181  }
182  
183 -#ifdef USE_TCADB
184 -
185  /*
186   * Tokyo Cabinet library doesn't use smartalloc by default
187   * results need to be released with real free()
188 @@ -411,4 +318,3 @@
189     free(p);
190  }
191  
192 -#endif
193 Index: src/filed/filed.h
194 ===================================================================
195 --- src/filed/filed.h   (révision 6991)
196 +++ src/filed/filed.h   (copie de travail)
197 @@ -35,11 +35,7 @@
198  
199  
200  #define FILE_DAEMON 1
201 -#ifdef USE_TCADB                     /* hash disk based */
202 -# include <tcadb.h>
203 -#else
204 -# include "lib/htable.h"
205 -#endif
206 +#include "lib/tcadb.h"
207  #include "filed_conf.h"
208  #include "fd_plugins.h"
209  #include "findlib/find.h"
210 Index: src/jcr.h
211 ===================================================================
212 --- src/jcr.h   (révision 6991)
213 +++ src/jcr.h   (copie de travail)
214 @@ -341,12 +341,8 @@
215     CRYPTO_CTX crypto;                 /* Crypto ctx */
216     DIRRES* director;                  /* Director resource */
217     bool VSS;                          /* VSS used by FD */
218 -#ifdef USE_TCADB
219     TCADB *file_list;                 /* Previous file list (accurate mode) */
220     POOLMEM *hash_name;
221 -#else
222 -   htable *file_list;                 /* Previous file list (accurate mode) */
223 -#endif
224  #endif /* FILE_DAEMON */
225  
226  
227 Index: src/lib/Makefile.in
228 ===================================================================
229 --- src/lib/Makefile.in (révision 6993)
230 +++ src/lib/Makefile.in (copie de travail)
231 @@ -47,7 +47,6 @@
232  
233  EXTRAOBJS = @OBJLIST@
234  
235 -
236  .SUFFIXES:     .c .o .ch .dvi .pdf .tex .view .w .1
237  .PHONY:
238  .DONTCARE:
239 @@ -62,10 +61,17 @@
240         $(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
241  
242  #-------------------------------------------------------------------------
243 -all: Makefile libbac.a
244 +all: Makefile libbac.a libtokyocabinet.a
245         @echo "==== Make of lib is good ===="
246         @echo " "
247  
248 +libtokyocabinet.a:
249 +       @(cd tokyocabinet ; echo "==>Entering directory `pwd`"; \
250 +             $(MAKE) $@ || (echo ""; echo ""; echo "  ====== Error in `pwd` ======"; \
251 +                           echo ""; echo "";));
252 +       @cp tokyocabinet/tcadb.h tokyocabinet/tcbdb.h tokyocabinet/tchdb.h .
253 +       @cp tokyocabinet/libtokyocabinet.a .
254 +
255  libbac.a: $(LIBOBJS)
256         @echo "Making $@ ..."
257         $(AR) rc  $@ $(LIBOBJS)
258 @@ -113,7 +119,7 @@
259         @echo "Compiling $<"
260         $(NO_ECHO)$(CXX) -fPIC $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
261  
262 -        
263 +
264  install:
265  
266  uninstall:
267 @@ -121,6 +127,7 @@
268  clean:
269         $(RMF) *.a core a.out *.o *.bak *.tex *.pdf *~ *.intpro *.extpro 1 2 3
270         $(RMF) rwlock_test md5sum sha1sum
271 +       (cd tokyocabinet ; make clean)
272  
273  realclean: clean
274         $(RMF) tags