public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib/mirror mirrored.c Date: Wed, 17 Jan 2007 15:00:00 -0000 [thread overview] Message-ID: <20070117150057.18109.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2007-01-17 15:00:57 Modified files: lib/mirror : mirrored.c Log message: merge _target_*register_events introduce _create_dm_event_handler() Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/mirror/mirrored.c.diff?cvsroot=lvm2&r1=1.42&r2=1.43 --- LVM2/lib/mirror/mirrored.c 2007/01/16 23:05:13 1.42 +++ LVM2/lib/mirror/mirrored.c 2007/01/17 15:00:57 1.43 @@ -368,7 +368,7 @@ } #ifdef DMEVENTD -static int _setup_registration(struct cmd_context *cmd, char **dso) +static int _get_mirror_dso_path(struct cmd_context *cmd, char **dso) { char *path; const char *libpath; @@ -388,6 +388,29 @@ return 1; } +static struct dm_event_handler *_create_dm_event_handler(const char *dmname, + const char *dso, + enum dm_event_mask mask) +{ + struct dm_event_handler *dmevh; + + if (!(dmevh = dm_event_handler_create())) + return_0; + + if (dm_event_handler_set_dso(dmevh, dso)) + goto fail; + + if (dm_event_handler_set_dev_name(dmevh, dmname)) + goto fail; + + dm_event_handler_set_event_mask(dmevh, mask); + return dmevh; + +fail: + dm_event_handler_destroy(dmevh); + return NULL; +} + static int _target_registered(struct lv_segment *seg, int *pending) { char *dso, *name; @@ -400,21 +423,15 @@ vg = lv->vg; *pending = 0; - if (!_setup_registration(vg->cmd, &dso)) { - stack; - return 0; - } + if (!_get_mirror_dso_path(vg->cmd, &dso)) + return_0; if (!(name = build_dm_name(vg->cmd->mem, vg->name, lv->name, NULL))) return_0; - if (!(dmevh = dm_event_handler_create())) + if (!(dmevh = _create_dm_event_handler(name, dso, DM_EVENT_ALL_ERRORS))) return_0; - dm_event_handler_set_dso(dmevh, dso); - dm_event_handler_set_dev_name(dmevh, name); - dm_event_handler_set_event_mask(dmevh, DM_EVENT_ALL_ERRORS); - if (dm_event_get_registered_device(dmevh, 0)) { dm_event_handler_destroy(dmevh); return 0; @@ -432,79 +449,50 @@ } /* FIXME This gets run while suspended and performs banned operations. */ -/* FIXME Merge these two functions */ -static int _target_register_events(struct cmd_context *cmd, +static int _target_set_events(struct cmd_context *cmd, struct lv_segment *seg, - int evmask) + int evmask, int set) { char *dso, *name; struct logical_volume *lv; struct volume_group *vg; struct dm_event_handler *dmevh; + int r; lv = seg->lv; vg = lv->vg; - if (!_setup_registration(cmd, &dso)) { - stack; - return 0; - } + if (!_get_mirror_dso_path(cmd, &dso)) + return_0; if (!(name = build_dm_name(cmd->mem, vg->name, lv->name, NULL))) return_0; - if (!(dmevh = dm_event_handler_create())) + if (!(dmevh = _create_dm_event_handler(name, dso, DM_EVENT_ALL_ERRORS))) return_0; - dm_event_handler_set_dso(dmevh, dso); - dm_event_handler_set_dev_name(dmevh, name); - dm_event_handler_set_event_mask(dmevh, DM_EVENT_ALL_ERRORS); - if (!dm_event_register_handler(dmevh)) { - dm_event_handler_destroy(dmevh); - return_0; - } + r = set ? dm_event_register_handler(dmevh) : dm_event_unregister_handler(dmevh); dm_event_handler_destroy(dmevh); + if (!r) + return_0; - log_info("Registered %s for events", name); + log_info("%s %s for events", set ? "Registered" : "Unregistered", name); return 1; } -static int _target_unregister_events(struct cmd_context *cmd, +static int _target_register_events(struct cmd_context *cmd, struct lv_segment *seg, - int evmask) + int events) { - char *dso; - char *name; - struct logical_volume *lv; - struct volume_group *vg; - struct dm_event_handler *dmevh; - - lv = seg->lv; - vg = lv->vg; - - /* FIXME Remove this and use handle to avoid config file race */ - if (!_setup_registration(cmd, &dso)) - return_0; - - if (!(name = build_dm_name(cmd->mem, vg->name, lv->name, NULL))) - return_0; - - if (!(dmevh = dm_event_handler_create())) - return_0; - - dm_event_handler_set_dso(dmevh, dso); - dm_event_handler_set_dev_name(dmevh, name); - dm_event_handler_set_event_mask(dmevh, DM_EVENT_ALL_ERRORS); - if (!dm_event_unregister_handler(dmevh)) { - dm_event_handler_destroy(dmevh); - return_0; - } - dm_event_handler_destroy(dmevh); - - log_info("Unregistered %s for events", name); + return _target_set_events(cmd, seg, events, 1); +} - return 1; +static int _target_unregister_events(struct cmd_context *cmd, + struct lv_segment *seg, + int events) +{ + return _target_set_events(cmd, seg, events, 0); } #endif /* DMEVENTD */
next reply other threads:[~2007-01-17 15:00 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-01-17 15:00 agk [this message] -- strict thread matches above, loose matches on Subject: below -- 2011-01-05 12:27 zkabelac 2010-08-04 15:55 mornfall 2010-07-21 15:21 jbrassow 2008-04-10 18:53 agk 2007-01-16 23:05 agk 2005-12-21 19:45 agk 2005-12-19 22:36 agk 2005-12-13 15:57 agk 2005-12-13 13:32 agk
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070117150057.18109.qmail@sourceware.org \ --to=agk@sourceware.org \ --cc=lvm-devel@redhat.com \ --cc=lvm2-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).