Signed-off-by: MORITA Kazutaka <[email protected]>
---
 include/sheep.h |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/include/sheep.h b/include/sheep.h
index 5e0d8b4..31f1159 100644
--- a/include/sheep.h
+++ b/include/sheep.h
@@ -166,6 +166,8 @@ static inline int get_nth_node(struct 
sheepdog_vnode_list_entry *entries,
                nodes[nr++] = idx;
 next:
                idx = (idx + 1) % nr_entries;
+               if (idx == base)
+                       return -1; /* not found */
                for (i = 0; i < nr; i++)
                        if (same_node(entries, idx, nodes[i]))
                                /* this node is already selected, so skip here 
*/
@@ -178,7 +180,7 @@ next:
 static inline int hval_to_sheep(struct sheepdog_vnode_list_entry *entries,
                                int nr_entries, uint64_t id, int idx)
 {
-       int i;
+       int i, ret;
        struct sheepdog_vnode_list_entry *e = entries, *n;
 
        for (i = 0; i < nr_entries - 1; i++, e++) {
@@ -186,7 +188,13 @@ static inline int hval_to_sheep(struct 
sheepdog_vnode_list_entry *entries,
                if (id > e->id && id <= n->id)
                        break;
        }
-       return get_nth_node(entries, nr_entries, (i + 1) % nr_entries, idx);
+       ret = get_nth_node(entries, nr_entries, (i + 1) % nr_entries, idx);
+       if (ret < 0) {
+               printf("bug\n");
+               abort();
+       }
+
+       return ret;
 }
 
 static inline int obj_to_sheep(struct sheepdog_vnode_list_entry *entries,
-- 
1.5.6.5

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

Reply via email to