We're going to want to be able to queue things that are not ordered by
the PG lock. To that end, this patch genearlizes OSD::ShardedOpWQ to
use a type which can specify an ordering token and locking structure
other than a PG.
There is a lot of collateral damage which I didn't feel was worth
separating out into other commits. The code in ShardedOpWQ itself got
some superficial cleanup. Also, the item being queued has been switched
to not use a boost::variant. It was a cute way before to make the type
easily copyable, but adding more visitors for the locking support would
have been annoying. Instead, the variant is a unique_ptr to an
interface. This makes the queue item type no longer copyable, which is
just as well since we don't really want to be copying queue items anyway
(duplicates would be most likely a bug)
Signed-off-by: Samuel Just <sjust@redhat.com> Signed-off-by: Kefu Chai <kchai@redhat.com> Signed-off-by: Myoungwon Oh <omwmw@sk.com>