diff options
author | Jake Wires <jwires@xensource.com> | 2007-04-23 15:37:53 -0700 |
---|---|---|
committer | Jake Wires <jwires@xensource.com> | 2007-04-23 15:37:53 -0700 |
commit | c4f51da19fac025539ac3264b0c6e3f9e0f533b6 (patch) | |
tree | 7de3a11aad0302c3a8fd0a23a0caf2823c682449 /tools/blktap | |
parent | 693730095200181960429abe2fe39ad8134aeae7 (diff) | |
download | xen-c4f51da19fac025539ac3264b0c6e3f9e0f533b6.tar.gz xen-c4f51da19fac025539ac3264b0c6e3f9e0f533b6.tar.bz2 xen-c4f51da19fac025539ac3264b0c6e3f9e0f533b6.zip |
[TAPDISK] Use incremental cookies and fix blktapctrl::test_path parameter typo.
Signed-off-by: Jake Wires <jwires@xensource.com>
Diffstat (limited to 'tools/blktap')
-rw-r--r-- | tools/blktap/drivers/blktapctrl.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/tools/blktap/drivers/blktapctrl.c b/tools/blktap/drivers/blktapctrl.c index 5f78cede2a..499da6add9 100644 --- a/tools/blktap/drivers/blktapctrl.c +++ b/tools/blktap/drivers/blktapctrl.c @@ -177,14 +177,14 @@ static int get_tapdisk_pid(blkif_t *blkif) * return 0 on success, -1 on error. */ -static int test_path(char *path, char **dev, int *type, blkif_t *blkif) +static int test_path(char *path, char **dev, int *type, blkif_t **blkif) { char *ptr, handle[10]; int i, size, found = 0; size = sizeof(dtypes)/sizeof(disk_info_t *); *type = MAX_DISK_TYPES + 1; - blkif = NULL; + *blkif = NULL; if ( (ptr = strstr(path, ":"))!=NULL) { memcpy(handle, path, (ptr - path)); @@ -207,9 +207,9 @@ static int test_path(char *path, char **dev, int *type, blkif_t *blkif) /* Check whether tapdisk process already exists */ if (active_disks[dtypes[i]->idnum] == NULL) - blkif = NULL; + *blkif = NULL; else - blkif = active_disks[dtypes[i] + *blkif = active_disks[dtypes[i] ->idnum]->blkif; } return 0; @@ -478,19 +478,20 @@ int blktapctrl_new_blkif(blkif_t *blkif) char *rdctldev, *wrctldev, *cmd, *ptr; image_t *image; blkif_t *exist = NULL; + static uint16_t next_cookie = 0; DPRINTF("Received a poll for a new vbd\n"); if ( ((blk=blkif->info) != NULL) && (blk->params != NULL) ) { if (get_new_dev(&major, &minor, blkif)<0) return -1; - if (test_path(blk->params, &ptr, &type, exist) != 0) { + if (test_path(blk->params, &ptr, &type, &exist) != 0) { DPRINTF("Error in blktap device string(%s).\n", blk->params); return -1; } blkif->drivertype = type; - blkif->cookie = lrand48() % MAX_RAND_VAL; + blkif->cookie = next_cookie++; if (!exist) { DPRINTF("Process does not exist:\n"); |