[sheepdog] [PATCH] sheep journal:fix the parameter type of 'size' passed to 'int prealloc(int fd, uint32_t size)'
张灿群
zhangcanqun_sd at 163.com
Thu Apr 9 09:30:21 CEST 2015
dear,
When i start sheep daemon with journal,the daemon couldn't start.
command:
sheep -j dir=/sdac,size=160G,skip=1 -l dir=/var/log/,level=err,format=server /sdad/ -n -D -y 10.64.0.38 -p 7000 -c zookeeper:host-0-31:2181,host-0-32:2181,host-0-38:2181
debugino:
Apr 09 14:49:35 ERROR [main] prealloc(120) failed to preallocate space, Invalid argument
Apr 09 14:49:35 ERROR [main] prealloc(121) size is 0 // I printf the value
Apr 09 14:49:35 ERROR [main] create_journal_file(73) prealloc journal_file0 Invalid argument
so the value of 'size' was corrupted when the type changed.
patch:
diff --git a/include/util.h b/include/util.h
index c5b5ac9..bad09fb 100644
--- a/include/util.h
+++ b/include/util.h
@@ -93,7 +93,7 @@ void *xzalloc(size_t size);
void *xrealloc(void *ptr, size_t size);
void *xcalloc(size_t nmemb, size_t size);
void *xvalloc(size_t size);
-int prealloc(int fd, uint32_t size);
+int prealloc(int fd, uint64_t size);
ssize_t xread(int fd, void *buf, size_t len);
ssize_t xwrite(int fd, const void *buf, size_t len);
ssize_t xpread(int fd, void *buf, size_t count, off_t offset);
diff --git a/lib/util.c b/lib/util.c
index aad6d96..583f394 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -112,7 +112,7 @@ void *xvalloc(size_t size)
}
/* preallocate the whole object */
-int prealloc(int fd, uint32_t size)
+int prealloc(int fd, uint64_t size)
{
int ret = xfallocate(fd, 0, 0, size);
if (ret < 0) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wpkg.org/pipermail/sheepdog/attachments/20150409/9f8a0173/attachment-0003.html>
More information about the sheepdog
mailing list