From 822266f25e95f3cfdf2f7fb0ec3edd9a58a27eda Mon Sep 17 00:00:00 2001 From: nikita Date: Thu, 19 Feb 2009 12:37:51 +0000 Subject: [PATCH] osc_io_submit(): add a comment clarifying osc page queueing algorithm. --- lustre/osc/osc_io.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lustre/osc/osc_io.c b/lustre/osc/osc_io.c index 0df758c..594e3a0 100644 --- a/lustre/osc/osc_io.c +++ b/lustre/osc/osc_io.c @@ -194,6 +194,19 @@ static int osc_io_submit(const struct lu_env *env, /* * Don't keep client_obd_list_lock() for too long. * + * XXX client_obd_list lock has to be unlocked periodically to + * avoid soft-lockups that tend to happen otherwise (see bug + * 16651). On the other hand, osc_io_submit_page() queues a + * page with ASYNC_URGENT flag and so all pages queued up + * until this point are sent out immediately by + * osc_io_unplug() resulting in sub-optimal RPCs (sub-optimal + * RPCs only happen during `warm up' phase when less than + * cl_max_rpcs_in_flight RPCs are in flight). To balance these + * conflicting requirements, one might unplug once enough + * pages to form a large RPC were queued (i.e., use + * cli->cl_max_pages_per_rpc as OSC_QUEUE_GRAIN, see + * lop_makes_rpc()), or ignore soft-lockup issue altogether. + * * XXX lock_need_resched() should be used here, but it is not * available in the older of supported kernels. */ -- 1.8.3.1