Skip to content

Commit d0571cb

Browse files
author
root
committed
use non blob store leadership
1 parent 9a5dc16 commit d0571cb

File tree

6 files changed

+24
-23
lines changed

6 files changed

+24
-23
lines changed

lib/blob/blobstore.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ blob_execute_queued_io(struct spdk_io_channel_iter *i)
511511
if (!ctx->blob->failed_on_update && bs->is_leader) {
512512
bs_user_op_execute(op);
513513
} else {
514+
SPDK_NOTICELOG("The IO return with EIO error due to leader or failed update.\n");
514515
bs_user_op_abort(op, -EIO);
515516
}
516517
}
@@ -2230,7 +2231,7 @@ blob_persist_clear_clusters_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
22302231
struct spdk_blob_store *bs = blob->bs;
22312232
size_t i;
22322233

2233-
if (bserrno != 0) {
2234+
if (bserrno != 0) {
22342235
blob_persist_complete(seq, ctx, bserrno);
22352236
return;
22362237
}

lib/blob/request.c

+7-4
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ bs_batch_completion(struct spdk_io_channel *_channel,
325325
struct spdk_bs_channel *channel = set->channel;
326326
struct limit *ctx;
327327
set->u.batch.outstanding_ops--;
328-
if (bserrno != 0) {
328+
if (bserrno != 0) {
329329
set->bserrno = bserrno;
330330
}
331331

@@ -339,7 +339,8 @@ bs_batch_completion(struct spdk_io_channel *_channel,
339339
channel->dev->unmap(channel->dev, channel->dev_channel, ctx->lba, ctx->lba_count,
340340
&set->cb_args);
341341
} else {
342-
bs_batch_completion(_channel, set->cb_args.cb_arg, 0);
342+
SPDK_NOTICELOG("The unmap IO return with EIO error due to leader.\n");
343+
bs_batch_completion(_channel, set->cb_args.cb_arg, -EIO);
343344
}
344345
free(ctx);
345346
}
@@ -469,7 +470,8 @@ bs_batch_unmap_dev(spdk_bs_batch_t *batch,
469470
channel->dev->unmap(channel->dev, channel->dev_channel, lba, lba_count,
470471
&set->cb_args);
471472
} else {
472-
bs_batch_completion(set->cb_args.channel, set->cb_args.cb_arg, 0);
473+
SPDK_NOTICELOG("The unmap IO return with EIO error due to leader 1.\n");
474+
bs_batch_completion(set->cb_args.channel, set->cb_args.cb_arg, -EIO);
473475
}
474476
}
475477

@@ -488,7 +490,8 @@ bs_batch_write_zeroes_dev(spdk_bs_batch_t *batch,
488490
channel->dev->write_zeroes(channel->dev, channel->dev_channel, lba, lba_count,
489491
&set->cb_args);
490492
} else {
491-
bs_batch_completion(set->cb_args.channel, set->cb_args.cb_arg, 0);
493+
SPDK_NOTICELOG("The write zero IO return with EIO error due to leader.\n");
494+
bs_batch_completion(set->cb_args.channel, set->cb_args.cb_arg, -EIO);
492495
}
493496
}
494497

lib/lvol/lvol.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -2846,25 +2846,25 @@ spdk_lvol_set_leader_failed_on_update(struct spdk_lvol *lvol)
28462846
}
28472847

28482848
void
2849-
spdk_set_leader_all(struct spdk_lvol_store *t_lvs, bool lvs_leader, bool bs_leadership)
2849+
spdk_set_leader_all(struct spdk_lvol_store *t_lvs, bool lvs_leader, bool bs_nonleadership)
28502850
{
28512851
struct spdk_lvol_store *lvs;
28522852
struct spdk_lvol *lvol;
2853-
SPDK_NOTICELOG("Lvs_leader state changed via RPC to %s and bs_leader to %s.\n",
2853+
SPDK_NOTICELOG("Lvs_leader state changed via RPC to %s and bs_nonleader to %s.\n",
28542854
lvs_leader ? "true" : "false",
2855-
bs_leadership ? "true" : "false");
2855+
bs_nonleadership ? "true" : "false");
28562856

28572857
pthread_mutex_lock(&g_lvol_stores_mutex);
28582858

28592859
TAILQ_FOREACH(lvs, &g_lvol_stores, link) {
28602860
if (t_lvs == lvs) {
28612861
lvs->update_in_progress = false;
28622862

2863-
spdk_bs_set_leader(lvs->blobstore, bs_leadership);
2863+
spdk_bs_set_leader(lvs->blobstore, !bs_nonleadership);
28642864

2865-
TAILQ_FOREACH(lvol, &lvs->lvols, link) {
2865+
TAILQ_FOREACH(lvol, &lvs->lvols, link) {
28662866
lvol->leader = lvs_leader;
2867-
lvol->update_in_progress = false;
2867+
lvol->update_in_progress = false;
28682868
}
28692869
lvs->leader = lvs_leader;
28702870
}

module/bdev/lvol/vbdev_lvol_rpc.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -2114,14 +2114,14 @@ struct rpc_bdev_lvol_leadership {
21142114
char *uuid;
21152115
char *lvs_name;
21162116
bool lvs_leadership;
2117-
bool bs_leadership;
2117+
bool bs_nonleadership;
21182118
};
21192119

21202120
static const struct spdk_json_object_decoder rpc_bdev_lvol_leadership_decoders[] = {
21212121
{"uuid", offsetof(struct rpc_bdev_lvol_grow_lvstore, uuid), spdk_json_decode_string, true},
21222122
{"lvs_name", offsetof(struct rpc_bdev_lvol_grow_lvstore, lvs_name), spdk_json_decode_string, true},
21232123
{"lvs_leadership", offsetof(struct rpc_bdev_lvol_leadership, lvs_leadership), spdk_json_decode_bool},
2124-
{"bs_leadership", offsetof(struct rpc_bdev_lvol_leadership, bs_leadership), spdk_json_decode_bool},
2124+
{"bs_nonleadership", offsetof(struct rpc_bdev_lvol_leadership, bs_nonleadership), spdk_json_decode_bool},
21252125
};
21262126

21272127
static void
@@ -2147,7 +2147,7 @@ rpc_bdev_lvol_set_leader_all(struct spdk_jsonrpc_request *request,
21472147
goto cleanup;
21482148
}
21492149

2150-
spdk_set_leader_all(lvs, req.lvs_leadership, req.bs_leadership);
2150+
spdk_set_leader_all(lvs, req.lvs_leadership, req.bs_nonleadership);
21512151
spdk_jsonrpc_send_bool_response(request, true);
21522152
cleanup:
21532153
free(req.uuid);

python/spdk/rpc/lvol.py

+3-6
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,16 @@ def bdev_lvol_update_lvstore(client, uuid=None, lvs_name=None):
7474
params['lvs_name'] = lvs_name
7575
return client.call('bdev_lvol_update_lvstore', params)
7676

77-
def bdev_lvol_set_leader_all(client, uuid=None, lvs_name=None, lvs_leadership=False, bs_leadership=False):
77+
def bdev_lvol_set_leader_all(client, uuid=None, lvs_name=None, lvs_leadership=False, bs_nonleadership=False):
7878
"""Change state of the leadership
7979
8080
Args:
8181
uuid: UUID of the lvolstore
8282
lvs_name: lvolstore name
8383
lvs_leadership: Leadership state for lvolstore (default: False)
84-
bs_leadership: Leadership state for blobstore (default: True)
84+
bs_leadership: Leadership state for blobstore (default: False)
8585
"""
86-
params = {'lvs_leadership': lvs_leadership, 'bs_leadership': bs_leadership}
87-
88-
if bs_leadership is None:
89-
params['bs_leadership'] = True
86+
params = {'lvs_leadership': lvs_leadership, 'bs_nonleadership': bs_nonleadership}
9087

9188
if (uuid and lvs_name):
9289
raise ValueError("Exactly one of uuid or lvs_name may be specified")

scripts/rpc.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2045,12 +2045,12 @@ def bdev_lvol_set_leader_all(args):
20452045
uuid=args.uuid,
20462046
lvs_name=args.lvs_name,
20472047
lvs_leadership=args.lvs_leadership,
2048-
bs_leadership=args.bs_leadership))
2048+
bs_nonleadership=args.bs_nonleadership))
20492049

20502050
p = subparsers.add_parser('bdev_lvol_set_leader_all',
20512051
help='Change leadership state for lvstore and lvols')
2052-
p.add_argument('-l', '--lvs-leadership', action='store_true', help='Leadership state for lvolstore level')
2053-
p.add_argument('-b', '--bs-leadership', action='store_true', help='Leadership state for blobstore level, default True')
2052+
p.add_argument('-l', '--lvs-leadership', action='store_true', help='Leadership state for lvolstore level, default False')
2053+
p.add_argument('-b', '--bs-nonleadership', action='store_true', help='Leadership state for blobstore level, default False')
20542054
p.add_argument('-u', '--uuid', help='lvol store UUID')
20552055
p.add_argument('-s', '--lvs-name', help='lvol store name')
20562056
p.set_defaults(func=bdev_lvol_set_leader_all)

0 commit comments

Comments
 (0)