Hi,

Thanks for trying.

On 2010/04/09 21:21, Wido den Hollander wrote:
> r...@osd1:~# /usr/local/bin/qemu-img create -f sheepdog vm002 50G
> Formatting 'vm002', fmt=sheepdog size=53687091200 
> do_sd_create 1143: The system is still booting, vm002
> qemu-img: Error while formatting
> r...@osd1:~#
> 
> Now that seems odd, but when checking my cluster i got:
> 
> r...@osd1:~# shepherd info -t cluster
> startup
> 
> Ctime              Epoch Nodes

Did you run `shepherd mkfs`?
Sheepdog doesn't accept any operations until mkfs is invoked.

> r...@osd1:~# shepherd info -t sheep
> Id    Size    Used    Use%
> 
> Total 0.0 MB  0.0 MB  -2147483648%, total virtual VDI Size    0.0 MB
> r...@osd1:~#
> 
> As you can see the sizes of the nodes is not detected correctly..
> 

I think you can get the right information after running `shepherd mkfs`.
The following patch fix showing wrong message when shepherd cannot any
information from cluster nodes.

diff --git a/shepherd/shepherd.c b/shepherd/shepherd.c
index 471c0e1..fb554b0 100644
--- a/shepherd/shepherd.c
+++ b/shepherd/shepherd.c
@@ -926,6 +926,7 @@ int info(enum info_type type, enum format_type format, char 
*name,
        int i, ret = -1;
        uint64_t total_size = 0, total_avail = 0, total_vdi_size = 0;
        char total_str[8], avail_str[8], vdi_size_str[8];
+       int success;

        if (real_time) {
                setupterm(NULL, 1, (int *)0);
@@ -983,6 +984,7 @@ rerun:
        case INFO_SHEEP:
                printf("Id\tSize\tUsed\tUse%%\n");

+               success = 0;
                for (i = 0; i < nr_nodes; i++) {
                        char name[128];
                        int fd;
@@ -1010,9 +1012,11 @@ rerun:
                        size_to_str(rsp->store_size, store_str, 
sizeof(store_str));
                        size_to_str(rsp->store_size - rsp->store_free, free_str,
                                    sizeof(free_str));
-                       if (!ret && rsp->result == SD_RES_SUCCESS)
+                       if (!ret && rsp->result == SD_RES_SUCCESS) {
                                printf("%2d\t%s\t%s\t%3d%%\n", i, store_str, 
free_str,
                                       (int)(((double)(rsp->store_size - 
rsp->store_free) / rsp->store_size) * 100));
+                               success++;
+                       }

                        total_size += rsp->store_size;
                        total_avail += rsp->store_free;
@@ -1020,6 +1024,12 @@ rerun:

                printf("\n");

+               if (success == 0) {
+                       fprintf(stderr, "cannot get information from any 
nodes\n");
+                       ret = -1;
+                       break;
+               }
+
                parse_vdi(cal_total_vdi_size, &total_vdi_size);

                size_to_str(total_size, total_str, sizeof(total_str));

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

Reply via email to