<target %s>
backing-store %s
lld iscsi
+ write-cache %s
</target>
"""
VOLUME_CONF_WITH_CHAP_AUTH = """
backing-store %s
lld iscsi
%s
+ write-cache %s
</target>
"""
fileutils.ensure_tree(self.volumes_dir)
vol_id = name.split(':')[1]
+ write_cache = kwargs.get('write_cache', 'on')
if chap_auth is None:
- volume_conf = self.VOLUME_CONF % (name, path)
+ volume_conf = self.VOLUME_CONF % (name, path, write_cache)
else:
volume_conf = self.VOLUME_CONF_WITH_CHAP_AUTH % (name,
- path, chap_auth)
+ path, chap_auth,
+ write_cache)
LOG.info(_('Creating iscsi_target for: %s') % vol_id)
volumes_dir = self.volumes_dir
<target %s>
driver iser
backing-store %s
+ write_cache %s
</target>
"""
VOLUME_CONF_WITH_CHAP_AUTH = """
driver iser
backing-store %s
%s
+ write_cache %s
</target>
"""
self.path = '/foo'
self.vol_id = 'blaa'
self.vol_name = 'volume-blaa'
+ self.write_cache = 'off'
self.db = {}
self.script_template = None
target_helper = self.driver.get_target_helper(self.db)
target_helper.set_execute(self.fake_execute)
target_helper.create_iscsi_target(self.target_name, self.tid,
- self.lun, self.path)
+ self.lun, self.path,
+ write_cache=self.write_cache)
target_helper.show_target(self.tid, iqn=self.target_name)
target_helper.remove_iscsi_target(self.tid, self.lun, self.vol_id,
self.vol_name)
default=0,
help='The upper limit of bandwidth of volume copy. '
'0 => unlimited'),
+ cfg.StrOpt('iscsi_write_cache',
+ default='on',
+ help='Sets the behavior of the iSCSI target to either '
+ 'perform write-back(on) or write-through(off). '
+ 'This parameter is valid if iscsi_helper is set '
+ 'to tgtadm or iseradm.'),
]
# for backward compatibility
iscsi_target,
0,
volume_path,
- chap_auth)
+ chap_auth,
+ write_cache=
+ conf.iscsi_write_cache)
data = {}
data['location'] = self._iscsi_location(
conf.iscsi_ip_address, tid, iscsi_name, conf.iscsi_port, lun)
self.remove_iscsi_target(iscsi_target, 0, volume['id'], volume['name'])
def ensure_export(self, context, volume, iscsi_name, volume_path,
- vg_name, old_name=None):
+ vg_name, conf, old_name=None):
iscsi_target = self._get_target_for_ensure_export(context,
volume['id'])
if iscsi_target is None:
old_name = None
self.create_iscsi_target(iscsi_name, iscsi_target, 0, volume_path,
chap_auth, check_exit_code=False,
- old_name=old_name)
+ old_name=old_name,
+ write_cache=conf.iscsi_write_cache)
def _ensure_iscsi_targets(self, context, host, max_targets):
"""Ensure that target ids have been created in datastore."""
pass
def ensure_export(self, context, volume, iscsi_name, volume_path,
- vg_name, old_name=None):
+ vg_name, conf, old_name=None):
pass
self.remove_iscsi_target(iscsi_target, 0, volume['id'], volume['name'])
def ensure_export(self, context, volume, iscsi_name, volume_path,
- vg_name, old_name=None):
+ vg_name, conf, old_name=None):
try:
volume_info = self.db.volume_get(context, volume['id'])
(auth_method,