[Ocfs2-tools-devel] [PATCH 9/9] ocfs2_controld: Notify dlm_controld when we have a node go down.
Joel Becker
Joel.Becker at oracle.com
Wed Aug 13 22:57:46 PDT 2008
On Wed, Aug 13, 2008 at 06:56:16PM -0700, Mark Fasheh wrote:
> > +void dlmcontrol_node_down(const char *name, int nodeid)
> > +{
> > + int rc;
> > + struct dlmcontrol_fs *df;
> > + struct dlmcontrol_notification *dn;
> > +
> > + df = find_fs(name);
> > + if (!df) {
> > + log_error("Name \"%s\" is unknown", name);
> > + return;
> > + }
> > +
> > + dn = find_notification(df, nodeid);
> > + if (!dn) {
> > + dn = malloc(sizeof(struct dlmcontrol_notification));
> > + if (!dn) {
> > + log_error("Unable to allocate memory");
> > + goto fail;
> > + }
> > + dn->dn_nodeid = nodeid;
> > + list_add(&dn->dn_list, &df->df_notifications);
> > + }
> > +
> > + log_debug("Sending notification of node %d for \"%s\"",
> > + dn->dn_nodeid, df->df_name);
> > + rc = dlmc_fs_notified(dlmcontrol_fd, df->df_name, dn->dn_nodeid);
>
> Is dlmc_fs_notified() itself also fire and forget? Can we get into a
> situation where it'll take us to notify_result(), which will in turn call it
> again, which will in turn call notify_result, etc until we've eaten up a
> whole lot of stack...
I see what you mean. We're safe here. dlmc_fs_notified() sends
the notify message to dlm_controld, but does not process any replies.
It won't recurse. We pop back out to main.c:loop(), and can only get
notify_result() after a poll event.
Joel
--
Life's Little Instruction Book #80
"Slow dance"
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
More information about the Ocfs2-tools-devel
mailing list