[sheepdog] [PATCH 3/5] sheep: don't call heavy md_get_info init_obj_path()

Liu Yuan namei.unix at gmail.com
Thu Feb 27 06:48:06 CET 2014


This will iterate all the objects of the MD before vdi states setup, causing
data inconsistency problems.

Signed-off-by: Liu Yuan <namei.unix at gmail.com>
---
 sheep/store.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/sheep/store.c b/sheep/store.c
index c20b381..2d5aa32 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -203,8 +203,7 @@ static int is_meta_store(const char *path)
 static int init_obj_path(const char *base_path, char *argp)
 {
 	char *p;
-	int len, ret;
-	struct sd_md_info mdi;
+	int len;
 
 	if (check_path_len(base_path) < 0)
 		return -1;
@@ -234,13 +233,7 @@ static int init_obj_path(const char *base_path, char *argp)
 		} while ((p = strtok(NULL, ",")));
 	}
 
-	ret = md_get_info(&mdi);
-	if (ret != sizeof(mdi)) {
-		sd_err("Can't get md info");
-		return -1;
-	}
-
-	if (mdi.nr <= 0) {
+	if (md_nr_disks() <= 0) {
 		sd_err("There isn't any available disk!");
 		return -1;
 	}
-- 
1.8.1.2




More information about the sheepdog mailing list