]> xenbits.xensource.com Git - people/dstodden/blktap.git/commitdiff
tapdisk-image: Add "iomode" parameter.
authorDaniel Stodden <daniel.stodden@citrix.com>
Tue, 16 Aug 2011 05:48:04 +0000 (22:48 -0700)
committerDaniel Stodden <daniel.stodden@citrix.com>
Tue, 30 Aug 2011 12:41:26 +0000 (13:41 +0100)
Signed-off-by: Daniel Stodden <daniel.stodden@citrix.com>
drivers/tapdisk-image.c
drivers/tapdisk-image.h

index 5bd0c9a73417abb9e262b46bac1db4adc720c334..9da6d27f0685b658b84ff4e5605b7df659e9e86b 100644 (file)
@@ -39,6 +39,7 @@
 #include "tapdisk-interface.h"
 #include "tapdisk-disktype.h"
 #include "tapdisk-storage.h"
+#include "tapdisk-queue.h"
 
 #define DBG(_f, _a...)          tlog_syslog(TLOG_DBG, _f, ##_a)
 #define INFO(_f, _a...)         tlog_syslog(TLOG_INFO, _f, ##_a)
@@ -67,10 +68,12 @@ static const td_param_t image_opts[] = {
        TD_PARAM_BOOL(struct td_image_opts, shareable, 0),
        TD_PARAM_BOOL(struct td_image_opts, strict, 0),
        TD_PARAM_BOOL(struct td_image_opts, quiet, 0),
+       TD_PARAM_UINT(struct td_image_opts, iomode, 0),
 };
 
 static const struct td_image_opts image_defaults = {
        0,
+       .iomode =       TIO_MODE_DEFAULT,
 };
 
 static td_params_info_t image_opts_info =
@@ -286,6 +289,7 @@ int
 tapdisk_image_open(int type, const char *name, td_flag_t flags,
                   const char *opts, td_image_t **_image)
 {
+       td_driver_t *driver;
        td_image_t *image;
        int err;
 
@@ -305,14 +309,18 @@ tapdisk_image_open(int type, const char *name, td_flag_t flags,
        if (!err)
                goto done;
 
-       image->driver = tapdisk_driver_allocate(image->type,
-                                               image->name,
-                                               image->flags);
-       if (!image->driver) {
+       driver = tapdisk_driver_allocate(image->type,
+                                        image->name,
+                                        image->flags);
+       if (!driver) {
                err = -ENOMEM;
                goto fail;
        }
 
+       driver->iomode = image->opts.iomode;
+
+       image->driver = driver;
+
        err = td_open(image);
        if (err)
                goto fail;
@@ -583,12 +591,13 @@ tapdisk_image_validate_chain(struct list_head *head)
        }
 
        tapdisk_for_each_image(image, head) {
-               INFO("%s: type:%s(%d) storage:%s(%d) flags=%#x\n",
+               INFO("%s: type:%s(%d) storage:%s(%d) flags=%#x iomode=%#lx\n",
                     image->name,
                     tapdisk_disk_types[image->type]->name,
                     image->type,
                     tapdisk_storage_name(image->driver->storage),
-                    image->driver->storage, image->flags);
+                    image->driver->storage, image->flags,
+                    image->opts.iomode);
        }
 
        return 0;
index da24abd10e0a02f369f41a47bf93e971e0f8eb46..bfefe4197026b0d2ef01cb30978ae499b257d707 100644 (file)
@@ -35,6 +35,7 @@ struct td_image_opts {
        int             shareable;
        int             strict;
        int             quiet;
+       unsigned long   iomode;
 };
 
 struct td_image_handle {