diff options
Diffstat (limited to 'rpc')
-rw-r--r-- | rpc/block_svc_routines.c | 15 |
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; |