diff options
author | Mike Christie <mchristi@redhat.com> | 2017-01-11 16:32:18 -0600 |
---|---|---|
committer | Mike Christie <mchristi@redhat.com> | 2017-01-11 16:32:18 -0600 |
commit | 59f3fc46596ed0adfa1e9ed9f56dd71c5efdd47e (patch) | |
tree | 2dbab58a36d9d7a790fca997fc5c19553e1389b4 | |
parent | 19efee2bc7e1239ce8a8bd7af599c4903439b2de (diff) | |
download | rtslib-fb-59f3fc46596ed0adfa1e9ed9f56dd71c5efdd47e.tar.gz |
Do not set alua_tg_pt_gp if not supported
Pass through backends do not support alua_tg_pt_gp and writing to
the file will hang the system. Trying to read from them will
cause a rtslib crash because they are empty. This patch fixes
both issues by detecting the empty file and failing writes.
-rw-r--r-- | rtslib/target.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/rtslib/target.py b/rtslib/target.py index 4c06cf4..816be74 100644 --- a/rtslib/target.py +++ b/rtslib/target.py @@ -586,13 +586,23 @@ class LUN(CFSNode): self._check_self() path = "%s/alua_tg_pt_gp" % self.path - group_name = fread(path).splitlines()[0] - return group_name.split(':')[1].strip() + info = fread(path) + if info: + group_line = info.splitlines()[0] + return group_line.split(':')[1].strip() + return None def _set_alua_tg_pt_gp_name(self, group_name): self._check_self() path = "%s/alua_tg_pt_gp" % self.path + + info = fread(path) + if not info: + # pass through backends will not have setup the default + # ALUA structs in the kernel. + raise RTSLibError("This LUN does not support setting the ALUA Target Port Group") + try: fwrite(path, group_name) except IOError as e: |