Change in vdsm[master]: mailbox: Log traceback after fatal failures in mailbox monitors
by Nir Soffer
Nir Soffer has uploaded a new change for review.
Change subject: mailbox: Log traceback after fatal failures in mailbox monitors
......................................................................
mailbox: Log traceback after fatal failures in mailbox monitors
Mailbox monitor threads were not logging fatal error properly. Now these
threads use our standard @traceback decorator to ensure that failures
are logged properly.
The message when stopping the spm mailbox thread normally was moved out
of the try finally block, to ensure that it shows only for normal
shutdown, and not for unexpected death of the thread, where we will have
a clear traceback.
Change-Id: I68957ca745018349cae488acfe252e902c2af3ae
Signed-off-by: Nir Soffer <nsoffer(a)redhat.com>
---
M vdsm/storage/storage_mailbox.py
1 file changed, 7 insertions(+), 2 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/53/29853/1
diff --git a/vdsm/storage/storage_mailbox.py b/vdsm/storage/storage_mailbox.py
index c31018a..59d0060 100644
--- a/vdsm/storage/storage_mailbox.py
+++ b/vdsm/storage/storage_mailbox.py
@@ -36,6 +36,7 @@
from threadPool import ThreadPool
from storage_exception import InvalidParameterException
from vdsm import constants
+from vdsm import utils
__author__ = "ayalb"
__date__ = "$Mar 9, 2009 5:25:07 PM$"
@@ -425,6 +426,8 @@
MESSAGES_PER_MAILBOX,
repr(self._outgoingMail[start:end])))
+ @utils.traceback(on=log.name,
+ msg="Unhandled exception in HSM_MailMonitor thread")
def run(self):
try:
failures = 0
@@ -778,6 +781,8 @@
finally:
self._outLock.release()
+ @utils.traceback(on=log.name,
+ msg="Unhandled exception in SPM_MailMonitor thread")
def run(self, *args):
try:
while not self._stop:
@@ -788,8 +793,8 @@
self._inLock.release()
self.log.error("Error checking for mail", exc_info=True)
time.sleep(self._monitorInterval)
+ self.log.info("SPM_MailMonitor - Incoming mail monitoring thread "
+ "stopped")
finally:
self._stopped = True
self.tp.joinAll(waitForTasks=False)
- self.log.info("SPM_MailMonitor - Incoming mail monitoring thread "
- "stopped")
--
To view, visit http://gerrit.ovirt.org/29853
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I68957ca745018349cae488acfe252e902c2af3ae
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Nir Soffer <nsoffer(a)redhat.com>
9 years, 2 months
Change in vdsm[master]: netinfo: report a gateway for statically configured networks
by osvoboda@redhat.com
Ondřej Svoboda has uploaded a new change for review.
Change subject: netinfo: report a gateway for statically configured networks
......................................................................
netinfo: report a gateway for statically configured networks
Change-Id: I65b8c789cf393fbb9aa9d040c38d2c9d9f281864
Bug-Url: https://bugzilla.redhat.com/1186330
Signed-off-by: Ondřej Svoboda <osvoboda(a)redhat.com>
---
M lib/vdsm/netinfo.py
1 file changed, 6 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/40/37440/1
diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py
index 0ee8405..dc6e5f0 100644
--- a/lib/vdsm/netinfo.py
+++ b/lib/vdsm/netinfo.py
@@ -609,8 +609,13 @@
routes_by_dev = _get_routes()
routes = routes_by_dev[dev]
+ # The system's default gateway should be the (only) one we find in the
+ # 'main' routing table. However, if we query a different interface for
+ # which the source route thread manages routing in a separate table (with
+ # an ID currently derived from the interface's address) we have to look in
+ # all tables.
gateways = [r for r in routes if r['destination'] == 'none' and
- r.get('table') == table and r['scope'] == 'global' and
+ (r.get('table') == table or dev) and r['scope'] == 'global' and
r['family'] == ('inet6' if family == 6 else 'inet')]
try:
gateway, = gateways
--
To view, visit http://gerrit.ovirt.org/37440
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I65b8c789cf393fbb9aa9d040c38d2c9d9f281864
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Ondřej Svoboda <osvoboda(a)redhat.com>
9 years, 2 months
Change in vdsm[master]: gluster: geo-replication pause and resume session
by dnarayan@redhat.com
Darshan N has uploaded a new change for review.
Change subject: gluster: geo-replication pause and resume session
......................................................................
gluster: geo-replication pause and resume session
This patch adds two new verbs to pause and resume
geo-replication session between master and slave
volume. It returns a boolean output.
Change-Id: I024bcee148bab1e713e1bc5c73d288613c466656
Signed-off-by: ndarshan <dnarayan(a)redhat.com>
---
M client/vdsClientGluster.py
M vdsm/gluster/api.py
M vdsm/gluster/cli.py
M vdsm/gluster/exception.py
M vdsm/gluster/vdsmapi-gluster-schema.json
5 files changed, 157 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/69/31069/1
diff --git a/client/vdsClientGluster.py b/client/vdsClientGluster.py
index 421c853..bd7e107 100644
--- a/client/vdsClientGluster.py
+++ b/client/vdsClientGluster.py
@@ -430,6 +430,34 @@
pp.pprint(status)
return status['status']['code'], status['status']['message']
+ def do_glusterVolumeGeoRepPause(self, args):
+ params = self._eqSplit(args)
+ volumeName = params.get('volumeName', '')
+ remoteHost = params.get('remoteHost', '')
+ remoteVolumeName = params.get('remoteVolumeName', '')
+ force = (params.get('force', 'no').upper() == 'YES')
+
+ status = self.s.glusterVolumeGeoRepPause(volumeName,
+ remoteHost,
+ remoteVolumeName,
+ force)
+ pp.pprint(status)
+ return status['status']['code'], status['status']['message']
+
+ def do_glusterVolumeGeoRepResume(self, args):
+ params = self._eqSplit(args)
+ volumeName = params.get('volumeName', '')
+ remoteHost = params.get('remoteHost', '')
+ remoteVolumeName = params.get('remoteVolumeName', '')
+ force = (params.get('force', 'no').upper() == 'YES')
+
+ status = self.s.glusterVolumeGeoRepResume(volumeName,
+ remoteHost,
+ remoteVolumeName,
+ force)
+ pp.pprint(status)
+ return status['status']['code'], status['status']['message']
+
def getGlusterCmdDict(serv):
return \
@@ -731,4 +759,26 @@
('volumeName=<volume name>',
'Returns total, free and used space(bytes) of gluster volume'
)),
+ 'glusterVolumeGeoRepPause': (
+ serv.do_glusterVolumeGeoRepPause,
+ ('volumeName=<master_volume_name> '
+ 'remoteHost=<slave_host_name> '
+ 'remoteVolumeName=<slave_volume_name> '
+ '[force={yes|no}]\n\t'
+ '<master_volume_name>existing volume name in the master node\n\t'
+ '<slave_host_name>is remote slave host name or ip\n\t'
+ '<slave_volume_name>existing volume name in the slave node',
+ 'Pause the geo-replication session'
+ )),
+ 'glusterVolumeGeoRepResume': (
+ serv.do_glusterVolumeGeoRepResume,
+ ('volumeName=<master_volume_name> '
+ 'remoteHost=<slave_host_name> '
+ 'remoteVolumeName=<slave_volume_name> '
+ '[force={yes|no}]\n\t'
+ '<master_volume_name>existing volume name in the master node\n\t'
+ '<slave_host_name>is remote slave host name or ip\n\t'
+ '<slave_volume_name>existing volume name in the slave node',
+ 'Resume the geo-replication session'
+ )),
}
diff --git a/vdsm/gluster/api.py b/vdsm/gluster/api.py
index 0e6c850..abe8ba0 100644
--- a/vdsm/gluster/api.py
+++ b/vdsm/gluster/api.py
@@ -322,6 +322,22 @@
data = self.svdsmProxy.glusterVolumeStatvfs(volumeName)
return self._computeVolumeStats(data)
+ @exportAsVerb
+ def volumeGeoRepPause(self, volumeName, remoteHost, remoteVolumeName,
+ force=False, options=None):
+ self.svdsmProxy.glusterVolumeGeoRepPause(volumeName,
+ remoteHost,
+ remoteVolumeName,
+ force)
+
+ @exportAsVerb
+ def volumeGeoRepResume(self, volumeName, remoteHost, remoteVolumeName,
+ force=False, options=None):
+ self.svdsmProxy.glusterVolumeGeoRepResume(volumeName,
+ remoteHost,
+ remoteVolumeName,
+ force)
+
def getGlusterMethods(gluster):
l = []
diff --git a/vdsm/gluster/cli.py b/vdsm/gluster/cli.py
index 2e1c9a9..7993b18 100644
--- a/vdsm/gluster/cli.py
+++ b/vdsm/gluster/cli.py
@@ -1054,3 +1054,33 @@
return _parseVolumeTasks(xmltree)
except _etreeExceptions:
raise ge.GlusterXmlErrorException(err=[etree.tostring(xmltree)])
+
+
+@makePublic
+def volumeGeoRepPause(volumeName, remoteHost, remoteVolumeName, force=False):
+ command = _getGlusterVolCmd() + ["geo-replication", volumeName,
+ "%s::%s" % (remoteHost, remoteVolumeName),
+ "pause"]
+ if force:
+ command.append('force')
+ try:
+ _execGlusterXml(command)
+ return True
+ except ge.GlusterCmdFailedException as e:
+ raise ge.GlusterVolumeGeoRepPauseFailedException(rc=e.rc,
+ err=e.err)
+
+
+@makePublic
+def volumeGeoRepResume(volumeName, remoteHost, remoteVolumeName, force=False):
+ command = _getGlusterVolCmd() + ["geo-replication", volumeName,
+ "%s::%s" % (remoteHost, remoteVolumeName),
+ "resume"]
+ if force:
+ command.append('force')
+ try:
+ _execGlusterXml(command)
+ return True
+ except ge.GlusterCmdFailedException as e:
+ raise ge.GlusterVolumeGeoRepResumeFailedException(rc=e.rc,
+ err=e.err)
diff --git a/vdsm/gluster/exception.py b/vdsm/gluster/exception.py
index 0205cb1..b7914c0 100644
--- a/vdsm/gluster/exception.py
+++ b/vdsm/gluster/exception.py
@@ -506,3 +506,19 @@
class GlfsFiniException(GlusterLibgfapiException):
code = 4573
message = "glfs fini failed"
+
+
+#geo-replication
+class GlusterGeoRepException(GlusterException):
+ code = 4560
+ message = "Gluster Geo-Replication Exception"
+
+
+class GlusterVolumeGeoRepPauseFailedException(GlusterVolumeException):
+ code = 4575
+ message = "Volume geo-replication pause failed"
+
+
+class GlusterVolumeGeoRepResumeFailedException(GlusterVolumeException):
+ code = 4576
+ message = "Volume geo-replication resume failed"
diff --git a/vdsm/gluster/vdsmapi-gluster-schema.json b/vdsm/gluster/vdsmapi-gluster-schema.json
index 4ddd182..47003e5 100644
--- a/vdsm/gluster/vdsmapi-gluster-schema.json
+++ b/vdsm/gluster/vdsmapi-gluster-schema.json
@@ -1238,3 +1238,48 @@
{'command': {'class': 'GlusterVolume', 'name': 'statsInfoGet'},
'data': {'volumeName': 'str'},
'returns': 'GlusterVolumeStatsInfo'}
+
+
+##
+# @GlusterVolume.geoRepSessionPause:
+#
+# Pauses the Geo Replication session
+#
+# @volName: Is an existing volume name in the master node
+#
+# @remoteHost: Is remote slave host name or ip
+#
+# @remoteVolumeName: Is an available existing volume name in the slave node
+#
+# @force: For pausing a geo-replication session forcefully
+#
+# Returns:
+# True if session is successfully Paused
+#
+# Since: 4.16.0
+##
+{'command': {'class': 'GlusterVolume', 'name': 'geoRepSessionStart'},
+ 'data': {'volName': 'str', 'remoteHost': 'str', 'remoteVolumeName': 'str', 'force': 'bool'},
+ 'returns': 'bool'}
+
+##
+# @GlusterVolume.geoRepSessionResume:
+#
+# Resumes the Geo Replication session
+#
+# @volName: Is an existing volume name in the master node
+#
+# @remoteHost: Is remote slave host name or ip
+#
+# @remoteVolumeName: Is an available existing volume name in the slave node
+#
+# @force: For resuming a georeplication session forcefully
+#
+# Returns:
+# True if session is successfully resumed
+#
+# Since: 4.16.0
+##
+{'command': {'class': 'GlusterVolume', 'name': 'geoRepSessionStop'},
+ 'data': {'volName': 'str', 'remoteHost': 'str', 'remoteVolumeName': 'str', 'force': 'bool'},
+ 'returns': 'bool'}
--
To view, visit http://gerrit.ovirt.org/31069
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I024bcee148bab1e713e1bc5c73d288613c466656
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Darshan N <dnarayan(a)redhat.com>
9 years, 2 months
Change in vdsm[master]: tests: 'ip link del dev <bridge>' fails on rhel6 if the brid...
by ibarkan@redhat.com
Ido Barkan has uploaded a new change for review.
Change subject: tests: 'ip link del dev <bridge>' fails on rhel6 if the bridge device is still up.
......................................................................
tests: 'ip link del dev <bridge>' fails on rhel6 if the bridge device is still up.
Change-Id: I3e4921ee64cb36fef1a0658a991aa95b09e117cb
Signed-off-by: Ido Barkan <ibarkan(a)redhat.com>
---
M tests/functional/networkTests.py
1 file changed, 11 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/42/37442/1
diff --git a/tests/functional/networkTests.py b/tests/functional/networkTests.py
index 46ec4d8..a7a223c 100644
--- a/tests/functional/networkTests.py
+++ b/tests/functional/networkTests.py
@@ -1929,7 +1929,17 @@
self.assertEqual(status, SUCCESS, msg)
self.assertNetworkExists(NETWORK_NAME)
device_to_remove = NETWORK_NAME if bridged else nic + '.' + VLAN_ID
- ipwrapper.linkDel(device_to_remove)
+ try:
+ ipwrapper.linkDel(device_to_remove)
+ except ipwrapper.IPRoute2Error:
+ if bridged and _system_is_el6():
+ execCmd([EXT_IFDOWN, NETWORK_NAME])
+ rc, _, err = execCmd([EXT_BRCTL, 'delbr', NETWORK_NAME])
+ if rc != 0:
+ raise self.failureException("failed to delete bridge"
+ "err:%s", err)
+ else:
+ raise
self.vdsm_net.refreshNetinfo()
self.assertNotIn(NETWORK_NAME, self.vdsm_net.netinfo.networks)
status, msg = self.vdsm_net.setupNetworks(network, {},
--
To view, visit http://gerrit.ovirt.org/37442
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3e4921ee64cb36fef1a0658a991aa95b09e117cb
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Ido Barkan <ibarkan(a)redhat.com>
9 years, 2 months
Change in vdsm[master]: hostdev: add support for reporting scsi addresses
by Martin Polednik
Martin Polednik has uploaded a new change for review.
Change subject: hostdev: add support for reporting scsi addresses
......................................................................
hostdev: add support for reporting scsi addresses
This patch extends the addr field in hostdev tree that holds map of
address fields relevant to the device. This is required in order to
passthrough a scsi device
Change-Id: I5219108fb820f302d0abbde598183e8e8de534c2
Signed-off-by: Martin Polednik <mpolednik(a)redhat.com>
---
M vdsm/hostdev.py
1 file changed, 6 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/83/35783/1
diff --git a/vdsm/hostdev.py b/vdsm/hostdev.py
index 733e6d4..e8cdc0a 100644
--- a/vdsm/hostdev.py
+++ b/vdsm/hostdev.py
@@ -35,11 +35,16 @@
return _parse_address(caps, ('domain', 'bus', 'slot', 'function'))
+def _parse_scsi_address(caps):
+ return _parse_address(caps, ('host', 'bus', 'target', 'lun'))
+
+
def _parse_device_params(device_xml):
"""
Process device_xml and return dict of found known parameters
"""
- address_parser = {'pci': _parse_pci_address}
+ address_parser = {'pci': _parse_pci_address,
+ 'scsi': _parse_scsi_address}
params = {}
--
To view, visit http://gerrit.ovirt.org/35783
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5219108fb820f302d0abbde598183e8e8de534c2
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Martin Polednik <mpolednik(a)redhat.com>
9 years, 2 months
Change in vdsm[master]: netinfo: routes_by_dev parameter is never None anyway so _ge...
by ibarkan@redhat.com
Ido Barkan has uploaded a new change for review.
Change subject: netinfo: routes_by_dev parameter is never None anyway so _get_gateway can be simpified.
......................................................................
netinfo: routes_by_dev parameter is never None anyway
so _get_gateway can be simpified.
Change-Id: I27c1c97e1b59ab45cc1bb3e7a358021c62c919d2
Signed-off-by: Ido Barkan <ibarkan(a)redhat.com>
---
M lib/vdsm/netinfo.py
1 file changed, 1 insertion(+), 3 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/41/37441/1
diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py
index 0ee8405..0d6250a 100644
--- a/lib/vdsm/netinfo.py
+++ b/lib/vdsm/netinfo.py
@@ -599,14 +599,12 @@
return addrs
-def _get_gateway(routes_by_dev=None, dev=None, family=4,
+def _get_gateway(routes_by_dev, dev=None, family=4,
table=nl_route._RT_TABLE_MAIN):
"""Returns the default gateway for a device and an address family"""
if dev is None: # get all routes
routes = nl_route.iter_routes()
else: # get only routes for the device
- if routes_by_dev is None:
- routes_by_dev = _get_routes()
routes = routes_by_dev[dev]
gateways = [r for r in routes if r['destination'] == 'none' and
--
To view, visit http://gerrit.ovirt.org/37441
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I27c1c97e1b59ab45cc1bb3e7a358021c62c919d2
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Ido Barkan <ibarkan(a)redhat.com>
9 years, 2 months
Change in vdsm[ovirt-3.5]: Set sysctl to allow iSCSI multipath with multiple NICs in th...
by Maor Lipchuk
Hello Yaniv Bronhaim, Federico Simoncelli, Amador Pahim,
I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/37311
to review the following change.
Change subject: Set sysctl to allow iSCSI multipath with multiple NICs in the same subnet
......................................................................
Set sysctl to allow iSCSI multipath with multiple NICs in the same subnet
When two or more interfaces are in the same subnet, the default OS
behaviour won't allow the independent traffic between local NICs and
iSCSI targets.
These sysctl tweaks are needed to have iSCSI multipath working in
such topology:
eth1 (192.168.25.200) --|
|-- iSCSI Target (192.168.25.10)
eth2 (192.168.25.201) --|
For the ARP flux problem, where the machine may respond to ARP requests
from both Ethernet interfaces, we are setting "arp_ignore=1" and
"arp_announce=2"
To allow multiple iSCSI connections in a multiple NIC per subnet
configuration, reverse path filtering must be loosened with
"rp_filter=2" for the interfaces.
Change-Id: Ibf93d49317c76aece764e53e58e0ff28868f16b0
Bug-Url: https://bugzilla.redhat.com/1178838
Signed-off-by: Amador Pahim <apahim(a)redhat.com>
Reviewed-on: http://gerrit.ovirt.org/31529
Reviewed-by: Federico Simoncelli <fsimonce(a)redhat.com>
Reviewed-by: Yaniv Bronhaim <ybronhei(a)redhat.com>
---
M vdsm/storage/iscsi.py
M vdsm/vdsm-sysctl.conf
2 files changed, 60 insertions(+), 1 deletion(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/11/37311/1
diff --git a/vdsm/storage/iscsi.py b/vdsm/storage/iscsi.py
index 2975776..37c9d98 100644
--- a/vdsm/storage/iscsi.py
+++ b/vdsm/storage/iscsi.py
@@ -32,6 +32,7 @@
import misc
from vdsm.config import config
+from vdsm.netinfo import getRouteDeviceTo
import devicemapper
from threading import RLock
@@ -161,6 +162,9 @@
iscsiadm.node_update(iface.name, portalStr, target.iqn,
key, value, hideValue=True)
+ setRpFilterIfNeeded(iface.netIfaceName, target.portal.hostname,
+ True)
+
iscsiadm.node_login(iface.name, portalStr, target.iqn)
iscsiadm.node_update(iface.name, portalStr, target.iqn,
@@ -183,6 +187,7 @@
pass
iscsiadm.node_delete(iface.name, portalStr, target.iqn)
+ setRpFilterIfNeeded(iface.netIfaceName, target.portal.hostname, False)
def addIscsiPortal(iface, portal, credentials=None):
@@ -499,9 +504,53 @@
def disconnectiScsiSession(sessionID):
# FIXME : Should throw exception on error
sessionID = int(sessionID)
+ sessionInfo = getSessionInfo(sessionID)
try:
iscsiadm.session_logout(sessionID)
except iscsiadm.IscsiError as e:
return e[0]
+ netIfaceName = sessionInfo.iface.netIfaceName
+ hostname = sessionInfo.target.portal.hostname
+ setRpFilterIfNeeded(netIfaceName, hostname, False)
+
return 0
+
+
+def _sessionsUsingNetiface(netIfaceName):
+ """ Return sessions using netIfaceName """
+ for session in iterateIscsiSessions():
+ if session.iface.netIfaceName == netIfaceName:
+ yield session
+
+
+def setRpFilterIfNeeded(netIfaceName, hostname, loose_mode):
+ """
+ Set rp_filter to loose or strict mode if there's no session using the
+ netIfaceName device and it's not the device used by the OS to reach the
+ 'hostname'.
+ loose mode is needed to allow multiple iSCSI connections in a multiple NIC
+ per subnet configuration. strict mode is needed to avoid the security
+ breach where an untrusted VM can DoS the host by sending it packets with
+ spoofed random sources.
+
+ Arguments:
+ netIfaceName: the device used by the iSCSI session
+ target: iSCSI target object cointaining the portal hostname
+ loose_mode: boolean
+ """
+ if netIfaceName is None:
+ log.info("iSCSI iface.net_ifacename not provided. Skipping.")
+ return
+
+ sessions = _sessionsUsingNetiface(netIfaceName)
+
+ if not any(sessions) and netIfaceName != getRouteDeviceTo(hostname):
+ if loose_mode:
+ log.info("Setting loose mode rp_filter for device %r." %
+ netIfaceName)
+ supervdsm.getProxy().set_rp_filter_loose(netIfaceName)
+ else:
+ log.info("Setting strict mode rp_filter for device %r." %
+ netIfaceName)
+ supervdsm.getProxy().set_rp_filter_strict(netIfaceName)
diff --git a/vdsm/vdsm-sysctl.conf b/vdsm/vdsm-sysctl.conf
index ecd1386..3ad09b8 100644
--- a/vdsm/vdsm-sysctl.conf
+++ b/vdsm/vdsm-sysctl.conf
@@ -1,3 +1,13 @@
-#Set dirty page parameters
+# Set dirty page parameters
vm.dirty_ratio = 5
vm.dirty_background_ratio = 2
+
+# Using iSCSI multipath with multiple interfaces in the same subnet, the
+# default OS behaviour won't allow the independent traffic between local NICs
+# and iSCSI targets (BZ#1112861). The kernel parameters bellow are needed to
+# accomodate this case:
+# For the ARP flux problem, where the machine may respond to ARP requests
+# from all Ethernet interfaces, we are setting "arp_ignore=1" and
+# "arp_announce=2"
+net.ipv4.conf.default.arp_ignore = 1
+net.ipv4.conf.default.arp_announce = 2
--
To view, visit http://gerrit.ovirt.org/37311
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibf93d49317c76aece764e53e58e0ff28868f16b0
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.5
Gerrit-Owner: Maor Lipchuk <mlipchuk(a)redhat.com>
Gerrit-Reviewer: Amador Pahim <apahim(a)redhat.com>
Gerrit-Reviewer: Federico Simoncelli <fsimonce(a)redhat.com>
Gerrit-Reviewer: Yaniv Bronhaim <ybronhei(a)redhat.com>
9 years, 2 months