Whamcloud - gitweb
LU-337 Fix alloc flags in alloc_qinfo()
authorChristopher J. Morrone <morrone2@llnl.gov>
Fri, 20 May 2011 02:51:29 +0000 (19:51 -0700)
committerOleg Drokin <green@whamcloud.com>
Tue, 7 Jun 2011 03:01:32 +0000 (20:01 -0700)
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 <morrone2@llnl.gov>
Reviewed-on: http://review.whamcloud.com/880
Reviewed-by: Bobi Jam <bobijam@whamcloud.com>
Tested-by: Hudson
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/quota/quota_interface.c

index 1ee62b0..87c14cf 100644 (file)
@@ -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);