While testing DR, we found that syseventd was spending a lot of time
processing IPMP sysevent messages from in.mpathd because each ICMP probe
packet generates two sysevents. While syseventd should be able to handle
the load, it seemed generally like a bad thing given that there's a single
queue for "classic" sysevents. As such, I've revised the code to use
sysevent GPECs (PSARC/2002/321). With GPECs:
* We have a dedicated channel for IPMP events. Thus, those who
aren't interested in IPMP events get nothing.
* syseventd is taken out of the picture entirely. Instead, the
event channel is handled by a kernel driver (via /dev/sysevent).
* We can remove some grotty global variables in ipmpstat since we
can now properly pass state to process_probe() using the GPEC
interfaces.
Along the way, I also made some minor modifications to ipmpstat and
in.mpathd for consistency and elegance. Could someone take a look?
http://zhadum.east/ws/clearview/clearview-ipmpdev
BTW, we'll need to update the test suite to listen for GPECs instead of
classic sysevents; I'll work with Xiang on this. I'll also make sure
this gets covered in the PSARC materials.
--
meem