summaryrefslogtreecommitdiffstats
path: root/rpc/block_svc_routines.c
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/block_svc_routines.c')
-rw-r--r--rpc/block_svc_routines.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/rpc/block_svc_routines.c b/rpc/block_svc_routines.c
index f755ee9..175372a 100644
--- a/rpc/block_svc_routines.c
+++ b/rpc/block_svc_routines.c
@@ -25,6 +25,7 @@
# define GB_TGCLI_GLFS_PATH "/backstores/user:glfs"
# define GB_TGCLI_GLFS "targetcli " GB_TGCLI_GLFS_PATH
+# define GB_TGCLI_CHECK GB_TGCLI_GLFS " ls | grep ' %s ' > " DEVNULLPATH
# define GB_TGCLI_ISCSI "targetcli /iscsi"
# define GB_TGCLI_GLOBALS "targetcli set global auto_add_default_portal=false > " DEVNULLPATH
# define GB_TGCLI_SAVE "targetcli / saveconfig > " DEVNULLPATH
@@ -919,6 +920,20 @@ block_delete_1_svc(blockDelete *blk, struct svc_req *rqstp)
}
reply->exit = -1;
+ if (asprintf(&exec, GB_TGCLI_CHECK, blk->block_name) == -1) {
+ goto out;
+ }
+
+ /* Check if block exist on this node ? */
+ if (WEXITSTATUS(system(exec))== 1) {
+ reply->exit = 0;
+ if (asprintf(&reply->out, "No %s.", blk->block_name) == -1) {
+ goto out;
+ }
+ goto out;
+ }
+ GB_FREE(exec);
+
if (asprintf(&iqn, "%s %s %s%s", GB_TGCLI_ISCSI, GB_DELETE,
GB_TGCLI_IQN_PREFIX, blk->gbid) == -1) {
goto out;