From: levin li <[email protected]>

Sheep doesn't read the journal head in journal_recover which
always leaves all the fields of journal head uninitialized,
so the target_path is something random.

Signed-off-by: levin li <[email protected]>
---
 sheep/journal.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/sheep/journal.c b/sheep/journal.c
index d082aa2..74384b2 100644
--- a/sheep/journal.c
+++ b/sheep/journal.c
@@ -257,6 +257,12 @@ int jrnl_recover(const char *jrnl_dir)
                        goto end_while_3;
                }
 
+               ret = pread64(jd.fd, &jd.head, sizeof(jd.head), 0);
+               if (ret != sizeof(jd.head)) {
+                       eprintf("can't read journal head\n");
+                       goto end_while_2;
+               }
+
                ret = pread64(jd.fd, &end_mark, sizeof(end_mark),
                                sizeof(jd.head) + jd.head.size);
                if (ret != sizeof(end_mark)) {
-- 
1.7.1

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to