Nir Soffer has uploaded a new change for review.
Change subject: Revert "hba: Run fc-scan in supervdsm" ......................................................................
Revert "hba: Run fc-scan in supervdsm"
In commit 0636b8607b (Revert "supervdsm: Add zombiereaper to supervdsm") We removed zombiereaper from supervdsm, but hba._scan(), called from supervdsm was depending on zombiereaper reaping stuck fc-scan processes. This cause stuck fc-scan Python processes to run as zombie for the whole lifetime of the supervdsm processs.
This revert back to running fc-scan using sudo from vdsm. We can reintrocude the reverted patch when we have a working zombiereaper in supervdsm.
This reverts commit 5a6ae1a266e6808861a10933d7cacb81838050f1.
Change-Id: Ica493bd2e269ae3fcee2e2ec91df5aa5e323a23f Signed-off-by: Nir Soffer nsoffer@redhat.com --- M vdsm/storage/hba.py M vdsm/sudoers.vdsm.in M vdsm/supervdsmServer 3 files changed, 7 insertions(+), 26 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/61/37261/1
diff --git a/vdsm/storage/hba.py b/vdsm/storage/hba.py index efd0273..0d4e688 100644 --- a/vdsm/storage/hba.py +++ b/vdsm/storage/hba.py @@ -31,7 +31,6 @@ from vdsm.infra import zombiereaper
import misc -import supervdsm
log = logging.getLogger("Storage.HBA")
@@ -44,41 +43,27 @@ 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')
- proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False, + log.debug("Starting scan") + proc = utils.execCmd([constants.EXT_FC_SCAN], sync=False, sudo=True, 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) - raise Error("Scan failed: %r" % stderr) + log.error("Scan failed: %r", stderr) + else: + log.debug("Scan finished")
def getiSCSIInitiators(): diff --git a/vdsm/sudoers.vdsm.in b/vdsm/sudoers.vdsm.in index da88ff2..0572866 100644 --- a/vdsm/sudoers.vdsm.in +++ b/vdsm/sudoers.vdsm.in @@ -15,6 +15,7 @@ @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 7a984e4..1c10c81 100755 --- a/vdsm/supervdsmServer +++ b/vdsm/supervdsmServer @@ -65,7 +65,6 @@ 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, \ @@ -347,10 +346,6 @@ @logDecorator def fuser(self, *args, **kwargs): return fuser.fuser(*args, **kwargs) - - @logDecorator - def hbaRescan(self): - return hba._rescan()
@logDecorator def set_rp_filter_loose(self, dev):