From 29fd43b1d1c0e33c421632731f2a3eb837cfbc29 Mon Sep 17 00:00:00 2001 From: Dmitry Zogin Date: Wed, 9 Jun 2010 16:04:10 -0400 Subject: [PATCH] b=21563 Metadata performance has degraded for some operations between 1.6.5 and 1.8.1 Remove the check for OSCC_FLAG_CREATING flag in osc_precreate(), so that it enters oscc_internal_create(). Also remove the check for in oscc_internal_create() for OSCC_FLAG_DEGRADED - let the chance to create objects in case all OSTs are degraded. i=andreas.dilger i=johann --- lustre/osc/osc_create.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lustre/osc/osc_create.c b/lustre/osc/osc_create.c index 6c555d5..5fd149b 100644 --- a/lustre/osc/osc_create.c +++ b/lustre/osc/osc_create.c @@ -361,8 +361,8 @@ int osc_precreate(struct obd_export *exp) RETURN(1000); } - if (oscc->oscc_flags & OSCC_FLAG_RECOVERING || - oscc->oscc_flags & OSCC_FLAG_DEGRADED) { + /* Do not check for a degraded OST here - bug21563/bug18539 */ + if (oscc->oscc_flags & OSCC_FLAG_RECOVERING) { cfs_spin_unlock(&oscc->oscc_lock); RETURN(2); } @@ -372,8 +372,10 @@ int osc_precreate(struct obd_export *exp) RETURN(0); } - if ((oscc->oscc_flags & OSCC_FLAG_SYNC_IN_PROGRESS) || - (oscc->oscc_flags & OSCC_FLAG_CREATING)) { + /* Do not check for OSCC_FLAG_CREATING flag here, let + * osc_precreate() call oscc_internal_create() and + * adjust oscc_grow_count bug21563 */ + if (oscc->oscc_flags & OSCC_FLAG_SYNC_IN_PROGRESS) { cfs_spin_unlock(&oscc->oscc_lock); RETURN(1); } -- 1.8.3.1