From: Christopher J. Morrone Date: Fri, 20 May 2011 02:51:29 +0000 (-0700) Subject: LU-337 Fix alloc flags in alloc_qinfo() X-Git-Tag: 1.8.5.56~6 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=74ec6f5c8d1d73108c6de24a82f6384c98f2bac1;p=fs%2Flustre-release.git LU-337 Fix alloc flags in alloc_qinfo() CFS_ALLOC_IO allows a hang when the alloc_qinfo() results in a cache_alloc_refill, and kicks off the ldlm shrinker. The shrinker may hang in sync_page() on the same page on which we already hold the lock. Change-Id: I3d9887ebc2909d38b4abb2e8d7715913c9c2cc40 Signed-off-by: Christopher J. Morrone Reviewed-on: http://review.whamcloud.com/582 Reviewed-by: Bobi Jam Reviewed-by: Johann Lombardi Tested-by: Hudson --- diff --git a/lustre/quota/quota_interface.c b/lustre/quota/quota_interface.c index a297ba1..939c495 100644 --- a/lustre/quota/quota_interface.c +++ b/lustre/quota/quota_interface.c @@ -742,7 +742,7 @@ static struct osc_quota_info *alloc_qinfo(struct client_obd *cli, struct osc_quota_info *oqi; ENTRY; - OBD_SLAB_ALLOC(oqi, qinfo_cachep, CFS_ALLOC_STD, sizeof(*oqi)); + OBD_SLAB_ALLOC(oqi, qinfo_cachep, CFS_ALLOC_IO, sizeof(*oqi)); if(!oqi) RETURN(NULL);