Whamcloud - gitweb
LU-2909 osc: flush until no dirty in osc_enter_cache()
authorNiu Yawei <yawei.niu@intel.com>
Fri, 15 Mar 2013 07:48:43 +0000 (03:48 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Sat, 30 Mar 2013 18:42:14 +0000 (14:42 -0400)
commit840fcdf52dda62772075dd2dbddb752bf81cf3c4
tree21ff1d0ea6c33f86fd785ca60c308bfd14b64305
parent633d4edb4e27ff3af7026e8d4e6770cec042a931
LU-2909 osc: flush until no dirty in osc_enter_cache()

In osc_enter_cache(), when there is high contention on grant, the
returned grant could be consumed by other process immediately, then
we should repeat flush until get enough grant or no dirty to be
flushed. Otherwise, mmap writer could easily get -EDQUOT on the
osc_enter_cache() and result in SIGBUS at the end.

Because we now changed to async flush in osc_enter_cache(), the
wakeup condition is changed accordingly.

This patch also temporarily disabled osc lru shrinker in
osc_io_unplug() to avoid the potential stack overrun problem.
See LU-2859.

Signed-off-by: Niu Yawei <yawei.niu@intel.com>
Change-Id: I0c7c90ffe27dab6ded7ad07ed78017acb8665d59
Reviewed-on: http://review.whamcloud.com/5732
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Keith Mannthey <keith.mannthey@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osc/osc_cache.c