[Sheepdog] Node listing size incorrectly on x86 host

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Tue Apr 5 18:03:57 CEST 2011


At Tue, 05 Apr 2011 15:43:04 +0100,
Haven wrote:
> 
> Hi, turning into a busy day for me on here.
> 
> I'm mostly running sheepdog on x86_64 nodes but I have a single node
> that its 32 bit x86 and its the only one of my nodes that is
> displaying the incorrect node size.
> 
> The sheepdog node is mounted as /var/lib/sheepdog and is an LVM
> volume (ext4):
> 
> > # df -h /var/lib/sheepdog
> > Filesystem            Size  Used Avail Use% Mounted on
> > /dev/mapper/vol-sheepdog
> >                       788G  197M  748G   1% /var/lib/sheepdog
> collie node info is reporting this node as 3.3GB rather than 788GB -
> co-incidentally 3.3GB is the size of the "/" partition:
> > Id      Size    Used    Use%
> >  3      3.3 GB  0.0 MB    0%
> 
> I can see that sheepdog is mounting the right location:
> > 21773 ?        Ss     0:00 sheep -p 7000 /var/lib/sheepdog
> > 21774 ?        Ssl    0:00 sheep -p 7000 /var/lib/sheepdog
> The underlying "/" filesystem size shows where this number is coming
> from (I assume):
> > df -h /
> > Filesystem            Size  Used Avail Use% Mounted on
> > /dev/sda1             4.6G  994M  3.4G  23% /
> 
> Its possible I've done something daft but if so I cannot spot what
> it is. Sheepdog was started up after the mount point was in place,
> as was corosync. I have resized the lvm partition but only whilst
> all the daemons were down.
> 
> Thoughts appreciated.

This is a bug.  Thanks for your report!  The below will fix it.

---
 sheep/store.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/sheep/store.c b/sheep/store.c
index bca5846..e1b2c30 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -102,8 +102,8 @@ static int stat_sheep(uint64_t *store_size, uint64_t *store_free, uint32_t epoch
 
 	closedir(dir);
 
-	*store_size = vs.f_frsize * vs.f_bfree + used;
-	*store_free = vs.f_frsize * vs.f_bfree;
+	*store_size = (uint64_t)vs.f_frsize * vs.f_bfree + used;
+	*store_free = (uint64_t)vs.f_frsize * vs.f_bfree;
 
 	return SD_RES_SUCCESS;
 }
-- 
1.5.6.5





More information about the sheepdog mailing list