Nir Soffer has uploaded a new change for review. Change subject: hba: Run fc-scan in supervdsm ......................................................................
hba: Run fc-scan in supervdsm On master zombiereaper is available in supervdsm, so we can run fc-scan from suprevdsm instead of using sudo. Change-Id: If78a464d7d14ce0d0fcf218c7f897d5b810185e4 Signed-off-by: Nir Soffer <nsof...@redhat.com> --- M vdsm/storage/hba.py M vdsm/sudoers.vdsm.in M vdsm/supervdsmServer 3 files changed, 26 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/87/35587/1 diff --git a/vdsm/storage/hba.py b/vdsm/storage/hba.py index 0d4e688..efd0273 100644 --- a/vdsm/storage/hba.py +++ b/vdsm/storage/hba.py @@ -31,6 +31,7 @@ from vdsm.infra import zombiereaper import misc +import supervdsm log = logging.getLogger("Storage.HBA") @@ -43,27 +44,41 @@ NODE_NAME = "node_name" +class Error(Exception): + """ hba operation failed """ + + @misc.samplingmethod def rescan(): """ Rescan HBAs discovering new devices. """ + log.debug("Starting scan") + try: + supervdsm.getProxy().hbaRescan() + except Error as e: + log.error("Scan failed: %s", e) + else: + log.debug("Scan finished") + + +def _rescan(): + """ + Called from supervdsm to perform rescan as root. + """ timeout = config.getint('irs', 'scsi_rescan_maximal_timeout') - log.debug("Starting scan") - proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False, sudo=True, + proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False, execCmdLogger=log) try: proc.wait(timeout) finally: if proc.returncode is None: - log.warning("Timeout scanning") zombiereaper.autoReapPID(proc.pid) + raise Error("Timeout scanning (pid=%s)" % proc.pid) elif proc.returncode != 0: stderr = proc.stderr.read(512) - log.error("Scan failed: %r", stderr) - else: - log.debug("Scan finished") + raise Error("Scan failed: %r" % stderr) def getiSCSIInitiators(): diff --git a/vdsm/sudoers.vdsm.in b/vdsm/sudoers.vdsm.in index 0572866..da88ff2 100644 --- a/vdsm/sudoers.vdsm.in +++ b/vdsm/sudoers.vdsm.in @@ -15,7 +15,6 @@ @BINDIR@/vdsm-tool service-restart multipathd, \ @BINDIR@/vdsm-tool service-reload multipathd, \ @ISCSIADM_PATH@ *, \ - @LIBEXECDIR@/fc-scan, \ @LVM_PATH@, \ @CAT_PATH@ /sys/block/*/device/../../*, \ @CAT_PATH@ /sys/devices/platform/host*, \ diff --git a/vdsm/supervdsmServer b/vdsm/supervdsmServer index 56e38c4..e0e115d 100755 --- a/vdsm/supervdsmServer +++ b/vdsm/supervdsmServer @@ -65,6 +65,7 @@ from storage.iscsi import getDevIscsiInfo as _getdeviSCSIinfo from storage.iscsi import readSessionInfo as _readSessionInfo from supervdsm import _SuperVdsmManager +from storage import hba from storage.fileUtils import chown, resolveGid, resolveUid from storage.fileUtils import validateAccess as _validateAccess from vdsm.constants import METADATA_GROUP, EXT_CHOWN, EXT_UDEVADM, \ @@ -368,6 +369,10 @@ def fuser(self, *args, **kwargs): return fuser.fuser(*args, **kwargs) + @logDecorator + def hbaRescan(self): + return hba._rescan() + def __udevReloadRules(self, guid): if self.__udevOperationReload(): reload = "--reload" -- To view, visit http://gerrit.ovirt.org/35587 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If78a464d7d14ce0d0fcf218c7f897d5b810185e4 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Nir Soffer <nsof...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches