RPC: rename rpc destroy_lvol_bdev to bdev_lvol_delete

Signed-off-by: Maciej Wawryk <maciejx.wawryk@intel.com>
Change-Id: Idc05cca794c51801bee4c162ab6f632367287926
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466707
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Maciej Wawryk 2019-08-29 12:33:16 +02:00 committed by Ben Walker
parent f5cf8ea1fc
commit b5fdf4ec24
20 changed files with 115 additions and 112 deletions

View File

@ -300,7 +300,7 @@ Example response:
"delete_ftl_bdev", "delete_ftl_bdev",
"construct_ftl_bdev", "construct_ftl_bdev",
"bdev_lvol_get_lvstores", "bdev_lvol_get_lvstores",
"destroy_lvol_bdev", "bdev_lvol_delete",
"bdev_lvol_resize", "bdev_lvol_resize",
"bdev_lvol_set_read_only", "bdev_lvol_set_read_only",
"bdev_lvol_decouple_parent", "bdev_lvol_decouple_parent",
@ -5180,7 +5180,7 @@ Example response:
} }
~~~ ~~~
## destroy_lvol_bdev {#rpc_destroy_lvol_bdev} ## bdev_lvol_delete {#rpc_bdev_lvol_delete}
Destroy a logical volume. Destroy a logical volume.
@ -5197,7 +5197,7 @@ Example request:
~~~ ~~~
{ {
"jsonrpc": "2.0", "jsonrpc": "2.0",
"method": "destroy_lvol_bdev", "method": "bdev_lvol_delete",
"id": 1, "id": 1,
"params": { "params": {
"name": "51638754-ca16-43a7-9f8f-294a0805ab0a" "name": "51638754-ca16-43a7-9f8f-294a0805ab0a"

View File

@ -94,7 +94,7 @@ destroy_lvol_store [-h] [-u UUID] [-l LVS_NAME]
Destroy lvolstore on specified bdev. Removes lvolstore along with lvols on Destroy lvolstore on specified bdev. Removes lvolstore along with lvols on
it. User can identify lvol store by UUID or its name. Note that destroying it. User can identify lvol store by UUID or its name. Note that destroying
lvolstore requires using this call, while deleting single lvol requires lvolstore requires using this call, while deleting single lvol requires
using destroy_lvol_bdev rpc call. using bdev_lvol_delete rpc call.
optional arguments: optional arguments:
-h, --help show help -h, --help show help
bdev_lvol_get_lvstores [-h] [-u UUID] [-l LVS_NAME] bdev_lvol_get_lvstores [-h] [-u UUID] [-l LVS_NAME]
@ -125,7 +125,7 @@ get_bdevs [-h] [-b NAME]
optional arguments: optional arguments:
-h, --help show help -h, --help show help
-b NAME, --name NAME Name of the block device. Example: Nvme0n1 -b NAME, --name NAME Name of the block device. Example: Nvme0n1
destroy_lvol_bdev [-h] bdev_name bdev_lvol_delete [-h] bdev_name
Deletes a logical volume previously created by construct_lvol_bdev. Deletes a logical volume previously created by construct_lvol_bdev.
optional arguments: optional arguments:
-h, --help show help -h, --help show help

View File

@ -918,22 +918,22 @@ cleanup:
SPDK_RPC_REGISTER("bdev_lvol_set_read_only", spdk_rpc_bdev_lvol_set_read_only, SPDK_RPC_RUNTIME) SPDK_RPC_REGISTER("bdev_lvol_set_read_only", spdk_rpc_bdev_lvol_set_read_only, SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_lvol_set_read_only, set_read_only_lvol_bdev) SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_lvol_set_read_only, set_read_only_lvol_bdev)
struct rpc_destroy_lvol_bdev { struct rpc_bdev_lvol_delete {
char *name; char *name;
}; };
static void static void
free_rpc_destroy_lvol_bdev(struct rpc_destroy_lvol_bdev *req) free_rpc_bdev_lvol_delete(struct rpc_bdev_lvol_delete *req)
{ {
free(req->name); free(req->name);
} }
static const struct spdk_json_object_decoder rpc_destroy_lvol_bdev_decoders[] = { static const struct spdk_json_object_decoder rpc_bdev_lvol_delete_decoders[] = {
{"name", offsetof(struct rpc_destroy_lvol_bdev, name), spdk_json_decode_string}, {"name", offsetof(struct rpc_bdev_lvol_delete, name), spdk_json_decode_string},
}; };
static void static void
_spdk_rpc_destroy_lvol_bdev_cb(void *cb_arg, int lvolerrno) _spdk_rpc_bdev_lvol_delete_cb(void *cb_arg, int lvolerrno)
{ {
struct spdk_json_write_ctx *w; struct spdk_json_write_ctx *w;
struct spdk_jsonrpc_request *request = cb_arg; struct spdk_jsonrpc_request *request = cb_arg;
@ -953,15 +953,15 @@ invalid:
} }
static void static void
spdk_rpc_destroy_lvol_bdev(struct spdk_jsonrpc_request *request, spdk_rpc_bdev_lvol_delete(struct spdk_jsonrpc_request *request,
const struct spdk_json_val *params) const struct spdk_json_val *params)
{ {
struct rpc_destroy_lvol_bdev req = {}; struct rpc_bdev_lvol_delete req = {};
struct spdk_bdev *bdev; struct spdk_bdev *bdev;
struct spdk_lvol *lvol; struct spdk_lvol *lvol;
if (spdk_json_decode_object(params, rpc_destroy_lvol_bdev_decoders, if (spdk_json_decode_object(params, rpc_bdev_lvol_delete_decoders,
SPDK_COUNTOF(rpc_destroy_lvol_bdev_decoders), SPDK_COUNTOF(rpc_bdev_lvol_delete_decoders),
&req)) { &req)) {
SPDK_INFOLOG(SPDK_LOG_LVOL_RPC, "spdk_json_decode_object failed\n"); SPDK_INFOLOG(SPDK_LOG_LVOL_RPC, "spdk_json_decode_object failed\n");
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
@ -982,13 +982,14 @@ spdk_rpc_destroy_lvol_bdev(struct spdk_jsonrpc_request *request,
goto cleanup; goto cleanup;
} }
vbdev_lvol_destroy(lvol, _spdk_rpc_destroy_lvol_bdev_cb, request); vbdev_lvol_destroy(lvol, _spdk_rpc_bdev_lvol_delete_cb, request);
cleanup: cleanup:
free_rpc_destroy_lvol_bdev(&req); free_rpc_bdev_lvol_delete(&req);
} }
SPDK_RPC_REGISTER("destroy_lvol_bdev", spdk_rpc_destroy_lvol_bdev, SPDK_RPC_RUNTIME) SPDK_RPC_REGISTER("bdev_lvol_delete", spdk_rpc_bdev_lvol_delete, SPDK_RPC_RUNTIME)
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_lvol_delete, destroy_lvol_bdev)
struct rpc_bdev_lvol_get_lvstores { struct rpc_bdev_lvol_get_lvstores {
char *uuid; char *uuid;

View File

@ -1267,13 +1267,14 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
p.add_argument('name', help='lvol bdev name') p.add_argument('name', help='lvol bdev name')
p.set_defaults(func=bdev_lvol_set_read_only) p.set_defaults(func=bdev_lvol_set_read_only)
def destroy_lvol_bdev(args): def bdev_lvol_delete(args):
rpc.lvol.destroy_lvol_bdev(args.client, rpc.lvol.bdev_lvol_delete(args.client,
name=args.name) name=args.name)
p = subparsers.add_parser('destroy_lvol_bdev', help='Destroy a logical volume') p = subparsers.add_parser('bdev_lvol_delete', aliases=['destroy_lvol_bdev'],
help='Destroy a logical volume')
p.add_argument('name', help='lvol bdev name') p.add_argument('name', help='lvol bdev name')
p.set_defaults(func=destroy_lvol_bdev) p.set_defaults(func=bdev_lvol_delete)
def destroy_lvol_store(args): def destroy_lvol_store(args):
rpc.lvol.destroy_lvol_store(args.client, rpc.lvol.destroy_lvol_store(args.client,

View File

@ -144,7 +144,8 @@ def bdev_lvol_set_read_only(client, name):
return client.call('bdev_lvol_set_read_only', params) return client.call('bdev_lvol_set_read_only', params)
def destroy_lvol_bdev(client, name): @deprecated_alias('destroy_lvol_bdev')
def bdev_lvol_delete(client, name):
"""Destroy a logical volume. """Destroy a logical volume.
Args: Args:
@ -153,7 +154,7 @@ def destroy_lvol_bdev(client, name):
params = { params = {
'name': name, 'name': name,
} }
return client.call('destroy_lvol_bdev', params) return client.call('bdev_lvol_delete', params)
@deprecated_alias('inflate_lvol_bdev') @deprecated_alias('inflate_lvol_bdev')

View File

@ -238,7 +238,7 @@ class UILvolBdev(UIBdev):
UIBdev.__init__(self, "logical_volume", parent) UIBdev.__init__(self, "logical_volume", parent)
def delete(self, name): def delete(self, name):
self.get_root().destroy_lvol_bdev(name=name) self.get_root().bdev_lvol_delete(name=name)
def ui_command_create(self, name, size, lvs, thin_provision=None): def ui_command_create(self, name, size, lvs, thin_provision=None):
""" """

View File

@ -158,8 +158,8 @@ class UIRoot(UINode):
return response return response
@verbose @verbose
def destroy_lvol_bdev(self, **kwargs): def bdev_lvol_delete(self, **kwargs):
response = rpc.lvol.destroy_lvol_bdev(self.client, **kwargs) response = rpc.lvol.bdev_lvol_delete(self.client, **kwargs)
return response return response
@verbose @verbose

View File

@ -16,7 +16,7 @@ rpc_py="$rootdir/scripts/rpc.py"
# Remove lvol bdevs and stores. # Remove lvol bdevs and stores.
function remove_backends() { function remove_backends() {
echo "INFO: Removing lvol bdev" echo "INFO: Removing lvol bdev"
$rpc_py destroy_lvol_bdev "lvs_0/lbd_0" $rpc_py bdev_lvol_delete "lvs_0/lbd_0"
echo "INFO: Removing lvol stores" echo "INFO: Removing lvol stores"
$rpc_py destroy_lvol_store -l lvs_0 $rpc_py destroy_lvol_store -l lvs_0

View File

@ -19,7 +19,7 @@ function remove_backends() {
echo "INFO: Removing lvol bdevs" echo "INFO: Removing lvol bdevs"
for i in $(seq 1 $CONNECTION_NUMBER); do for i in $(seq 1 $CONNECTION_NUMBER); do
lun="lvs0/lbd_$i" lun="lvs0/lbd_$i"
$rpc_py destroy_lvol_bdev $lun $rpc_py bdev_lvol_delete $lun
echo -e "\tINFO: lvol bdev $lun removed" echo -e "\tINFO: lvol bdev $lun removed"
done done
sleep 1 sleep 1

View File

@ -252,9 +252,9 @@ function cleanup_bdev_subsystem_config() {
timing_enter $FUNCNAME timing_enter $FUNCNAME
if [[ $SPDK_TEST_BLOCKDEV -eq 1 ]]; then if [[ $SPDK_TEST_BLOCKDEV -eq 1 ]]; then
tgt_rpc destroy_lvol_bdev lvs_test/clone0 tgt_rpc bdev_lvol_delete lvs_test/clone0
tgt_rpc destroy_lvol_bdev lvs_test/lvol0 tgt_rpc bdev_lvol_delete lvs_test/lvol0
tgt_rpc destroy_lvol_bdev lvs_test/snapshot0 tgt_rpc bdev_lvol_delete lvs_test/snapshot0
tgt_rpc destroy_lvol_store -l lvs_test tgt_rpc destroy_lvol_store -l lvs_test
fi fi

View File

@ -154,9 +154,9 @@ class Commands_Rpc(object):
output, rc = self.rpc.delete_malloc_bdev(base_name) output, rc = self.rpc.delete_malloc_bdev(base_name)
return rc return rc
def destroy_lvol_bdev(self, bdev_name): def bdev_lvol_delete(self, bdev_name):
print("INFO: RPC COMMAND destroy_lvol_bdev") print("INFO: RPC COMMAND bdev_lvol_delete")
output, rc = self.rpc.destroy_lvol_bdev(bdev_name) output, rc = self.rpc.bdev_lvol_delete(bdev_name)
return rc return rc
def bdev_lvol_resize(self, uuid, new_size): def bdev_lvol_resize(self, uuid, new_size):

View File

@ -370,7 +370,7 @@ class TestCases(object):
# Check correct uuid values in response get_bdevs command # Check correct uuid values in response get_bdevs command
fail_count += self.c.check_get_bdevs_methods(uuid_bdev, fail_count += self.c.check_get_bdevs_methods(uuid_bdev,
lvs_size) lvs_size)
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -415,7 +415,7 @@ class TestCases(object):
fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size) fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size)
for uuid_bdev in uuid_bdevs: for uuid_bdev in uuid_bdevs:
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -453,7 +453,7 @@ class TestCases(object):
fail_count += self.c.check_get_bdevs_methods(uuid_bdev, fail_count += self.c.check_get_bdevs_methods(uuid_bdev,
lvs_size) lvs_size)
fail_count += self.c.destroy_lvol_bdev(uuid_bdev) fail_count += self.c.bdev_lvol_delete(uuid_bdev)
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
fail_count += self.c.delete_malloc_bdev(base_name) fail_count += self.c.delete_malloc_bdev(base_name)
@ -501,8 +501,8 @@ class TestCases(object):
fail_count += self.c.check_get_bdevs_methods(uuid_bdev_1, lvs_size) fail_count += self.c.check_get_bdevs_methods(uuid_bdev_1, lvs_size)
fail_count += self.c.check_get_bdevs_methods(uuid_bdev_2, lvs_size) fail_count += self.c.check_get_bdevs_methods(uuid_bdev_2, lvs_size)
fail_count += self.c.destroy_lvol_bdev(uuid_bdev_1) fail_count += self.c.bdev_lvol_delete(uuid_bdev_1)
fail_count += self.c.destroy_lvol_bdev(uuid_bdev_2) fail_count += self.c.bdev_lvol_delete(uuid_bdev_2)
fail_count += self.c.destroy_lvol_store(uuid_store_1) fail_count += self.c.destroy_lvol_store(uuid_store_1)
fail_count += self.c.destroy_lvol_store(uuid_store_2) fail_count += self.c.destroy_lvol_store(uuid_store_2)
fail_count += self.c.delete_malloc_bdev(base_name_1) fail_count += self.c.delete_malloc_bdev(base_name_1)
@ -567,7 +567,7 @@ class TestCases(object):
lvs_size) == 0: lvs_size) == 0:
fail_count += 1 fail_count += 1
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -610,7 +610,7 @@ class TestCases(object):
size) == 0: size) == 0:
fail_count += 1 fail_count += 1
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -666,7 +666,7 @@ class TestCases(object):
# Check size of the lvol bdev by rpc command get_bdevs # Check size of the lvol bdev by rpc command get_bdevs
fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size) fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size)
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
# Expected result: # Expected result:
@ -724,7 +724,7 @@ class TestCases(object):
if self.c.bdev_lvol_resize(uuid_bdev, self.total_size + 1) == 0: if self.c.bdev_lvol_resize(uuid_bdev, self.total_size + 1) == 0:
fail_count += 1 fail_count += 1
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -1201,7 +1201,7 @@ class TestCases(object):
@case_message @case_message
def test_case551(self): def test_case551(self):
""" """
destroy_lvol_bdev_ordering bdev_lvol_delete_ordering
Test for destroying lvol bdevs in particular order. Test for destroying lvol bdevs in particular order.
Check destroying wrong one is not possible and returns error. Check destroying wrong one is not possible and returns error.
@ -1238,15 +1238,15 @@ class TestCases(object):
clone_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + clone_name) clone_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + clone_name)
# Try to destroy snapshot with clones and check if it fails # Try to destroy snapshot with clones and check if it fails
ret_value = self.c.destroy_lvol_bdev(snapshot_bdev['name']) ret_value = self.c.bdev_lvol_delete(snapshot_bdev['name'])
if ret_value == 0: if ret_value == 0:
print("ERROR: Delete snapshot should fail but didn't") print("ERROR: Delete snapshot should fail but didn't")
fail_count += 1 fail_count += 1
# Destroy clone and then snapshot # Destroy clone and then snapshot
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
fail_count += self.c.destroy_lvol_bdev(clone_bdev['name']) fail_count += self.c.bdev_lvol_delete(clone_bdev['name'])
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -1303,7 +1303,7 @@ class TestCases(object):
snapshot_bdev2 = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name2) snapshot_bdev2 = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name2)
# Try to destroy snapshot with 2 clones and check if it fails # Try to destroy snapshot with 2 clones and check if it fails
ret_value = self.c.destroy_lvol_bdev(snapshot_bdev['name']) ret_value = self.c.bdev_lvol_delete(snapshot_bdev['name'])
if ret_value == 0: if ret_value == 0:
print("ERROR: Delete snapshot should fail but didn't") print("ERROR: Delete snapshot should fail but didn't")
fail_count += 1 fail_count += 1
@ -1527,7 +1527,7 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name) fail_count += self.c.stop_nbd_disk(nbd_name)
# destroy thin provisioned lvol bdev # destroy thin provisioned lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
lvs = self.c.bdev_lvol_get_lvstores(self.lvs_name)[0] lvs = self.c.bdev_lvol_get_lvstores(self.lvs_name)[0]
free_clusters_end = int(lvs['free_clusters']) free_clusters_end = int(lvs['free_clusters'])
# check that saved number of free clusters equals to current free clusters # check that saved number of free clusters equals to current free clusters
@ -1589,8 +1589,8 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
fail_count += self.c.stop_nbd_disk(nbd_name1) fail_count += self.c.stop_nbd_disk(nbd_name1)
# destroy thin provisioned lvol bdev # destroy thin provisioned lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev0['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev0['name'])
fail_count += self.c.destroy_lvol_bdev(lvol_bdev1['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev1['name'])
# destroy lvol store # destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# destroy malloc bdev # destroy malloc bdev
@ -1632,7 +1632,7 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name) fail_count += self.c.stop_nbd_disk(nbd_name)
# destroy thin provisioned lvol bdev # destroy thin provisioned lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# destroy lvol store # destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# destroy malloc bdev # destroy malloc bdev
@ -1706,7 +1706,7 @@ class TestCases(object):
if free_clusters_expected != free_clusters_resize2: if free_clusters_expected != free_clusters_resize2:
fail_count += 1 fail_count += 1
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
self.c.destroy_lvol_store(uuid_store) self.c.destroy_lvol_store(uuid_store)
self.c.delete_malloc_bdev(base_name) self.c.delete_malloc_bdev(base_name)
@ -1776,8 +1776,8 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
fail_count += self.c.stop_nbd_disk(nbd_name1) fail_count += self.c.stop_nbd_disk(nbd_name1)
# destroy thin provisioned lvol bdev # destroy thin provisioned lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev0['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev0['name'])
fail_count += self.c.destroy_lvol_bdev(lvol_bdev1['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev1['name'])
# destroy lvol store # destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# destroy malloc bdev # destroy malloc bdev
@ -1834,8 +1834,8 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
fail_count += self.c.stop_nbd_disk(nbd_name1) fail_count += self.c.stop_nbd_disk(nbd_name1)
# destroy thin provisioned lvol bdevs # destroy thin provisioned lvol bdevs
fail_count += self.c.destroy_lvol_bdev(lvol_bdev0['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev0['name'])
fail_count += self.c.destroy_lvol_bdev(lvol_bdev1['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev1['name'])
# destroy lvol store # destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# destroy malloc bdev # destroy malloc bdev
@ -1934,7 +1934,7 @@ class TestCases(object):
fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size) fail_count += self.c.check_get_bdevs_methods(uuid_bdev, size)
for uuid_bdev in uuid_bdevs: for uuid_bdev in uuid_bdevs:
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
if self.c.destroy_lvol_store(uuid_store) != 0: if self.c.destroy_lvol_store(uuid_store) != 0:
fail_count += 1 fail_count += 1
@ -2108,7 +2108,7 @@ class TestCases(object):
return fail_count return fail_count
for uuid_bdev in uuid_bdevs: for uuid_bdev in uuid_bdevs:
self.c.destroy_lvol_bdev(uuid_bdev) self.c.bdev_lvol_delete(uuid_bdev)
if self.c.destroy_lvol_store(uuid_store_1M) != 0: if self.c.destroy_lvol_store(uuid_store_1M) != 0:
fail_count += 1 fail_count += 1
@ -2159,9 +2159,9 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc bdev # Delete malloc bdev
@ -2232,11 +2232,11 @@ class TestCases(object):
for nbd in nbd_name: for nbd in nbd_name:
fail_count += self.c.stop_nbd_disk(nbd) fail_count += self.c.stop_nbd_disk(nbd)
# Delete lvol bdevs # Delete lvol bdevs
fail_count += self.c.destroy_lvol_bdev(lvol_bdev0['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev0['name'])
fail_count += self.c.destroy_lvol_bdev(lvol_bdev1['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev1['name'])
# Delete snapshots # Delete snapshots
fail_count += self.c.destroy_lvol_bdev(self.lvs_name + "/" + snapshot_name0) fail_count += self.c.bdev_lvol_delete(self.lvs_name + "/" + snapshot_name0)
fail_count += self.c.destroy_lvol_bdev(self.lvs_name + "/" + snapshot_name1) fail_count += self.c.bdev_lvol_delete(self.lvs_name + "/" + snapshot_name1)
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc bdev # Delete malloc bdev
@ -2292,9 +2292,9 @@ class TestCases(object):
fail_count += thread.rv fail_count += thread.rv
fail_count += self.c.stop_nbd_disk(nbd_name) fail_count += self.c.stop_nbd_disk(nbd_name)
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Delete snapshot # Delete snapshot
fail_count += self.c.destroy_lvol_bdev(self.lvs_name + "/" + snapshot_name) fail_count += self.c.bdev_lvol_delete(self.lvs_name + "/" + snapshot_name)
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc bdevs # Delete malloc bdevs
@ -2337,9 +2337,9 @@ class TestCases(object):
print("ERROR: Creating snapshot of snapshot should fail") print("ERROR: Creating snapshot of snapshot should fail")
fail_count += 1 fail_count += 1
# Delete lvol bdev # Delete lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_bdev(self.lvs_name + "/" + snapshot_name0) fail_count += self.c.bdev_lvol_delete(self.lvs_name + "/" + snapshot_name0)
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc bdev # Delete malloc bdev
@ -2397,11 +2397,11 @@ class TestCases(object):
clone_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + clone_name) clone_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + clone_name)
# Delete lvol bdev # Delete lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy clone # Destroy clone
fail_count += self.c.destroy_lvol_bdev(clone_bdev['name']) fail_count += self.c.bdev_lvol_delete(clone_bdev['name'])
# Delete snapshot # Delete snapshot
fail_count += self.c.destroy_lvol_bdev(self.lvs_name + "/" + snapshot_name) fail_count += self.c.bdev_lvol_delete(self.lvs_name + "/" + snapshot_name)
# Delete lvol store # Delete lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Destroy malloc bdev # Destroy malloc bdev
@ -2468,12 +2468,12 @@ class TestCases(object):
for nbd in nbd_name: for nbd in nbd_name:
fail_count += self.c.stop_nbd_disk(nbd) fail_count += self.c.stop_nbd_disk(nbd)
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy two clones # Destroy two clones
fail_count += self.c.destroy_lvol_bdev(lvol_clone0['name']) fail_count += self.c.bdev_lvol_delete(lvol_clone0['name'])
fail_count += self.c.destroy_lvol_bdev(lvol_clone1['name']) fail_count += self.c.bdev_lvol_delete(lvol_clone1['name'])
# Delete snapshot # Delete snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc # Delete malloc
@ -2553,16 +2553,16 @@ class TestCases(object):
fail_count += 1 fail_count += 1
# Destroy first clone and check if it is deleted from snapshot # Destroy first clone and check if it is deleted from snapshot
fail_count += self.c.destroy_lvol_bdev(lvol_clone0['name']) fail_count += self.c.bdev_lvol_delete(lvol_clone0['name'])
snapshot_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name) snapshot_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name)
if [clone_name1] != snapshot_bdev['driver_specific']['lvol']['clones']: if [clone_name1] != snapshot_bdev['driver_specific']['lvol']['clones']:
fail_count += 1 fail_count += 1
# Destroy second clone # Destroy second clone
fail_count += self.c.destroy_lvol_bdev(lvol_clone1['name']) fail_count += self.c.bdev_lvol_delete(lvol_clone1['name'])
# Delete snapshot # Delete snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -2635,7 +2635,7 @@ class TestCases(object):
fail_count += 1 fail_count += 1
# Delete snapshot # Delete snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Check data consistency # Check data consistency
fail_count += self.c.start_nbd_disk(lvol_clone['name'], nbd_name) fail_count += self.c.start_nbd_disk(lvol_clone['name'], nbd_name)
@ -2652,7 +2652,7 @@ class TestCases(object):
self.c.stop_nbd_disk(nbd_name) self.c.stop_nbd_disk(nbd_name)
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -2719,10 +2719,10 @@ class TestCases(object):
fail_count += 1 fail_count += 1
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -2813,7 +2813,7 @@ class TestCases(object):
fill_range * MEGABYTE, "read", pattern[i]) fill_range * MEGABYTE, "read", pattern[i])
# Delete second snapshot # Delete second snapshot
ret_value = self.c.destroy_lvol_bdev(snapshot_bdev2['name']) ret_value = self.c.bdev_lvol_delete(snapshot_bdev2['name'])
# Check data consistency # Check data consistency
for i in range(0, 5): for i in range(0, 5):
@ -2822,10 +2822,10 @@ class TestCases(object):
fill_range * MEGABYTE, "read", pattern[i]) fill_range * MEGABYTE, "read", pattern[i])
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -2889,9 +2889,9 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
fail_count += self.c.stop_nbd_disk(nbd_name1) fail_count += self.c.stop_nbd_disk(nbd_name1)
# Destroy clone lvol bdev # Destroy clone lvol bdev
fail_count += self.c.destroy_lvol_bdev(clone_bdev['name']) fail_count += self.c.bdev_lvol_delete(clone_bdev['name'])
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
# Delete malloc bdev # Delete malloc bdev
@ -2957,7 +2957,7 @@ class TestCases(object):
# Delete snapshot - should succeed # Delete snapshot - should succeed
fail_count += self.c.stop_nbd_disk(nbd_name1) fail_count += self.c.stop_nbd_disk(nbd_name1)
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Check data consistency # Check data consistency
lvol_bdev = self.c.get_lvol_bdev_with_name(bdev_name) lvol_bdev = self.c.get_lvol_bdev_with_name(bdev_name)
@ -2968,7 +2968,7 @@ class TestCases(object):
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -3071,7 +3071,7 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name2) fail_count += self.c.stop_nbd_disk(nbd_name2)
# Delete snapshot - should succeed # Delete snapshot - should succeed
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev2['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev2['name'])
# Check data consistency # Check data consistency
snapshot_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name) snapshot_bdev = self.c.get_lvol_bdev_with_name(self.lvs_name + "/" + snapshot_name)
@ -3087,9 +3087,9 @@ class TestCases(object):
fail_count += self.c.stop_nbd_disk(nbd_name0) fail_count += self.c.stop_nbd_disk(nbd_name0)
# Destroy snapshot # Destroy snapshot
fail_count += self.c.destroy_lvol_bdev(snapshot_bdev['name']) fail_count += self.c.bdev_lvol_delete(snapshot_bdev['name'])
# Destroy lvol bdev # Destroy lvol bdev
fail_count += self.c.destroy_lvol_bdev(lvol_bdev['name']) fail_count += self.c.bdev_lvol_delete(lvol_bdev['name'])
# Destroy lvol store # Destroy lvol store
fail_count += self.c.destroy_lvol_store(uuid_store) fail_count += self.c.destroy_lvol_store(uuid_store)
@ -3175,7 +3175,7 @@ class TestCases(object):
# Delete configuration using names after rename operation # Delete configuration using names after rename operation
for bdev in new_bdev_aliases: for bdev in new_bdev_aliases:
fail_count += self.c.destroy_lvol_bdev(bdev) fail_count += self.c.bdev_lvol_delete(bdev)
fail_count += self.c.destroy_lvol_store(new_lvs_name) fail_count += self.c.destroy_lvol_store(new_lvs_name)
fail_count += self.c.delete_malloc_bdev(base_name) fail_count += self.c.delete_malloc_bdev(base_name)
@ -3293,7 +3293,7 @@ class TestCases(object):
# Clean configuration # Clean configuration
for lvol_uuid in bdev_uuids_1 + bdev_uuids_2: for lvol_uuid in bdev_uuids_1 + bdev_uuids_2:
fail_count += self.c.destroy_lvol_bdev(lvol_uuid) fail_count += self.c.bdev_lvol_delete(lvol_uuid)
fail_count += self.c.destroy_lvol_store(lvs_uuid_1) fail_count += self.c.destroy_lvol_store(lvs_uuid_1)
fail_count += self.c.destroy_lvol_store(lvs_uuid_2) fail_count += self.c.destroy_lvol_store(lvs_uuid_2)
fail_count += self.c.delete_malloc_bdev(base_bdev_1) fail_count += self.c.delete_malloc_bdev(base_bdev_1)
@ -3367,8 +3367,8 @@ class TestCases(object):
bdev_size, bdev_size,
"/".join([self.lvs_name, self.lbd_name + "1"])) "/".join([self.lvs_name, self.lbd_name + "1"]))
fail_count += self.c.destroy_lvol_bdev(bdev_uuid_1) fail_count += self.c.bdev_lvol_delete(bdev_uuid_1)
fail_count += self.c.destroy_lvol_bdev(bdev_uuid_2) fail_count += self.c.bdev_lvol_delete(bdev_uuid_2)
fail_count += self.c.destroy_lvol_store(lvs_uuid) fail_count += self.c.destroy_lvol_store(lvs_uuid)
fail_count += self.c.delete_malloc_bdev(base_bdev) fail_count += self.c.delete_malloc_bdev(base_bdev)

View File

@ -70,9 +70,9 @@ if [ $RUN_NIGHTLY -eq 1 ]; then
sync sync
# Delete lvol_bdev and destroy lvol_store. # Delete lvol_bdev and destroy lvol_store.
$rpc_py destroy_lvol_bdev lvs_n_0/lbd_nest_0 $rpc_py bdev_lvol_delete lvs_n_0/lbd_nest_0
$rpc_py destroy_lvol_store -l lvs_n_0 $rpc_py destroy_lvol_store -l lvs_n_0
$rpc_py destroy_lvol_bdev lvs_0/lbd_0 $rpc_py bdev_lvol_delete lvs_0/lbd_0
$rpc_py destroy_lvol_store -l lvs_0 $rpc_py destroy_lvol_store -l lvs_0
$rpc_py delete_nvme_controller Nvme0 $rpc_py delete_nvme_controller Nvme0
fi fi

View File

@ -77,9 +77,9 @@ if [ $RUN_NIGHTLY -eq 1 ]; then
# Delete subsystems, lvol_bdev and destroy lvol_store. # Delete subsystems, lvol_bdev and destroy lvol_store.
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 $rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1
$rpc_py destroy_lvol_bdev "$lb_nested_guid" $rpc_py bdev_lvol_delete "$lb_nested_guid"
$rpc_py destroy_lvol_store -l lvs_n_0 $rpc_py destroy_lvol_store -l lvs_n_0
$rpc_py destroy_lvol_bdev "$lb_guid" $rpc_py bdev_lvol_delete "$lb_guid"
$rpc_py destroy_lvol_store -l lvs_0 $rpc_py destroy_lvol_store -l lvs_0
fi fi
fi fi

View File

@ -59,7 +59,7 @@ wait $perf_pid
# Clean up # Clean up
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode0 $rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode0
$rpc_py destroy_lvol_bdev $lvol $rpc_py bdev_lvol_delete $lvol
$rpc_py destroy_lvol_store -u $lvs $rpc_py destroy_lvol_store -u $lvs
rm -f ./local-job* rm -f ./local-job*

View File

@ -245,7 +245,7 @@ if ! $no_shutdown; then
$rpc_py remove_vhost_controller naa.$disk.${conf[0]} $rpc_py remove_vhost_controller naa.$disk.${conf[0]}
if [[ $disk == "RaidBdev2" ]]; then if [[ $disk == "RaidBdev2" ]]; then
notice "Removing lvol bdev and lvol store" notice "Removing lvol bdev and lvol store"
$rpc_py destroy_lvol_bdev lvs_0/lbd_0 $rpc_py bdev_lvol_delete lvs_0/lbd_0
$rpc_py destroy_lvol_store -l lvs_0 $rpc_py destroy_lvol_store -l lvs_0
fi fi
done done

View File

@ -28,7 +28,7 @@ function usage()
function clean_lvol_cfg() function clean_lvol_cfg()
{ {
notice "Removing lvol bdev and lvol store" notice "Removing lvol bdev and lvol store"
$rpc_py destroy_lvol_bdev lvol_store/lvol_bdev $rpc_py bdev_lvol_delete lvol_store/lvol_bdev
$rpc_py destroy_lvol_store -l lvol_store $rpc_py destroy_lvol_store -l lvol_store
} }

View File

@ -51,7 +51,7 @@ function clean_lvol_cfg()
{ {
notice "Removing nested lvol bdevs" notice "Removing nested lvol bdevs"
for lvol_bdev in "${nest_lvol_bdevs[@]}"; do for lvol_bdev in "${nest_lvol_bdevs[@]}"; do
$rpc_py destroy_lvol_bdev $lvol_bdev $rpc_py bdev_lvol_delete $lvol_bdev
notice "nested lvol bdev $lvol_bdev removed" notice "nested lvol bdev $lvol_bdev removed"
done done
@ -63,7 +63,7 @@ function clean_lvol_cfg()
notice "Removing lvol bdevs" notice "Removing lvol bdevs"
for lvol_bdev in "${lvol_bdevs[@]}"; do for lvol_bdev in "${lvol_bdevs[@]}"; do
$rpc_py destroy_lvol_bdev $lvol_bdev $rpc_py bdev_lvol_delete $lvol_bdev
notice "lvol bdev $lvol_bdev removed" notice "lvol bdev $lvol_bdev removed"
done done

View File

@ -72,7 +72,7 @@ function cleanup_lvol_cfg()
{ {
notice "Removing lvol bdevs" notice "Removing lvol bdevs"
for lvol_bdev in "${lvol_bdevs[@]}"; do for lvol_bdev in "${lvol_bdevs[@]}"; do
$rpc_py destroy_lvol_bdev $lvol_bdev $rpc_py bdev_lvol_delete $lvol_bdev
notice "lvol bdev $lvol_bdev removed" notice "lvol bdev $lvol_bdev removed"
done done

View File

@ -19,7 +19,7 @@ function err_clean
vm_kill_all vm_kill_all
$rpc_py remove_vhost_scsi_target naa.vhost_vm.$vm_no 0 $rpc_py remove_vhost_scsi_target naa.vhost_vm.$vm_no 0
$rpc_py remove_vhost_controller naa.vhost_vm.$vm_no $rpc_py remove_vhost_controller naa.vhost_vm.$vm_no
$rpc_py destroy_lvol_bdev $lvb_u $rpc_py bdev_lvol_delete $lvb_u
$rpc_py destroy_lvol_store -u $lvs_u $rpc_py destroy_lvol_store -u $lvs_u
vhost_kill 0 vhost_kill 0
exit 1 exit 1
@ -117,7 +117,7 @@ vm_shutdown_all
timing_enter clean_vhost timing_enter clean_vhost
$rpc_py remove_vhost_scsi_target naa.vhost_vm.$vm_no 0 $rpc_py remove_vhost_scsi_target naa.vhost_vm.$vm_no 0
$rpc_py remove_vhost_controller naa.vhost_vm.$vm_no $rpc_py remove_vhost_controller naa.vhost_vm.$vm_no
$rpc_py destroy_lvol_bdev $lvb_u $rpc_py bdev_lvol_delete $lvb_u
$rpc_py destroy_lvol_store -u $lvs_u $rpc_py destroy_lvol_store -u $lvs_u
vhost_kill 0 vhost_kill 0
timing_exit clean_vhost timing_exit clean_vhost