X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fosc%2Fosc_lock.c;h=f77c3428d1ec099f3ca60a7de6ae2687743cddeb;hp=c9d8e317f98f9b85d533bc43de9ab87f51b7fd4c;hb=c33cd87b28122c8d059b4d05d373ae447348523e;hpb=5ace0491c5acd9d59c05a3a947e9fb3007ae25dd diff --git a/lustre/osc/osc_lock.c b/lustre/osc/osc_lock.c index c9d8e31..f77c342 100644 --- a/lustre/osc/osc_lock.c +++ b/lustre/osc/osc_lock.c @@ -62,6 +62,7 @@ static const struct cl_lock_operations osc_lock_ops; static const struct cl_lock_operations osc_lock_lockless_ops; static void osc_lock_to_lockless(const struct lu_env *env, struct osc_lock *ols, int force); +static int osc_lock_has_pages(struct osc_lock *olck); int osc_lock_is_lockless(const struct osc_lock *olck) { @@ -1381,8 +1382,10 @@ static int osc_lock_flush(struct osc_lock *ols, int discard) cl_env_nested_put(&nest, env); } else result = PTR_ERR(env); - if (result == 0) + if (result == 0) { ols->ols_flush = 1; + LINVRNT(!osc_lock_has_pages(ols)); + } return result; } @@ -1495,7 +1498,10 @@ static int osc_lock_has_pages(struct osc_lock *olck) return result; } #else -# define osc_lock_has_pages(olck) (0) +static int osc_lock_has_pages(struct osc_lock *olck) +{ + return 0; +} #endif /* INVARIANT_CHECK */ static void osc_lock_delete(const struct lu_env *env, @@ -1504,6 +1510,12 @@ static void osc_lock_delete(const struct lu_env *env, struct osc_lock *olck; olck = cl2osc_lock(slice); + if (olck->ols_glimpse) { + LASSERT(!olck->ols_hold); + LASSERT(!olck->ols_lock); + return; + } + LINVRNT(osc_lock_invariant(olck)); LINVRNT(!osc_lock_has_pages(olck));