From: Liu Yuan <[email protected]>

- use sys->disk_space instead of a duplicate sys call
- use bytes internally for disk space calculation

Signed-off-by: Liu Yuan <[email protected]>
---
 sheep/ops.c   |   11 ++---------
 sheep/sheep.c |    2 +-
 sheep/store.c |    8 ++++----
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/sheep/ops.c b/sheep/ops.c
index 0cddf66..8ca8748 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -63,7 +63,6 @@ struct sd_op_template {
 
 static int stat_sheep(uint64_t *store_size, uint64_t *store_free, uint32_t 
epoch)
 {
-       struct statvfs vs;
        int ret;
        DIR *dir;
        struct dirent *d;
@@ -72,12 +71,6 @@ static int stat_sheep(uint64_t *store_size, uint64_t 
*store_free, uint32_t epoch
        char path[1024];
        struct strbuf store_dir = STRBUF_INIT;
 
-       ret = statvfs(mnt_path, &vs);
-       if (ret) {
-               ret = SD_RES_EIO;
-               goto out;
-       }
-
        strbuf_addf(&store_dir, "%s", obj_path);
        dir = opendir(store_dir.buf);
        if (!dir) {
@@ -101,8 +94,8 @@ static int stat_sheep(uint64_t *store_size, uint64_t 
*store_free, uint32_t epoch
        closedir(dir);
        ret = SD_RES_SUCCESS;
 
-       *store_size = (uint64_t)vs.f_frsize * vs.f_bfree + used;
-       *store_free = (uint64_t)vs.f_frsize * vs.f_bfree;
+       *store_size = sys->disk_space;
+       *store_free = sys->disk_space - used;
 out:
        strbuf_release(&store_dir);
        return ret;
diff --git a/sheep/sheep.c b/sheep/sheep.c
index 1800178..c743184 100644
--- a/sheep/sheep.c
+++ b/sheep/sheep.c
@@ -294,7 +294,7 @@ int main(int argc, char **argv)
                                        optarg, UINT64_MAX);
                                exit(1);
                        }
-                       sys->disk_space = free_space;
+                       sys->disk_space = free_space * 1024 * 1024;
                        break;
                case 'c':
                        sys->cdrv = find_cdrv(optarg);
diff --git a/sheep/store.c b/sheep/store.c
index b093916..542804a 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -449,7 +449,7 @@ static int init_disk_space(const char *base_path)
 {
        int ret = SD_RES_SUCCESS;
        uint64_t space_size = 0;
-       struct statfs sf;
+       struct statvfs fs;
 
        if (sys->gateway_only)
                goto out;
@@ -465,17 +465,17 @@ static int init_disk_space(const char *base_path)
                goto out;
        }
 
-       ret = statfs(base_path, &sf);
+       ret = statvfs(base_path, &fs);
        if (ret < 0) {
                dprintf("get disk space failed %m\n");
                ret = SD_RES_EIO;
                goto out;
        }
 
-       sys->disk_space = sf.f_bfree * 4 / 1024;
+       sys->disk_space = (uint64_t)fs.f_frsize * fs.f_bfree;
        ret = set_cluster_space(sys->disk_space);
 out:
-       dprintf("disk free space is %" PRIu64 "M\n", sys->disk_space);
+       dprintf("disk free space is %" PRIu64 "\n", sys->disk_space);
        return ret;
 }
 
-- 
1.7.10.2

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

Reply via email to