# HG changeset patch
# User Jake Wires <jwires@xxxxxxxxxxxxx>
# Date 1177367873 25200
# Node ID f033cc5cc0d5f14ee59a5309224aea7565fa8e87
# Parent 6139337e26903d18edc1ff9ce4df1f1b0cfa76f2
[TAPDISK] Use incremental cookies and fix blktapctrl::test_path parameter typo.
Signed-off-by: Jake Wires <jwires@xxxxxxxxxxxxx>
---
tools/blktap/drivers/blktapctrl.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff -r 6139337e2690 -r f033cc5cc0d5 tools/blktap/drivers/blktapctrl.c
--- a/tools/blktap/drivers/blktapctrl.c Mon Apr 23 16:37:03 2007 +0100
+++ b/tools/blktap/drivers/blktapctrl.c Mon Apr 23 15:37:53 2007 -0700
@@ -177,14 +177,14 @@ static int get_tapdisk_pid(blkif_t *blki
* 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 **
/* 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");
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|