#include <config.h>
#include <configure.h>
#include <blacklist.h>
+#include <debug.h>
#include "main.h"
#include "cli.h"
{
struct vectors * vecs = (struct vectors *)data;
+ condlog(3, "list paths (operator)");
+
return show_paths(reply, len, vecs);
}
{
struct vectors * vecs = (struct vectors *)data;
+ condlog(3, "list maps (operator)");
+
return show_maps(reply, len, vecs);
}
struct vectors * vecs = (struct vectors *)data;
char * param = get_keyparam(v, PATH);
+ condlog(2, "%s: add path (operator)", param);
+
if (blacklist(conf->blist, param)) {
*reply = strdup("blacklisted");
*len = strlen(*reply) + 1;
+ condlog(2, "%s: path blacklisted", param);
return 0;
}
- return uev_add_path(param, vecs);
+ return ev_add_path(param, vecs);
}
int
struct vectors * vecs = (struct vectors *)data;
char * param = get_keyparam(v, PATH);
- return uev_remove_path(param, vecs);
+ condlog(2, "%s: remove path (operator)", param);
+
+ return ev_remove_path(param, vecs);
}
int
struct vectors * vecs = (struct vectors *)data;
char * param = get_keyparam(v, MAP);
- return uev_add_map(param, vecs);
+ condlog(2, "%s: add map (operator)", param);
+
+ return ev_add_map(param, vecs);
}
int
struct vectors * vecs = (struct vectors *)data;
char * param = get_keyparam(v, MAP);
- return uev_remove_map(param, vecs);
+ condlog(2, "%s: remove map (operator)", param);
+
+ return ev_remove_map(param, vecs);
}
int
char * mapname = get_keyparam(v, MAP);
int groupnum = atoi(get_keyparam(v, GROUP));
+ condlog(2, "%s: switch to path group #%i (operator)", mapname, groupnum);
+
return dm_switchgroup(mapname, groupnum);
}
{
struct vectors * vecs = (struct vectors *)data;
+ condlog(2, "dump pathvec (operator)");
+
return dump_pathvec(reply, len, vecs);
}
{
struct vectors * vecs = (struct vectors *)data;
+ condlog(2, "reconfigure (operator)");
+
return reconfigure(vecs);
}
char * param = get_keyparam(v, MAP);
int r = dm_simplecmd(DM_DEVICE_SUSPEND, param);
+ condlog(2, "%s: suspend (operator)", param);
+
if (!r) /* error */
return 1;
char * param = get_keyparam(v, MAP);
int r = dm_simplecmd(DM_DEVICE_RESUME, param);
+ condlog(2, "%s: resume (operator)", param);
+
if (!r) /* error */
return 1;
if (!pp || !pp->mpp || !pp->mpp->alias)
return 1;
+ condlog(2, "%s: reinstate path %s (operator)",
+ pp->mpp->alias, pp->dev_t);
+
return dm_reinstate_path(pp->mpp->alias, pp->dev_t);
}
if (!pp || !pp->mpp || !pp->mpp->alias)
return 1;
+ condlog(2, "%s: fail path %s (operator)",
+ pp->mpp->alias, pp->dev_t);
+
return dm_fail_path(pp->mpp->alias, pp->dev_t);
}
return 0;
}
-int
+static int
uev_add_map (char * devname, struct vectors * vecs)
{
+ condlog(2, "%s: add map (uevent)", devname);
+ return ev_add_map(devname, vecs);
+}
+
+int
+ev_add_map (char * devname, struct vectors * vecs)
+{
int major, minor;
char dev_t[BLK_DEV_SIZE];
char * alias;
int map_present;
int r = 1;
- condlog(3, "%s: uev_add_map", devname);
-
if (sscanf(devname, "dm-%d", &minor) == 1 &&
!sysfs_get_dev(sysfs_path, devname, dev_t, BLK_DEV_SIZE) &&
sscanf(dev_t, "%d:%d", &major, &minor) == 2)
* if we create a multipath mapped device as a result
* of uev_add_path
*/
- condlog(0, "%s: spurious uevent, devmap already registered",
+ condlog(0, "%s: devmap already registered",
devname);
FREE(alias);
return 0;
}
if (!r)
- condlog(3, "%s devmap %s added", devname, alias);
+ condlog(3, "%s: devmap %s added", alias, devname);
else
- condlog(0, "%s: uev_add_map failed", alias);
+ condlog(0, "%s: uev_add_map %s failed", alias, devname);
FREE(refwwid);
FREE(alias);
return r;
}
-int
+static int
uev_remove_map (char * devname, struct vectors * vecs)
{
+ condlog(2, "%s: remove map (uevent)", devname);
+ return ev_remove_map(devname, vecs);
+}
+
+int
+ev_remove_map (char * devname, struct vectors * vecs)
+{
int minor;
struct multipath * mpp;
- condlog(3, "%s: uev_remove_map", devname);
-
if (sscanf(devname, "dm-%d", &minor) == 1)
mpp = find_mp_by_minor(vecs->mpvec, minor);
else
devname);
return 0;
}
-
- condlog(2, "%s: remove devmap", mpp->alias);
flush_map(mpp, vecs);
return 0;
}
-int
+static int
uev_umount_map (char * devname, struct vectors * vecs)
{
int minor;
struct multipath * mpp;
- condlog(3, "%s: uev_umount_map", devname);
+ condlog(2, "%s: umount map (uevent)", devname);
if (sscanf(devname, "dm-%d", &minor) == 1)
mpp = find_mp_by_minor(vecs->mpvec, minor);
return 0;
}
-int
+static int
uev_add_path (char * devname, struct vectors * vecs)
{
+ condlog(2, "%s: add path (uevent)", devname);
+ return ev_add_path(devname, vecs);
+}
+
+int
+ev_add_path (char * devname, struct vectors * vecs)
+{
struct multipath * mpp;
struct path * pp;
char empty_buff[WWID_SIZE] = {0};
- condlog(3, "%s: uev_add_path", devname);
-
pp = find_path_by_dev(vecs->pathvec, devname);
+
if (pp) {
condlog(0, "%s: spurious uevent, path already in pathvec, %p",
devname, pp->mpp);
return 1;
}
-int
+static int
uev_remove_path (char * devname, struct vectors * vecs)
{
+ condlog(2, "%s: remove path (uevent)", devname);
+ return ev_remove_path(devname, vecs);
+}
+
+int
+ev_remove_path (char * devname, struct vectors * vecs)
+{
struct multipath * mpp;
struct path * pp;
int i;
int rm_path = 1;
- condlog(3, "%s: uev_remove_path", devname);
-
pp = find_path_by_dev(vecs->pathvec, devname);
+
if (!pp) {
condlog(0, "%s: spurious uevent, path not in pathvec", devname);
return 1;
{
struct config * old = conf;
- condlog(0, "reconfigure");
-
/*
* free old map and path vectors ... they use old conf state
*/
static void
sighup (int sig)
{
- condlog(3, "SIGHUP received");
+ condlog(2, "reconfigure (SIGHUP)");
lock(gvecs->lock);
reconfigure(gvecs);
int show_paths (char **, int *, struct vectors *);
int show_maps (char **, int *, struct vectors *);
int dump_pathvec (char **, int *, struct vectors *);
-int uev_add_path (char *, struct vectors *);
-int uev_remove_path (char *, struct vectors *);
-int uev_add_map (char *, struct vectors *);
-int uev_remove_map (char *, struct vectors *);
+int ev_add_path (char *, struct vectors *);
+int ev_remove_path (char *, struct vectors *);
+int ev_add_map (char *, struct vectors *);
+int ev_remove_map (char *, struct vectors *);
#endif /* MAIN_H */