extern int
dm_addmap (int task, const char *name, const char *target,
- const char *params, unsigned long long size, const char *uuid) {
+ const char *params, unsigned long long size, const char *uuid,
+ int ro) {
int r = 0;
struct dm_task *dmt;
char *prefixed_uuid = NULL;
if (!dm_task_add_target (dmt, 0, size, target, params))
goto addout;
+ if (ro)
+ dm_task_set_ro(dmt);
+
if (uuid){
prefixed_uuid = MALLOC(UUID_PREFIX_LEN + strlen(uuid) + 1);
if (!prefixed_uuid) {
return r;
}
-extern int
-dm_addmap_create (const char *name, const char *params,
- unsigned long long size, const char *uuid) {
+static int
+_dm_addmap_create (const char *name, const char *params,
+ unsigned long long size, const char *uuid, int ro) {
int r;
- r = dm_addmap(DM_DEVICE_CREATE, name, TGT_MPATH, params, size, uuid);
+ r = dm_addmap(DM_DEVICE_CREATE, name, TGT_MPATH, params, size, uuid,
+ ro);
/*
* DM_DEVICE_CREATE is actually DM_DEV_CREATE + DM_TABLE_LOAD.
* Failing the second part leaves an empty map. Clean it up.
return r;
}
+#define ADDMAP_RW 0
+#define ADDMAP_RO 1
+
+extern int
+dm_addmap_create (const char *name, const char *params,
+ unsigned long long size, const char *uuid) {
+ return _dm_addmap_create(name, params, size, uuid, ADDMAP_RW);
+}
+
+extern int
+dm_addmap_create_ro (const char *name, const char *params,
+ unsigned long long size, const char *uuid) {
+ return _dm_addmap_create(name, params, size, uuid, ADDMAP_RO);
+}
+
extern int
dm_addmap_reload (const char *name, const char *params,
unsigned long long size, const char *uuid) {
- int r;
- r = dm_addmap(DM_DEVICE_RELOAD, name, TGT_MPATH, params, size, uuid);
- return r;
+ return dm_addmap(DM_DEVICE_RELOAD, name, TGT_MPATH, params, size, uuid,
+ ADDMAP_RW);
+}
+
+extern int
+dm_addmap_reload_ro (const char *name, const char *params,
+ unsigned long long size, const char *uuid) {
+ return dm_addmap(DM_DEVICE_RELOAD, name, TGT_MPATH, params, size, uuid,
+ ADDMAP_RO);
}
extern int
int dm_simplecmd (int, const char *);
int dm_addmap_create (const char *, const char *,
unsigned long long size, const char *uuid);
+int dm_addmap_create_ro (const char *, const char *,
+ unsigned long long size, const char *uuid);
int dm_addmap_reload (const char *, const char *,
unsigned long long size, const char *uuid);
+int dm_addmap_reload_ro (const char *, const char *,
+ unsigned long long size, const char *uuid);
int dm_map_present (const char *);
int dm_get_map(char *, unsigned long long *, char *);
int dm_get_status(char *, char *);