X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosc%2Fosc_page.c;h=29774de41bf47f16c9db9fce722a5090905694f0;hb=e482463ea5d52e696f772ab581650659ac2ab096;hp=c46db69c78e3515fb36b300d4ab68daa4575fef2;hpb=6c3606b79a4c25946255a680f79ff2d58df66bbc;p=fs%2Flustre-release.git diff --git a/lustre/osc/osc_page.c b/lustre/osc/osc_page.c index c46db69..29774de 100644 --- a/lustre/osc/osc_page.c +++ b/lustre/osc/osc_page.c @@ -264,9 +264,9 @@ static int osc_page_addref_lock(const struct lu_env *env, olock = osc_lock_at(lock); if (cfs_atomic_inc_return(&olock->ols_pageref) <= 0) { cfs_atomic_dec(&olock->ols_pageref); - cl_lock_put(env, lock); - rc = 1; + rc = -ENODATA; } else { + cl_lock_get(lock); opg->ops_lock = lock; rc = 0; } @@ -293,16 +293,16 @@ static int osc_page_is_under_lock(const struct lu_env *env, struct cl_io *unused) { struct cl_lock *lock; - int result; + int result = -ENODATA; ENTRY; lock = cl_lock_at_page(env, slice->cpl_obj, slice->cpl_page, NULL, 1, 0); - if (lock != NULL && - osc_page_addref_lock(env, cl2osc_page(slice), lock) == 0) - result = -EBUSY; - else - result = -ENODATA; + if (lock != NULL) { + if (osc_page_addref_lock(env, cl2osc_page(slice), lock) == 0) + result = -EBUSY; + cl_lock_put(env, lock); + } RETURN(result); }