function spawn_mapperdc {
pgrep -f "mt-mapperd" || \
- "${XSEG_HOME}/peers/user/mt-mapperd" -t 1 -p "$MPORT" -bp "$BPORT" -g "${SPEC}" \
- &> "${XSEG_LOGS}/mapperd-${HOSTNAME}" &
+ "${XSEG_HOME}/peers/user/mt-mapperd" -t 1 -p "$MPORT" -bp "$BPORT" -g "${SPEC}"\
+ &> "${XSEG_LOGS}/mapperd-${HOSTNAME}" &
# alloc_requests "$MPORT:0" 128
}
case $2 in
start)
load_all
- sleep 0.5
- spawn_filed
+ sleep 1
+ spawn_filed
spawn_mapperdc
- spawn_vlmcd
+ spawn_vlmcd
;;
stop)
pkill -f peers/user/mt-vlmcd || true
//assert targetlen <= XSEG_MAX_TARGET_LEN
strncpy(buf, target, targetlen);
buf[targetlen] = 0;
+ fprintf(stderr, "%s\n", buf);
r = xhash_lookup(mapper->hashmaps, (xhashidx) buf, (xhashidx *) &m);
if (r < 0)
return NULL;
goto out;
}
+ fprintf(stderr, "%s\n", map->volume);
r = xhash_insert(mapper->hashmaps, (xhashidx) map->volume, (xhashidx) map);
if (r == -XHASH_ERESIZE) {
xhashidx shift = xhash_grow_size_shift(map->objects);
//assert req->op = X_WRITE;
char *target = xseg_get_target(peer->xseg, req);
struct map *map = find_map(mapper, target, req->targetlen);
- if (!map)
+ if (!map) {
+ fprintf(stderr, "couldn't find map\n");
goto out_err;
+ }
//assert map->flags & MF_MAP_WRITING
- if (req->state & XS_FAILED)
+ if (req->state & XS_FAILED){
+ fprintf(stderr, "write request failed\n");
goto out_fail;
+ }
xseg_put_request(peer->xseg, req, peer->portno);
map->flags &= ~MF_MAP_WRITING;
return 0;
out_err:
+ fprintf(stderr, "asdfasdf\n");
xseg_put_request(peer->xseg, req, peer->portno);
return -1;
}
if (req->op == X_WRITE){
//assert state = WRITING;
r = handle_mapwrite(peer, pr ,req);
- if (r < 0)
+ if (r < 0){
+ fprintf(stderr, "handle mapwrite returned error\n");
fail(peer, pr);
+ }
return 0;
}
xqindex *qidx = xq_alloc_empty(&clonemap->pending, peer->nr_ops);
if (!qidx)
goto out_err_objhash;
- clonemap->size = xclone->size;
+ clonemap->size = xclone->size; //assert xlone->size > map->size
clonemap->flags = 0;
char *target = xseg_get_target(peer->xseg, pr->req);
strncpy(clonemap->volume, target, pr->req->targetlen);
struct mapperd *mapper = __get_mapperd(peer);
struct mapper_io *mio = __get_mapper_io(pr);
xqindex idx;
+ int r;
if (err) {
map->flags &= ~MF_MAP_DELETING;
//dispatch all pending
void print_obj(struct map_node *mn)
{
- printf("[%llu]object name: %s[%u] exists: %c\n", mn->objectidx, mn->object, mn->objectlen,
+ fprintf(stderr, "[%llu]object name: %s[%u] exists: %c\n", mn->objectidx, mn->object, mn->objectlen,
(mn->flags & MF_OBJECT_EXIST) ? 'y' : 'n');
}
uint64_t nr_objs = m->size/block_size;
if (m->size % block_size)
nr_objs++;
- printf("Volume name: %s[%u], size: %llu, nr_objs: %llu\n",
+ fprintf(stderr, "Volume name: %s[%u], size: %llu, nr_objs: %llu\n",
m->volume, m->volumelen, m->size, nr_objs);
uint64_t i;
struct map_node *mn;
return -1;
for (i = 0; i < MAX_ARG_LEN; i++) {
- if (!s)
- break;
+ if (!*s)
+ return i;
s++;
}
- if (i == MAX_ARG_LEN)
- return -1;
-
- return i;
+ return -1;
}
int validate_alphanumeric(char *s)
{
int i;
int len = safe_strlen(s);
- if (len < 0)
- return -1;
+ if (len < 0){
+ return 0;
+ }
for (i = 0; i < len; i++) {
- if (!isalnum(s))
- return -1;
+ if (!isalnum(*s))
+ return 0;
s++;
}
- return 0;
+ return 1;
}
int validate_numeric(char *s)
int i;
int len = safe_strlen(s);
if (len < 0)
- return -1;
+ return 0;
for (i = 0; i < len; i++) {
- if (!isdigit(s))
- return -1;
+ if (!isdigit(*s))
+ return 0;
s++;
}
- return 0;
+ return 1;
}
char *spec = "segdev:xsegbd:16:1024:12";
xseg_put_request(xseg, req, srcport);
return -1;
}
+ char *target = xseg_get_target(xseg, req);
+ strncpy(target, name, targetlen);
struct xseg_request_clone *xclone = (struct xseg_request_clone *) xseg_get_data(xseg, req);
if (snaplen < 0)
memset(xclone->target, 0, XSEG_MAX_TARGETLEN);
err_in_arg(i, argv[i]);
} else {
name = argv[i+1];
+ i++;
}
} else {
err_in_arg(i, argv[i]);
else if (!strcmp(argv[2], "resize"))
ret = vlmc_resize(name, size);
else
- fprintf(stderr, "Unknown action (%s)\n", argv[2]);
+ fprintf(stderr, "unknown action (%s)\n", argv[2]);
return ret;
}
# vlmc tool
import os, sys, subprocess, argparse
+from subprocess import call, check_call
def vlmc_create(args):
name = args.name[0]
print >> sys.stderr, "At least one of the size/snap args must be provided"
sys.exit(-1)
- cmd = ["/root/archip_test/xseg/peers/user/vlmc-xseg", "%s" % SPEC, "create", "--name", "%s" % name]
+ cmd = [XSEG_HOME + "/peers/user/vlmc-xseg", "%s" % SPEC, "create", "--name", "%s" % name]
if snap != None:
- cmd.extend("--snap", "%s" % snap)
+ cmd.extend(["--snap", "%s" % snap])
if size != None:
- cmd.extend("--size", "%s" % size)
- cmd.extend("-mp", "%s" % MPORT)
- cmd.extend("-p", "%s" % VTOOL)
+ cmd.extend(["--size", "%s" % size])
+ cmd.extend(["-mp", "%s" % MPORT])
+ cmd.extend(["-p", "%s" % VTOOL])
- result = utils.RunCmd(cmd)
- if result.failed:
+ try:
+ check_call(cmd, stderr=subprocess.STDOUT, shell=False);
+ except Exception:
sys.stderr.write("vlmc creation failed\n")
sys.exit(-1)
def vlmc_remove(args):
name = args.name[0]
- cmd = ["/root/archip_test/xseg/peers/user/vlmc-xseg", "%s" % SPEC, "remove", "--name", "%s" % name]
- cmd.extend("-mp", "%s" % MPORT)
- cmd.extend("-p", "%s" % VTOOL)
+ cmd = [XSEG_HOME + "/peers/user/vlmc-xseg", "%s" % SPEC, "remove", "--name", "%s" % name]
+ cmd.extend(["-mp", "%s" % MPORT])
+ cmd.extend(["-p", "%s" % VTOOL])
result = utils.RunCmd(cmd)
if result.failed:
sys.stderr.write("vlmc creation failed\n")