#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)
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 =
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;
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;
}
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;