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: 2.0.62.0~3 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=d8506f4b3a03b5605fc927409ce16f55ad5bffd5;hp=daee9d5d61fb14cf998a3444ed33152cfc27fab5;ds=sidebyside LU-337 Fix alloc flags in alloc_qinfo() CFS_ALLOC_STD 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: I9d7ccfcd5258c537af4d4f1d0bf2a190f4fc89c7 Signed-off-by: Christopher J. Morrone Reviewed-on: http://review.whamcloud.com/880 Reviewed-by: Bobi Jam Tested-by: Hudson Reviewed-by: Oleg Drokin --- diff --git a/lustre/quota/quota_interface.c b/lustre/quota/quota_interface.c index 1ee62b0..87c14cf 100644 --- a/lustre/quota/quota_interface.c +++ b/lustre/quota/quota_interface.c @@ -787,7 +787,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);