Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "b=19427 correct lmm_object_id and reserve fids for fid-on-OST."
[fs/lustre-release.git]
/
lustre
/
fid
/
fid_handler.c
diff --git
a/lustre/fid/fid_handler.c
b/lustre/fid/fid_handler.c
index
4b32cda
..
e85d0ef
100644
(file)
--- a/
lustre/fid/fid_handler.c
+++ b/
lustre/fid/fid_handler.c
@@
-74,7
+74,7
@@
int seq_server_set_cli(struct lu_server_seq *seq,
* Ask client for new range, assign that range to ->seq_space and write
* seq state to backing store should be atomic.
*/
* Ask client for new range, assign that range to ->seq_space and write
* seq state to backing store should be atomic.
*/
- down(&seq->lss_sem);
+
cfs_
down(&seq->lss_sem);
if (cli == NULL) {
CDEBUG(D_INFO, "%s: Detached sequence client %s\n",
if (cli == NULL) {
CDEBUG(D_INFO, "%s: Detached sequence client %s\n",
@@
-96,7
+96,7
@@
int seq_server_set_cli(struct lu_server_seq *seq,
cli->lcs_space.lsr_mdt = seq->lss_site->ms_node_id;
EXIT;
out_up:
cli->lcs_space.lsr_mdt = seq->lss_site->ms_node_id;
EXIT;
out_up:
- up(&seq->lss_sem);
+
cfs_
up(&seq->lss_sem);
return rc;
}
EXPORT_SYMBOL(seq_server_set_cli);
return rc;
}
EXPORT_SYMBOL(seq_server_set_cli);
@@
-185,9
+185,9
@@
int seq_server_alloc_super(struct lu_server_seq *seq,
int rc;
ENTRY;
int rc;
ENTRY;
- down(&seq->lss_sem);
+
cfs_
down(&seq->lss_sem);
rc = __seq_server_alloc_super(seq, in, out, env);
rc = __seq_server_alloc_super(seq, in, out, env);
- up(&seq->lss_sem);
+
cfs_
up(&seq->lss_sem);
RETURN(rc);
}
RETURN(rc);
}
@@
-213,14
+213,12
@@
static int __seq_server_alloc_meta(struct lu_server_seq *seq,
CDEBUG(D_INFO, "%s: Input seq range: "
DRANGE"\n", seq->lss_name, PRANGE(in));
CDEBUG(D_INFO, "%s: Input seq range: "
DRANGE"\n", seq->lss_name, PRANGE(in));
- if (
range_is_exhausted(space)
) {
+ if (
in->lsr_end <= space->lsr_start
) {
/*
/*
- * Server cannot send empty range to client, this is why
- * we check here that range from client is "newer" than
- * exhausted super.
+ * Client is replaying a fairly old range, server
+ * don't need to do any allocation.
*/
*/
- LASSERT(in->lsr_end > space->lsr_start);
-
+ } else if (range_is_exhausted(space)) {
/*
* Start is set to end of last allocated, because it
* *is* already allocated so we take that into account
/*
* Start is set to end of last allocated, because it
* *is* already allocated so we take that into account
@@
-258,8
+256,7
@@
static int __seq_server_alloc_meta(struct lu_server_seq *seq,
* Update super start by end from client's range. Super
* end should not be changed if range was not exhausted.
*/
* Update super start by end from client's range. Super
* end should not be changed if range was not exhausted.
*/
- if (in->lsr_end > space->lsr_start)
- space->lsr_start = in->lsr_end;
+ space->lsr_start = in->lsr_end;
}
/* sending replay_super to update fld as only super sequence
}
/* sending replay_super to update fld as only super sequence
@@
-334,9
+331,9
@@
int seq_server_alloc_meta(struct lu_server_seq *seq,
int rc;
ENTRY;
int rc;
ENTRY;
- down(&seq->lss_sem);
+
cfs_
down(&seq->lss_sem);
rc = __seq_server_alloc_meta(seq, in, out, env);
rc = __seq_server_alloc_meta(seq, in, out, env);
- up(&seq->lss_sem);
+
cfs_
up(&seq->lss_sem);
RETURN(rc);
}
RETURN(rc);
}
@@
-406,7
+403,12
@@
static int seq_req_handle(struct ptlrpc_request *req,
if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY) {
in = tmp;
if (lustre_msg_get_flags(req->rq_reqmsg) & MSG_REPLAY) {
in = tmp;
- LASSERT(!range_is_zero(in) && range_is_sane(in));
+
+ if (range_is_zero(in) || !range_is_sane(in)) {
+ CERROR("Replayed seq range is invalid: "
+ DRANGE"\n", PRANGE(in));
+ RETURN(err_serious(-EINVAL));
+ }
}
/* seq client passed mdt id, we need to pass that using out
* range parameter */
}
/* seq client passed mdt id, we need to pass that using out
* range parameter */
@@
-538,7
+540,7
@@
int seq_server_init(struct lu_server_seq *seq,
seq->lss_type = type;
seq->lss_site = ms;
range_init(&seq->lss_space);
seq->lss_type = type;
seq->lss_site = ms;
range_init(&seq->lss_space);
- sema_init(&seq->lss_sem, 1);
+
cfs_
sema_init(&seq->lss_sem, 1);
seq->lss_width = is_srv ?
LUSTRE_SEQ_META_WIDTH : LUSTRE_SEQ_SUPER_WIDTH;
seq->lss_width = is_srv ?
LUSTRE_SEQ_META_WIDTH : LUSTRE_SEQ_SUPER_WIDTH;