From: Christophe Vu-Brugier Date: Sun, 20 Aug 2017 17:38:47 +0200 Subject: Display a more meaningful error when targetcli cannot change "dbroot" Git-commit: eecb633e0632e5d1783078c04e94335236a6ccc6 Patch-mainline: v2.1.fb65 The "dbroot" configfs parameter allows to set the directory where persistent information are stored by the kernel, such as persistent reservations or ALUA. Targetcli tries to change the value of the "dbroot" parameter from /var/target/ to /etc/target/. However, if the directory passed to "dbroot" does not exist, the kernel returns an "invalid argument" error: # targetcli [Errno 22] Invalid argument With this patch, a more meaningful message is displayed instead: # targetcli Cannot set dbroot to /etc/target. Please check if this directory exists. This patch fixes issue #103. Signed-off-by: Christophe Vu-Brugier Acked-by: Lee Duncan --- rtslib/root.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rtslib/root.py b/rtslib/root.py index ee7b1039bd06..e1d51168238d 100644 --- a/rtslib/root.py +++ b/rtslib/root.py @@ -164,7 +164,11 @@ class RTSRoot(CFSNode): return self._dbroot = fread(dbroot_path) if self._dbroot != self._preferred_dbroot: - fwrite(dbroot_path, self._preferred_dbroot+"\n") + try: + fwrite(dbroot_path, self._preferred_dbroot+"\n") + except: + raise RTSLibError("Cannot set dbroot to {}. Please check if this directory exists." + .format(self._preferred_dbroot)) self._dbroot = fread(dbroot_path) def _get_dbroot(self):