#include <sys/types.h>
#include <time.h>
+#define FREE_CONST(p) do { free((void*)(unsigned long)p); p = NULL; } while(0)
#define MAX_WAIT 5
#define LOOPS_PER_SEC 5
-#define UUID_PREFIX "mpath-"
-#define UUID_PREFIX_LEN 6
-
static int dm_conf_verbosity;
#ifdef LIBDM_API_DEFERRED
/* DM_UDEV_DISABLE_LIBRARY_FALLBACK is added in dm_addmap */
return (mpp->skip_kpartx == SKIP_KPARTX_ON ?
MPATH_UDEV_NO_KPARTX_FLAG : 0) |
- (mpp->nr_active == 0 ?
+ ((mpp->nr_active == 0 || mpp->ghost_delay_tick > 0)?
MPATH_UDEV_NO_PATHS_FLAG : 0) |
(reload && !mpp->force_udev_reload ?
MPATH_UDEV_RELOAD_FLAG : 0);
return 0;
}
-int dm_get_status(char *name, char *outstatus)
+int dm_get_status(const char *name, char *outstatus)
{
int r = 1;
struct dm_task *dmt;
if (need_suspend &&
!dm_get_map(mapname, &mapsize, params) &&
strstr(params, "queue_if_no_path")) {
- if (!dm_queue_if_no_path((char *)mapname, 0))
+ if (!dm_queue_if_no_path(mapname, 0))
queue_if_no_path = 1;
else
/* Leave queue_if_no_path alone if unset failed */
} while (retries-- > 0);
if (queue_if_no_path == 1)
- dm_queue_if_no_path((char *)mapname, 1);
+ dm_queue_if_no_path(mapname, 1);
return 1;
}
}
int
-dm_fail_path(char * mapname, char * path)
+dm_fail_path(const char * mapname, char * path)
{
char message[32];
}
int
-dm_reinstate_path(char * mapname, char * path)
+dm_reinstate_path(const char * mapname, char * path)
{
char message[32];
}
int
-dm_queue_if_no_path(char *mapname, int enable)
+dm_queue_if_no_path(const char *mapname, int enable)
{
char *message;
}
static int
-dm_groupmsg (char * msg, char * mapname, int index)
+dm_groupmsg (const char * msg, const char * mapname, int index)
{
char message[32];
}
int
-dm_switchgroup(char * mapname, int index)
+dm_switchgroup(const char * mapname, int index)
{
return dm_groupmsg("switch", mapname, index);
}
int
-dm_enablegroup(char * mapname, int index)
+dm_enablegroup(const char * mapname, int index)
{
return dm_groupmsg("enable", mapname, index);
}
int
-dm_disablegroup(char * mapname, int index)
+dm_disablegroup(const char * mapname, int index)
{
return dm_groupmsg("disable", mapname, index);
}
}
int
-dm_geteventnr (char *name)
+dm_geteventnr (const char *name)
{
struct dm_info info;
map = dm_task_get_name(dmt);
if (map && strlen(map))
- response = STRDUP((char *)dm_task_get_name(dmt));
+ response = STRDUP((const char *)dm_task_get_name(dmt));
dm_task_destroy(dmt);
return response;
}
static int
-dm_get_deferred_remove (char * mapname)
+dm_get_deferred_remove (const char * mapname)
{
struct dm_info info;
return r;
}
-void dm_reassign_deps(char *table, char *dep, char *newdep)
+void dm_reassign_deps(char *table, const char *dep, const char *newdep)
{
- char *p, *n;
- char *newtable;
+ char *n;
+ const char *p, *newtable;
newtable = strdup(table);
if (!newtable)
n += strlen(newdep);
p += strlen(dep);
strcat(n, p);
- free(newtable);
+ FREE_CONST(newtable);
}
int dm_reassign_table(const char *name, char *old, char *new)