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
LU-3027 lov: to not modify lov lock when sublock is canceled
[fs/lustre-release.git]
/
lustre
/
lov
/
lov_lock.c
diff --git
a/lustre/lov/lov_lock.c
b/lustre/lov/lov_lock.c
index
417d025
..
547bdca
100644
(file)
--- a/
lustre/lov/lov_lock.c
+++ b/
lustre/lov/lov_lock.c
@@
-147,7
+147,7
@@
static struct cl_lock *lov_sublock_alloc(const struct lu_env *env,
LASSERT(idx < lck->lls_nr);
ENTRY;
LASSERT(idx < lck->lls_nr);
ENTRY;
-
OBD_SLAB_ALLOC_PTR_GFP(link, lov_lock_link_kmem, CFS_ALLOC
_IO);
+
OBD_SLAB_ALLOC_PTR_GFP(link, lov_lock_link_kmem, __GFP
_IO);
if (link != NULL) {
struct lov_sublock_env *subenv;
struct lov_lock_sub *lls;
if (link != NULL) {
struct lov_sublock_env *subenv;
struct lov_lock_sub *lls;
@@
-1023,6
+1023,9
@@
static int lov_lock_fits_into(const struct lu_env *env,
if (need->cld_enq_flags != lov->lls_orig.cld_enq_flags)
return 0;
if (need->cld_enq_flags != lov->lls_orig.cld_enq_flags)
return 0;
+ if (lov->lls_ever_canceled)
+ return 0;
+
if (need->cld_mode == CLM_GROUP)
/*
* always allow to match group lock.
if (need->cld_mode == CLM_GROUP)
/*
* always allow to match group lock.
@@
-1193,7
+1196,7
@@
int lov_lock_init_raid0(const struct lu_env *env, struct cl_object *obj,
int result;
ENTRY;
int result;
ENTRY;
-
OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, CFS_ALLOC
_IO);
+
OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem, __GFP
_IO);
if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_lock_ops);
result = lov_lock_sub_init(env, lck, io);
if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_lock_ops);
result = lov_lock_sub_init(env, lck, io);
@@
-1229,7
+1232,7
@@
int lov_lock_init_empty(const struct lu_env *env, struct cl_object *obj,
int result = -ENOMEM;
ENTRY;
int result = -ENOMEM;
ENTRY;
- OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem,
CFS_ALLOC
_IO);
+ OBD_SLAB_ALLOC_PTR_GFP(lck, lov_lock_kmem,
__GFP
_IO);
if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_empty_lock_ops);
lck->lls_orig = lock->cll_descr;
if (lck != NULL) {
cl_lock_slice_add(lock, &lck->lls_cl, obj, &lov_empty_lock_ops);
lck->lls_orig = lock->cll_descr;