diff options
-rw-r--r-- | fs/dlm/dir.c | 2 | ||||
-rw-r--r-- | fs/dlm/dlm_internal.h | 2 | ||||
-rw-r--r-- | fs/dlm/rcom.c | 11 | ||||
-rw-r--r-- | fs/dlm/recover.c | 4 |
4 files changed, 10 insertions, 9 deletions
diff --git a/fs/dlm/dir.c b/fs/dlm/dir.c index ff97ba924333..ce30136671b3 100644 --- a/fs/dlm/dir.c +++ b/fs/dlm/dir.c | |||
@@ -235,7 +235,7 @@ int dlm_recover_directory(struct dlm_ls *ls) | |||
235 | * pick namelen/name pairs out of received buffer | 235 | * pick namelen/name pairs out of received buffer |
236 | */ | 236 | */ |
237 | 237 | ||
238 | b = ls->ls_recover_buf + sizeof(struct dlm_rcom); | 238 | b = ls->ls_recover_buf->rc_buf; |
239 | 239 | ||
240 | for (;;) { | 240 | for (;;) { |
241 | memcpy(&namelen, b, sizeof(uint16_t)); | 241 | memcpy(&namelen, b, sizeof(uint16_t)); |
diff --git a/fs/dlm/dlm_internal.h b/fs/dlm/dlm_internal.h index 187a5b5b28b6..f7fbaec94b15 100644 --- a/fs/dlm/dlm_internal.h +++ b/fs/dlm/dlm_internal.h | |||
@@ -500,7 +500,7 @@ struct dlm_ls { | |||
500 | struct rw_semaphore ls_recv_active; /* block dlm_recv */ | 500 | struct rw_semaphore ls_recv_active; /* block dlm_recv */ |
501 | struct list_head ls_requestqueue;/* queue remote requests */ | 501 | struct list_head ls_requestqueue;/* queue remote requests */ |
502 | struct mutex ls_requestqueue_mutex; | 502 | struct mutex ls_requestqueue_mutex; |
503 | char *ls_recover_buf; | 503 | struct dlm_rcom *ls_recover_buf; |
504 | int ls_recover_nodeid; /* for debugging */ | 504 | int ls_recover_nodeid; /* for debugging */ |
505 | uint64_t ls_rcom_seq; | 505 | uint64_t ls_rcom_seq; |
506 | spinlock_t ls_rcom_spin; | 506 | spinlock_t ls_rcom_spin; |
diff --git a/fs/dlm/rcom.c b/fs/dlm/rcom.c index fb0776201d73..3f9b96fd26e8 100644 --- a/fs/dlm/rcom.c +++ b/fs/dlm/rcom.c | |||
@@ -129,7 +129,7 @@ int dlm_rcom_status(struct dlm_ls *ls, int nodeid) | |||
129 | ls->ls_recover_nodeid = nodeid; | 129 | ls->ls_recover_nodeid = nodeid; |
130 | 130 | ||
131 | if (nodeid == dlm_our_nodeid()) { | 131 | if (nodeid == dlm_our_nodeid()) { |
132 | rc = (struct dlm_rcom *) ls->ls_recover_buf; | 132 | rc = ls->ls_recover_buf; |
133 | rc->rc_result = dlm_recover_status(ls); | 133 | rc->rc_result = dlm_recover_status(ls); |
134 | goto out; | 134 | goto out; |
135 | } | 135 | } |
@@ -148,7 +148,7 @@ int dlm_rcom_status(struct dlm_ls *ls, int nodeid) | |||
148 | if (error) | 148 | if (error) |
149 | goto out; | 149 | goto out; |
150 | 150 | ||
151 | rc = (struct dlm_rcom *) ls->ls_recover_buf; | 151 | rc = ls->ls_recover_buf; |
152 | 152 | ||
153 | if (rc->rc_result == -ESRCH) { | 153 | if (rc->rc_result == -ESRCH) { |
154 | /* we pretend the remote lockspace exists with 0 status */ | 154 | /* we pretend the remote lockspace exists with 0 status */ |
@@ -202,14 +202,15 @@ int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name, int last_len) | |||
202 | { | 202 | { |
203 | struct dlm_rcom *rc; | 203 | struct dlm_rcom *rc; |
204 | struct dlm_mhandle *mh; | 204 | struct dlm_mhandle *mh; |
205 | int error = 0, len = sizeof(struct dlm_rcom); | 205 | int error = 0; |
206 | int max_size = dlm_config.ci_buffer_size - sizeof(struct dlm_rcom); | ||
206 | 207 | ||
207 | ls->ls_recover_nodeid = nodeid; | 208 | ls->ls_recover_nodeid = nodeid; |
208 | 209 | ||
209 | if (nodeid == dlm_our_nodeid()) { | 210 | if (nodeid == dlm_our_nodeid()) { |
210 | dlm_copy_master_names(ls, last_name, last_len, | 211 | dlm_copy_master_names(ls, last_name, last_len, |
211 | ls->ls_recover_buf + len, | 212 | ls->ls_recover_buf->rc_buf, |
212 | dlm_config.ci_buffer_size - len, nodeid); | 213 | max_size, nodeid); |
213 | goto out; | 214 | goto out; |
214 | } | 215 | } |
215 | 216 | ||
diff --git a/fs/dlm/recover.c b/fs/dlm/recover.c index df075dc300fa..80aba5bdd4a4 100644 --- a/fs/dlm/recover.c +++ b/fs/dlm/recover.c | |||
@@ -94,7 +94,7 @@ void dlm_set_recover_status(struct dlm_ls *ls, uint32_t status) | |||
94 | 94 | ||
95 | static int wait_status_all(struct dlm_ls *ls, uint32_t wait_status) | 95 | static int wait_status_all(struct dlm_ls *ls, uint32_t wait_status) |
96 | { | 96 | { |
97 | struct dlm_rcom *rc = (struct dlm_rcom *) ls->ls_recover_buf; | 97 | struct dlm_rcom *rc = ls->ls_recover_buf; |
98 | struct dlm_member *memb; | 98 | struct dlm_member *memb; |
99 | int error = 0, delay; | 99 | int error = 0, delay; |
100 | 100 | ||
@@ -123,7 +123,7 @@ static int wait_status_all(struct dlm_ls *ls, uint32_t wait_status) | |||
123 | 123 | ||
124 | static int wait_status_low(struct dlm_ls *ls, uint32_t wait_status) | 124 | static int wait_status_low(struct dlm_ls *ls, uint32_t wait_status) |
125 | { | 125 | { |
126 | struct dlm_rcom *rc = (struct dlm_rcom *) ls->ls_recover_buf; | 126 | struct dlm_rcom *rc = ls->ls_recover_buf; |
127 | int error = 0, delay = 0, nodeid = ls->ls_low_nodeid; | 127 | int error = 0, delay = 0, nodeid = ls->ls_low_nodeid; |
128 | 128 | ||
129 | for (;;) { | 129 | for (;;) { |