From 04bf9969585fe7c855266a4269cae51a92d1d450 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 27 Feb 2009 08:16:40 +0000 Subject: [PATCH] - don't call dt_write_prep() under spinlock --- lustre/ofd/ofd_io.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lustre/ofd/ofd_io.c b/lustre/ofd/ofd_io.c index 99f6883..bc385b5 100644 --- a/lustre/ofd/ofd_io.c +++ b/lustre/ofd/ofd_io.c @@ -128,8 +128,6 @@ static int filter_preprw_write(const struct lu_env *env, struct obd_export *exp, rc = filter_grant_check(env, exp, oa, objcount, obj, nb, res, &left, &used, &ungranted); - rc = dt_write_prep(env, filter_object_child(fo), res, *nr_local, &used); - rc = filter_grant_client_calc(exp, &left, &used, &ungranted); /* do not zero out oa->o_valid as it is used in @@ -139,6 +137,9 @@ static int filter_preprw_write(const struct lu_env *env, struct obd_export *exp, oa->o_grant = filter_grant(env, exp, oa->o_grant, oa->o_undirty, left); spin_unlock(&exp->exp_obd->obd_osfs_lock); + + rc = dt_write_prep(env, filter_object_child(fo), res, *nr_local, &used); + filter_object_put(env, fo); RETURN(rc); } -- 1.8.3.1