fs: dlm: add check if dlm is currently running
This patch adds checks for dlm config attributes regarding to protocol parameters as it makes only sense to change them when dlm is not running. It also adds a check for valid protocol specifiers and return invalid argument if they are not supported. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
parent
8aa9540b49
commit
517461630d
|
@ -164,6 +164,36 @@ static ssize_t cluster_##name##_show(struct config_item *item, char *buf) \
|
||||||
} \
|
} \
|
||||||
CONFIGFS_ATTR(cluster_, name);
|
CONFIGFS_ATTR(cluster_, name);
|
||||||
|
|
||||||
|
static int dlm_check_protocol_and_dlm_running(unsigned int x)
|
||||||
|
{
|
||||||
|
switch (x) {
|
||||||
|
case 0:
|
||||||
|
/* TCP */
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
/* SCTP */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dlm_allow_conn)
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dlm_check_zero_and_dlm_running(unsigned int x)
|
||||||
|
{
|
||||||
|
if (!x)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (dlm_allow_conn)
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int dlm_check_zero(unsigned int x)
|
static int dlm_check_zero(unsigned int x)
|
||||||
{
|
{
|
||||||
if (!x)
|
if (!x)
|
||||||
|
@ -180,7 +210,7 @@ static int dlm_check_buffer_size(unsigned int x)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CLUSTER_ATTR(tcp_port, dlm_check_zero);
|
CLUSTER_ATTR(tcp_port, dlm_check_zero_and_dlm_running);
|
||||||
CLUSTER_ATTR(buffer_size, dlm_check_buffer_size);
|
CLUSTER_ATTR(buffer_size, dlm_check_buffer_size);
|
||||||
CLUSTER_ATTR(rsbtbl_size, dlm_check_zero);
|
CLUSTER_ATTR(rsbtbl_size, dlm_check_zero);
|
||||||
CLUSTER_ATTR(recover_timer, dlm_check_zero);
|
CLUSTER_ATTR(recover_timer, dlm_check_zero);
|
||||||
|
@ -188,7 +218,7 @@ CLUSTER_ATTR(toss_secs, dlm_check_zero);
|
||||||
CLUSTER_ATTR(scan_secs, dlm_check_zero);
|
CLUSTER_ATTR(scan_secs, dlm_check_zero);
|
||||||
CLUSTER_ATTR(log_debug, NULL);
|
CLUSTER_ATTR(log_debug, NULL);
|
||||||
CLUSTER_ATTR(log_info, NULL);
|
CLUSTER_ATTR(log_info, NULL);
|
||||||
CLUSTER_ATTR(protocol, NULL);
|
CLUSTER_ATTR(protocol, dlm_check_protocol_and_dlm_running);
|
||||||
CLUSTER_ATTR(mark, NULL);
|
CLUSTER_ATTR(mark, NULL);
|
||||||
CLUSTER_ATTR(timewarn_cs, dlm_check_zero);
|
CLUSTER_ATTR(timewarn_cs, dlm_check_zero);
|
||||||
CLUSTER_ATTR(waitwarn_us, NULL);
|
CLUSTER_ATTR(waitwarn_us, NULL);
|
||||||
|
|
|
@ -135,7 +135,7 @@ static DEFINE_SPINLOCK(dlm_node_addrs_spin);
|
||||||
static struct listen_connection listen_con;
|
static struct listen_connection listen_con;
|
||||||
static struct sockaddr_storage *dlm_local_addr[DLM_MAX_ADDR_COUNT];
|
static struct sockaddr_storage *dlm_local_addr[DLM_MAX_ADDR_COUNT];
|
||||||
static int dlm_local_count;
|
static int dlm_local_count;
|
||||||
static int dlm_allow_conn;
|
int dlm_allow_conn;
|
||||||
|
|
||||||
/* Work queues */
|
/* Work queues */
|
||||||
static struct workqueue_struct *recv_workqueue;
|
static struct workqueue_struct *recv_workqueue;
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
|
|
||||||
#define LOWCOMMS_MAX_TX_BUFFER_LEN 4096
|
#define LOWCOMMS_MAX_TX_BUFFER_LEN 4096
|
||||||
|
|
||||||
|
/* switch to check if dlm is running */
|
||||||
|
extern int dlm_allow_conn;
|
||||||
|
|
||||||
int dlm_lowcomms_start(void);
|
int dlm_lowcomms_start(void);
|
||||||
void dlm_lowcomms_stop(void);
|
void dlm_lowcomms_stop(void);
|
||||||
void dlm_lowcomms_exit(void);
|
void dlm_lowcomms_exit(void);
|
||||||
|
|
Loading…
Reference in New Issue