On 2014年07月18日 10:35, Ruoyu wrote:
Hi there,

Should we upgrade SD_PROTO_VER to 0x03 to avoid it because vdi object size is different since ledger object is introduced?
Or we should not check if the size equals to that of expected?

diff --git a/sheep/plain_store.c b/sheep/plain_store.c
index 07bd107..5991bf3 100644
--- a/sheep/plain_store.c
+++ b/sheep/plain_store.c
@@ -345,7 +345,7 @@ static int default_read_from_path(uint64_t oid, const char *path,
                return err_to_sderr(path, oid, errno);

        size = xpread(fd, iocb->buf, iocb->length, iocb->offset);
-       if (unlikely(size != iocb->length)) {
+       if (size < 0) {
                sd_err("failed to read object %"PRIx64", path=%s, offset=%"
                       PRId32", size=%"PRId32", result=%zd, %m", oid, path,
                       iocb->offset, iocb->length, size);


On 2014年07月15日 17:31, Ruoyu wrote:
Once I submit a read request by new version dog command (ledger object supported) to a old version cluster (ledger object not supported), the cluster is corrupted.

Error messages in sheep.log:

Jul 15 11:17:26 ERROR [gway 24285] default_read_from_path(291) failed to read object 80e4a2b600000000, path=/mnt/sheepdog/obj/80e4a2b600000000, offset=0, size=12587576, result=4198976, Success Jul 15 11:17:26 ERROR [gway 24285] err_to_sderr(114) oid=80e4a2b600000000, Success Jul 15 11:17:26 ERROR [gway 24285] gateway_replication_read(270) local read 80e4a2b600000000 failed, Network error between sheep Jul 15 11:17:26 INFO [main] md_remove_disk(349) /mnt/sheepdog/obj from multi-disk array Jul 15 11:17:26 ERROR [gway 24285] sheep_exec_req(1114) failed Network error between sheep, remote address: 192.168.1.2:7000, op name: READ_PEER

As you can see, vdi object size was changed, expected 12587576, actually 4198976. As a result, sheep thought the disk had unrecoverable problem so that it must been removed. And then, a recovery will be triggered. The behavior is not so robust.

Maybe we need something like version control to avoid this issue. What is your opinion?



--
sheepdog mailing list
sheepdog@lists.wpkg.org
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to