mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
drbd: Test cstate while holding req_lock
In case a connection transitions into C_TIMEOUT within the timer function (request_timer_fn()) we need to make sure that the receiver thread (potentially running on a different CPU) sees the updated cstate later on. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
c1b3156f12
commit
02df6fe145
@ -442,12 +442,13 @@ bool conn_try_outdate_peer(struct drbd_connection *connection)
|
||||
char *ex_to_string;
|
||||
int r;
|
||||
|
||||
spin_lock_irq(&connection->resource->req_lock);
|
||||
if (connection->cstate >= C_WF_REPORT_PARAMS) {
|
||||
drbd_err(connection, "Expected cstate < C_WF_REPORT_PARAMS\n");
|
||||
spin_unlock_irq(&connection->resource->req_lock);
|
||||
return false;
|
||||
}
|
||||
|
||||
spin_lock_irq(&connection->resource->req_lock);
|
||||
connect_cnt = connection->connect_cnt;
|
||||
spin_unlock_irq(&connection->resource->req_lock);
|
||||
|
||||
|
@ -52,7 +52,7 @@
|
||||
#endif
|
||||
|
||||
extern const char *drbd_buildtag(void);
|
||||
#define REL_VERSION "8.4.4"
|
||||
#define REL_VERSION "8.4.3"
|
||||
#define API_VERSION 1
|
||||
#define PRO_VERSION_MIN 86
|
||||
#define PRO_VERSION_MAX 101
|
||||
|
Loading…
Reference in New Issue
Block a user