krbd: fix rbd map hang due to udev return subsystem unordered
Recently we found 'rbd map' hang forever but rbd device can work fine after terminating 'rbd map' or waiting it timed-out by using this change: http://tracker.ceph.com/issues/38792.
We tried to dig into it by adding some logs into krbd.cc and found that the order of subsystem returned by udev_device_get_subsystem might not be same order as adding subsystem by udev_monitor_filter_add_match_subsystem_devtype. So if subsystem 'block' is returned first and subsystem 'rbd' is returned next, then further poll will get nothing back and hang there.
So our fix is no matter which subsystem is returned first, we will deal with it properly. When both subsystems are returned, we will do the final check and compare. If something is wrong, it will still fall into next poll to be timed-out.