mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-07 15:18:15 +00:00
drbd: New configuration parameters for dealing with network congestion
net { on_congestion {block|pull-ahead|disconnect}; congestion-fill {sectors}; congestion-extents {al-extents}; } Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
759fbdfba6
commit
422028b1ca
4 changed files with 26 additions and 0 deletions
|
@ -1323,6 +1323,8 @@ static int drbd_nl_net_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
|
||||||
new_conf->wire_protocol = DRBD_PROT_C;
|
new_conf->wire_protocol = DRBD_PROT_C;
|
||||||
new_conf->ping_timeo = DRBD_PING_TIMEO_DEF;
|
new_conf->ping_timeo = DRBD_PING_TIMEO_DEF;
|
||||||
new_conf->rr_conflict = DRBD_RR_CONFLICT_DEF;
|
new_conf->rr_conflict = DRBD_RR_CONFLICT_DEF;
|
||||||
|
new_conf->on_congestion = DRBD_ON_CONGESTION_DEF;
|
||||||
|
new_conf->cong_extents = DRBD_CONG_EXTENTS_DEF;
|
||||||
|
|
||||||
if (!net_conf_from_tags(mdev, nlp->tag_list, new_conf)) {
|
if (!net_conf_from_tags(mdev, nlp->tag_list, new_conf)) {
|
||||||
retcode = ERR_MANDATORY_TAG;
|
retcode = ERR_MANDATORY_TAG;
|
||||||
|
@ -1344,6 +1346,11 @@ static int drbd_nl_net_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (new_conf->on_congestion != OC_BLOCK && new_conf->wire_protocol != DRBD_PROT_A) {
|
||||||
|
retcode = ERR_CONG_NOT_PROTO_A;
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
if (mdev->state.role == R_PRIMARY && new_conf->want_lose) {
|
if (mdev->state.role == R_PRIMARY && new_conf->want_lose) {
|
||||||
retcode = ERR_DISCARD;
|
retcode = ERR_DISCARD;
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -96,6 +96,12 @@ enum drbd_on_no_data {
|
||||||
OND_SUSPEND_IO
|
OND_SUSPEND_IO
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum drbd_on_congestion {
|
||||||
|
OC_BLOCK,
|
||||||
|
OC_PULL_AHEAD,
|
||||||
|
OC_DISCONNECT,
|
||||||
|
};
|
||||||
|
|
||||||
/* KEEP the order, do not delete or insert. Only append. */
|
/* KEEP the order, do not delete or insert. Only append. */
|
||||||
enum drbd_ret_codes {
|
enum drbd_ret_codes {
|
||||||
ERR_CODE_BASE = 100,
|
ERR_CODE_BASE = 100,
|
||||||
|
@ -146,6 +152,7 @@ enum drbd_ret_codes {
|
||||||
ERR_PERM = 152,
|
ERR_PERM = 152,
|
||||||
ERR_NEED_APV_93 = 153,
|
ERR_NEED_APV_93 = 153,
|
||||||
ERR_STONITH_AND_PROT_A = 154,
|
ERR_STONITH_AND_PROT_A = 154,
|
||||||
|
ERR_CONG_NOT_PROTO_A = 155,
|
||||||
|
|
||||||
/* insert new ones above this line */
|
/* insert new ones above this line */
|
||||||
AFTER_LAST_ERR_CODE
|
AFTER_LAST_ERR_CODE
|
||||||
|
|
|
@ -129,6 +129,7 @@
|
||||||
#define DRBD_AFTER_SB_2P_DEF ASB_DISCONNECT
|
#define DRBD_AFTER_SB_2P_DEF ASB_DISCONNECT
|
||||||
#define DRBD_RR_CONFLICT_DEF ASB_DISCONNECT
|
#define DRBD_RR_CONFLICT_DEF ASB_DISCONNECT
|
||||||
#define DRBD_ON_NO_DATA_DEF OND_IO_ERROR
|
#define DRBD_ON_NO_DATA_DEF OND_IO_ERROR
|
||||||
|
#define DRBD_ON_CONGESTION_DEF OC_BLOCK
|
||||||
|
|
||||||
#define DRBD_MAX_BIO_BVECS_MIN 0
|
#define DRBD_MAX_BIO_BVECS_MIN 0
|
||||||
#define DRBD_MAX_BIO_BVECS_MAX 128
|
#define DRBD_MAX_BIO_BVECS_MAX 128
|
||||||
|
@ -154,5 +155,13 @@
|
||||||
#define DRBD_C_MIN_RATE_MAX (4 << 20)
|
#define DRBD_C_MIN_RATE_MAX (4 << 20)
|
||||||
#define DRBD_C_MIN_RATE_DEF 4096
|
#define DRBD_C_MIN_RATE_DEF 4096
|
||||||
|
|
||||||
|
#define DRBD_CONG_FILL_MIN 0
|
||||||
|
#define DRBD_CONG_FILL_MAX (10<<21) /* 10GByte in sectors */
|
||||||
|
#define DRBD_CONG_FILL_DEF 0
|
||||||
|
|
||||||
|
#define DRBD_CONG_EXTENTS_MIN DRBD_AL_EXTENTS_MIN
|
||||||
|
#define DRBD_CONG_EXTENTS_MAX DRBD_AL_EXTENTS_MAX
|
||||||
|
#define DRBD_CONG_EXTENTS_DEF DRBD_AL_EXTENTS_DEF
|
||||||
|
|
||||||
#undef RANGE
|
#undef RANGE
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -56,6 +56,9 @@ NL_PACKET(net_conf, 5,
|
||||||
NL_INTEGER( 39, T_MAY_IGNORE, rr_conflict)
|
NL_INTEGER( 39, T_MAY_IGNORE, rr_conflict)
|
||||||
NL_INTEGER( 40, T_MAY_IGNORE, ping_timeo)
|
NL_INTEGER( 40, T_MAY_IGNORE, ping_timeo)
|
||||||
NL_INTEGER( 67, T_MAY_IGNORE, rcvbuf_size)
|
NL_INTEGER( 67, T_MAY_IGNORE, rcvbuf_size)
|
||||||
|
NL_INTEGER( 81, T_MAY_IGNORE, on_congestion)
|
||||||
|
NL_INTEGER( 82, T_MAY_IGNORE, cong_fill)
|
||||||
|
NL_INTEGER( 83, T_MAY_IGNORE, cong_extents)
|
||||||
/* 59 addr_family was available in GIT, never released */
|
/* 59 addr_family was available in GIT, never released */
|
||||||
NL_BIT( 60, T_MANDATORY, mind_af)
|
NL_BIT( 60, T_MANDATORY, mind_af)
|
||||||
NL_BIT( 27, T_MAY_IGNORE, want_lose)
|
NL_BIT( 27, T_MAY_IGNORE, want_lose)
|
||||||
|
|
Loading…
Add table
Reference in a new issue