Currently the cinder scheduler views each backend as a homogenous pool of storage. In reality, storage controllers often have different "pools" of storage with distinct characteristics and capacities, defined either by available hardware or by administrative decisions.
There are some possible workaround for this situation today but they all have huge flaws.
We have prototyped a few approaches to allow a single driver/backend to expose multiple pools to the scheduler with simple extensions to the existing design.