As for the variables, we already carry some important
information within uevents.
Generally, it carries hints for udev rules to instruct them
how they should be applied correctly, which parts should be
run based on the type of the device, it's real meaning with all
relations to other devices taken into account within that
DM subsystem used (e.g. LVM2's snapshots, mirrors...).
Most of this information is really not suitable to be stored
as a sysfs attribute since it deals with userspace notions,
an abstraction layer above device-mapper...
Presumably this information originates from user space when
setting up the device-mapper device, right? Why can't you
simply store it in, say, /var/run/device-mapper?
(Or, better, store it in /dev/.device-mapper/ to avoid hitting
the real disk - /dev is guaranteed to be on tmpfs)