From f06103354394ffa86817696a37edb7ddd351bc10 Mon Sep 17 00:00:00 2001 From: Prasanna Kumar Kalever Date: Fri, 9 Feb 2018 17:20:26 +0530 Subject: [PATCH] create: remove stale hba-only dir curretly if there exist any stale hba-only directories, $ ls /sys/kernel/config/target/core/user_0/ hba_info hba_mode Then backend creation fails, $ targetcli /backstores/fileio create block file 1M This _Backstore already exists in configFS We will have to restart target.service or restore the configuration again to clear the stale hba-only dirs. This patch checks for hba directory before creating one, if it is already existing and found to be stale then removes it. Thanks to "Maurizio Lombardi " for debugging along Signed-off-by: Prasanna Kumar Kalever --- rtslib/node.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/rtslib/node.py b/rtslib/node.py index c0092fc..1d77cd1 100644 --- a/rtslib/node.py +++ b/rtslib/node.py @@ -52,9 +52,16 @@ class CFSNode(object): ''' if mode not in ['any', 'lookup', 'create']: raise RTSLibError("Invalid mode: %s" % mode) + if self.exists and mode == 'create': - raise RTSLibError("This %s already exists in configFS" - % self.__class__.__name__) + # ensure that self.path is not stale hba-only dir + if os.path.samefile(os.path.dirname(self.path), self.configfs_dir+'/core') \ + and not next(os.walk(self.path))[1]: + os.rmdir(self.path) + else: + raise RTSLibError("This %s already exists in configFS" + % self.__class__.__name__) + elif not self.exists and mode == 'lookup': raise RTSLibNotInCFS("No such %s in configfs: %s" % (self.__class__.__name__, self.path)) -- 1.8.3.1