[sheepdog] [PATCH 0/4] variable vnodes specified by free space

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Fri Aug 3 07:59:37 CEST 2012


At Wed,  1 Aug 2012 10:56:12 +0800,
levin li wrote:
> 
> From: levin li <xingke.lwp at taobao.com>
> 
> For sheep's first boot, we get the free disk space either by syscall
> or by user's determination though command line argement, and then we
> store the size into config file, and for later boot, we just read the
> size from config file, the space size can never be changed after first
> boot.
> 
> The free space size of every node is notified to every other node though
> join message, and stored in sd_node, every time a new node joins or an
> old node leaves, we recalculate the vnodes number for every nodes.
> 
> levin li (4):
>   sheep: get the free disk space and store it in the config file
>   sheep: add user-defined free disk space size
>   sheep: recalculate the vnodes number when epoch changes
>   sheep: remove command line argument --vnodes
> 
>  include/internal_proto.h |    1 +
>  sheep/group.c            |   24 +++++++++++++
>  sheep/sheep.c            |   22 +++++++-----
>  sheep/sheep_priv.h       |    3 ++
>  sheep/store.c            |   86 ++++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 127 insertions(+), 9 deletions(-)

This patchset doesn't pass the following test:

==
#!/bin/bash

set -ex

dd if=/dev/zero of=/tmp/0.img seek=$((2 * 1024 ** 3 - 1)) bs=1 count=1
dd if=/dev/zero of=/tmp/1.img seek=$((4 * 1024 ** 3 - 1)) bs=1 count=1
dd if=/dev/zero of=/tmp/2.img seek=$((8 * 1024 ** 3 - 1)) bs=1 count=1

for i in 0 1 2; do
    mkfs.xfs /tmp/$i.img
    mkdir /store/$i
    mount -o loop /tmp/$i.img /store/$i
    sheep -d /store/$i/ -z $i -p 700$i
done

sleep 1

for i in 0 1 2; do
    collie node list -p 700$i
done
==

The expected result is:

+ collie/collie node list -p 7000
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7000         27          0
-    1   127.0.0.1:7001         54          1
-    2   127.0.0.1:7002         109          2
+ for i in 0 1 2
+ collie/collie node list -p 7001
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7000         27          0
-    1   127.0.0.1:7001         54          1
-    2   127.0.0.1:7002         109          2
+ for i in 0 1 2
+ collie/collie node list -p 7002
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7000         27          0
-    1   127.0.0.1:7001         54          1
-    2   127.0.0.1:7002         109          2

But I got the following output:

+ collie/collie node list -p 7000
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7000      		 42          0
-    1   127.0.0.1:7001      		 85          1
+ for i in 0 1 2
+ collie/collie node list -p 7001
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7000      		 42          0
-    1   127.0.0.1:7001      		 85          1
+ for i in 0 1 2
+ collie/collie node list -p 7002
M   Id   Host:Port         V-Nodes       Zone
-    0   127.0.0.1:7002      		 64          2


Thanks,

Kazutaka



More information about the sheepdog mailing list