clientIF: Rescan devices if device not found after vmHotplugDisk

According to the analysis in the bug, invoking vmHotplugDisk right after
connectStorageServer may not leave enough time for multipathd to create
the device, leading to unnecessary failure.

As I understand, multipathd is receiving events from udev and creating
devices. The race is probably related to the asynchronous nature of this
mechanism. Invoking multipath.rescan() force synchronous update of the
found devices.

The original fix in commit 15c7f74365cb5d2c9258bc333c441941c6e42bdb
tried to to invoke multipath.rescan() if the device was not found. Due
to a unfortunate error, multipath.rescan() was never invoked.  Although
the bug was never fixed, QE verified it and customers are using this
code for the last 6 month.  We believe that the problem is a tiny race
that is unlikely to happen, but it is possible and should be fixed.

This patch implements the original fix in a different way, calling
getDevicesVisibility(), which invokes multipath.rescan() if a device is
missing.

Change-Id: I3d75ac53ca809b7a25d7fb237ec661dd865e31fc
Relates-To: https://bugzilla.redhat.com/923773
Bug-Url: https://bugzilla.redhat.com/1044068
Signed-off-by: Nir Soffer <nsoffer@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/21181
Reviewed-by: Ayal Baron <abaron@redhat.com>
Reviewed-by: Allon Mureinik <amureini@redhat.com>
Reviewed-by: Federico Simoncelli <fsimonce@redhat.com>