Right...all of that makes sense to me, Edison. I think John's concern with my patch file (which implements the approach you outlined in your last paragraph) is that he didn't like the "attach" command performing logic to create an SR if the SR isn't present.
He wanted a new hypervisor command to create the SR and he wanted this invoked from the CS MS if the driver (or it could be the lifecycle object) says it's managed. We have at least one issue to deal with: 1) Will we allow hypervisor calls in the storage plug-in code? If 'no', then the default storage plug-in is in violation of this restriction. This also means the "attach" hypervisor command needs to create the SR, if need be (the way my patch is coded up already) or the management server has to send a command to the hypervisor to create the SR if the driver needs it (and the driver has to have some way to tell the CS MS to do this).