MORITA Kazutaka wrote: > On Sat, Feb 13, 2010 at 5:02 AM, Piavlo <piavka at cs.bgu.ac.il> wrote: > >> I've just build against the current next branch. The fd leak seems to be >> solved, >> > > Thanks! > I've applied the fixes to the master branch. > Looks ok now, thanks > >> but disk spaces are still not reported correctly >> >> fire-srv3 ~ # shepherd info -t sheep >> Id Size Used Use% >> 0 12G 0G 0% >> 1 11G 0G 0% >> 2 13G 0G 0% >> >> Total 36G 0G 0%, total virtual VDI Size 5G >> > > Thanks for your reporting. > Can you apply the following patch or pull the current next branch? > > Regards, > > Kazutaka Morita > > == > >From ff5a9ac9761350f7a118dd49e6aa8e9ecc679437 Mon Sep 17 00:00:00 2001 > From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> > Date: Mon, 15 Feb 2010 11:18:38 +0900 > Subject: [PATCH] collie: fix a calculation of disk usage > > Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> > --- > collie/store.c | 11 ++++++----- > 1 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/collie/store.c b/collie/store.c > index 4761ce5..131b9e8 100644 > --- a/collie/store.c > +++ b/collie/store.c > @@ -37,7 +37,7 @@ static mode_t def_fmode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP; > int nr_sobjs; > struct work_queue *dobj_queue; > > -static int stat_sheep(uint64_t *store_size, uint64_t *store_free) > +static int stat_sheep(uint64_t *store_size, uint64_t *store_free, uint32_t epoch) > { > struct statvfs vs; > int ret; > @@ -45,13 +45,14 @@ static int stat_sheep(uint64_t *store_size, uint64_t *store_free) > struct dirent *d; > uint64_t used = 0; > struct stat s; > - char path[1024]; > + char path[1024], store_dir[1024]; > > ret = statvfs(mnt_path, &vs); > if (ret) > return SD_RES_EIO; > > - dir = opendir(obj_path); > + snprintf(store_dir, sizeof(store_dir), "%s%08u", obj_path, epoch); > + dir = opendir(store_dir); > if (!dir) > return SD_RES_EIO; > > @@ -59,7 +60,7 @@ static int stat_sheep(uint64_t *store_size, uint64_t *store_free) > if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) > continue; > > - snprintf(path, sizeof(path), "%s%s", obj_path, d->d_name); > + snprintf(path, sizeof(path), "%s/%s", store_dir, d->d_name); > > ret = stat(path, &s); > if (ret) > @@ -560,7 +561,7 @@ void store_queue_request(struct work *work, int idx) > } > > if (opcode == SD_OP_STAT_SHEEP) { > - ret = stat_sheep(&nrsp->store_size, &nrsp->store_free); > + ret = stat_sheep(&nrsp->store_size, &nrsp->store_free, epoch); > goto out; > } > > |