redmine

Adapted pdcp to clsync 0.4-rc3

@@ -52,76 +52,9 @@ pdcp - это утилита позволяющая производить ко @@ -52,76 +52,9 @@ pdcp - это утилита позволяющая производить ко
52 ssh-copy-id "$IP" 52 ssh-copy-id "$IP"
53 done 53 done
54 54
55 -Подготовка master-узла:  
56 -  
57 - cat > /root/pdcp-handler.c << EOF  
58 - #include <stdlib.h>  
59 - #include <unistd.h>  
60 - #include <string.h>  
61 - #include <sys/types.h>  
62 - #include <sys/wait.h>  
63 -  
64 - #include <clsync/clsync.h>  
65 - #include <clsync/configuration.h>  
66 - #include <clsync/malloc.h>  
67 - #include <clsync/error.h>  
68 -  
69 - struct ctx *ctx_p;  
70 -  
71 - int clsyncapi_init(struct ctx *_ctx_p, struct indexes *_indexes_p) {  
72 - ctx_p = _ctx_p;  
73 - return 0;  
74 - }  
75 -  
76 - int clsyncapi_sync(int n, api_eventinfo_t *ei) {  
77 - size_t argv_size;  
78 - char **argv;  
79 -  
80 - debug(3, "n == %i", n);  
81 -  
82 - if(n == 0)  
83 - return 0;  
84 -  
85 - argv_size = n+4; // "pdcp" + "-a" + n*path + NULL  
86 - argv = xmalloc(argv_size * sizeof(char *));  
87 - argv[0] = "/usr/bin/pdcp";  
88 - argv[1] = "-a";  
89 -  
90 - int i = 2;  
91 - int j = 0;  
92 - while (i < n) {  
93 - if(ei[j].path_len)  
94 - argv[i++] = (char*)ei[j].path;  
95 - j++;  
96 - }  
97 -  
98 - argv[i++] = NULL;  
99 -  
100 - int pid = clsyncapi_fork(ctx_p);  
101 - switch(pid) {  
102 - case -1:  
103 - critical("got error while clsyncapi_fork()");  
104 - case 0:  
105 - execv(argv[0], argv);  
106 - critical("got error while execv()");  
107 - }  
108 -  
109 - int status;  
110 - if(waitpid(pid, &status, 0) != pid)  
111 - critical("got error while waitpid()");  
112 -  
113 - int exitcode = WEXITSTATUS(status);  
114 - free(argv);  
115 - return exitcode;  
116 - }  
117 - EOF  
118 -  
119 - gcc -march=native -O2 -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -ftree-loop-linear -ftree-loop-im -fweb -frename-registers -fomit-frame-pointer -fexcess-precision=fast -pipe --std=gnu11 -Wall -fPIC -shared -Wl,-O1,--as-needed /root/pdcp-handler.c -o /root/pdcp-handler.so  
120 -  
121 -  
122 Запуск на master-узле: 55 Запуск на master-узле:
123 56
124 - clsync --mode=so --sync-handler=/root/pdcp-handler.so --watch-dir=/opt/global --background=1 --output=syslog 57 + clsync -M direct -S $(which pdcp) -W /opt/global -b -Y syslog -- -a %FILE-LIST%
125 58
126 Готово, можно попробовать: 59 Готово, можно попробовать:
127 60