NeilBrown
f16b6e8d83
sunrpc/cache: allow threads to block while waiting for cache update.
...
The current practice of waiting for cache updates by queueing the
whole request to be retried has (at least) two problems.
1/ With NFSv4, requests can be quite complex and re-trying a whole
request when a later part fails should only be a last-resort, not a
normal practice.
2/ Large requests, and in particular any 'write' request, will not be
queued by the current code and doing so would be undesirable.
In many cases only a very sort wait is needed before the cache gets
valid data.
So, providing the underlying transport permits it by setting
->thread_wait,
arrange to wait briefly for an upcall to be completed (as reflected in
the clearing of CACHE_PENDING).
If the short wait was not long enough and CACHE_PENDING is still set,
fall back on the old approach.
The 'thread_wait' value is set to 5 seconds when there are spare
threads, and 1 second when there are no spare threads.
These values are probably much higher than needed, but will ensure
some forward progress.
Note that as we only request an update for a non-valid item, and as
non-valid items are updated in place it is extremely unlikely that
cache_check will return -ETIMEDOUT. Normally cache_defer_req will
sleep for a short while and then find that the item is_valid.
Signed-off-by: NeilBrown <neilb@suse.de >
Signed-off-by: J. Bruce Fields <bfields@redhat.com >
2010-09-07 19:22:07 -04:00
..
2010-08-17 22:15:09 +01:00
2010-08-14 22:26:51 +02:00
2010-06-20 19:46:07 -07:00
2010-07-22 18:06:25 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 21:08:49 +02:00
2010-07-31 02:37:17 -07:00
2010-08-12 10:01:30 -07:00
2010-08-12 08:43:30 -07:00
2010-08-08 21:19:42 +01:00
2010-08-23 18:30:30 -07:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-14 22:26:51 +02:00
2010-08-05 13:26:20 +01:00
2010-08-12 06:38:24 +10:00
2010-08-11 11:38:01 +01:00
2010-08-17 22:55:38 -06:00
2010-06-04 16:00:42 -04:00
2010-09-07 19:22:07 -04:00
2010-08-28 13:55:31 -07:00
2010-07-24 23:26:09 -04:00
2010-06-15 09:56:01 +10:00
2010-08-01 19:36:03 -04:00
2010-05-27 09:12:53 -07:00
2010-05-21 09:34:30 -07:00
2010-05-21 09:34:30 -07:00
2010-05-19 13:38:54 -04:00
2010-07-09 00:09:20 -07:00
2010-08-07 18:23:12 +02:00
2010-08-09 00:13:34 +02:00
2010-08-12 08:43:30 -07:00
2010-08-17 18:07:43 -07:00
2010-08-07 18:53:10 +02:00
2010-05-30 09:00:03 -07:00
2010-08-12 08:43:30 -07:00
2010-08-12 08:43:30 -07:00
2010-08-07 18:26:29 +02:00
2010-06-24 21:30:09 -07:00
2010-08-18 01:09:01 -04:00
2010-08-02 15:34:57 +10:00
2010-08-04 11:47:58 -07:00
2010-07-27 12:40:55 +02:00
2010-08-07 18:53:13 +02:00
2010-05-25 08:07:00 -07:00
2010-08-13 16:53:13 -07:00
2010-06-29 15:29:31 -07:00
2010-08-09 20:45:04 -07:00
2010-06-14 16:37:26 -07:00
2010-05-29 09:12:30 -07:00
2010-08-10 13:47:42 -07:00
2010-08-06 15:36:47 -05:00
2010-08-08 14:55:26 -04:00
2010-06-29 10:07:12 +02:00
2010-08-03 13:47:04 -04:00
2010-08-09 20:45:04 -07:00
2010-06-08 21:40:36 +02:00
2010-07-29 15:16:18 -07:00
2010-05-19 22:03:14 +03:00
2010-08-11 00:29:47 -04:00
2010-05-19 22:41:57 -04:00
2010-08-04 11:00:45 +02:00
2010-08-12 04:14:10 +01:00
2010-08-05 13:53:35 -07:00
2010-08-12 04:14:05 +01:00
2010-08-13 12:03:24 -07:00
2010-08-04 14:13:02 -07:00
2010-07-30 09:36:01 -07:00
2010-07-28 09:59:01 -04:00
2010-08-05 17:17:51 +00:00
2010-07-21 16:01:46 +02:00
2010-08-07 18:53:57 +02:00
2010-08-07 18:53:57 +02:00
2010-07-04 20:17:22 -07:00
2010-06-30 15:00:50 -04:00
2010-05-21 20:29:10 -07:00
2010-05-25 08:07:02 -07:00
2010-08-10 00:09:20 -07:00
2010-07-07 15:59:38 -07:00
2010-05-21 19:30:39 +02:00
2010-08-10 11:26:52 -07:00
2010-08-27 19:54:09 -04:00
2010-08-10 13:47:40 -07:00
2010-05-21 21:12:40 +02:00
2010-08-06 09:23:07 -07:00
2010-05-24 00:36:13 -07:00
2010-05-27 22:03:07 -04:00
2010-06-25 21:33:12 -07:00
2010-08-02 10:09:04 +02:00
2010-07-29 23:09:18 +02:00
2010-05-21 09:37:28 -07:00
2010-08-09 20:45:09 -07:00
2010-08-18 08:35:46 -04:00
2010-08-18 08:35:48 -04:00
2010-07-22 22:58:58 +02:00
2010-07-11 22:22:23 +02:00
2010-08-01 17:06:44 -06:00
2010-08-22 20:28:16 -04:00
2010-08-12 14:23:04 -07:00
2010-07-20 22:05:34 -04:00
2010-07-21 11:00:25 -04:00
2010-07-12 14:41:40 +02:00
2010-05-21 18:31:18 -04:00
2010-05-25 08:07:01 -07:00
2010-08-03 19:45:31 -07:00
2010-05-27 09:12:42 -07:00
2010-05-21 09:34:29 -07:00
2010-07-19 11:54:16 +02:00
2010-08-09 20:44:58 -07:00
2010-08-11 09:23:22 +02:00
2010-08-11 09:22:46 +02:00
2010-08-11 18:21:02 +02:00
2010-05-20 00:18:59 +01:00
2010-08-11 18:21:02 +02:00
2010-06-30 01:21:38 -07:00
2010-06-16 18:08:13 +02:00
2010-06-05 02:23:17 -07:00
2010-07-01 12:45:34 -07:00
2010-08-22 21:15:39 -07:00
2010-08-22 21:15:39 -07:00
2010-06-03 03:21:52 -07:00
2010-08-22 21:15:39 -07:00
2010-08-04 15:31:02 -07:00
2010-07-27 21:01:35 -07:00
2010-06-02 05:53:56 -07:00
2010-08-22 21:15:39 -07:00
2010-06-15 11:48:58 -07:00
2010-06-23 13:16:38 -07:00
2010-06-01 08:55:52 -07:00
2010-07-28 10:18:49 -04:00
2010-08-02 20:30:04 -07:00
2010-07-27 23:32:57 -07:00
2010-08-03 09:49:09 -04:00
2010-07-29 13:24:57 +02:00
2010-08-12 11:47:50 +10:00
2010-07-09 11:42:03 -07:00
2010-05-24 09:06:59 +02:00
2010-08-09 20:45:05 -07:00
2010-07-19 15:44:25 +02:00
2010-06-22 08:07:01 +02:00
2010-08-22 21:15:39 -07:00
2010-06-03 03:21:52 -07:00
2010-08-10 13:47:40 -07:00
2010-05-25 08:07:09 -07:00
2010-08-07 13:03:53 -07:00
2010-05-21 19:30:40 +02:00
2010-08-10 11:49:21 -07:00
2010-05-20 23:05:28 -07:00
2010-08-12 11:27:58 +02:00
2010-08-14 22:26:51 +02:00
2010-08-05 09:22:30 -05:00
2010-08-12 09:51:35 -07:00
2010-08-20 09:34:54 -07:00
2010-08-05 09:22:21 -05:00
2010-05-27 09:12:45 -07:00
2010-08-23 18:12:46 -07:00
2010-08-23 18:12:46 -07:00
2010-05-21 09:37:29 -07:00
2010-07-27 20:48:19 -07:00
2010-08-09 20:44:58 -07:00
2010-06-29 10:07:09 +02:00
2010-08-02 06:40:39 +03:00
2010-08-02 06:39:44 +03:00
2010-08-01 10:47:00 +03:00
2010-05-26 17:34:16 +01:00
2010-05-26 13:07:55 +01:00
2010-08-18 08:35:48 -04:00
2010-07-02 10:59:24 +02:00
2010-05-25 08:07:07 -07:00
2010-07-06 13:45:24 -04:00
2010-05-21 09:37:30 -07:00
2010-06-16 18:03:15 +02:00
2010-08-02 15:35:11 +10:00
2010-08-04 11:47:58 -07:00
2010-05-25 08:07:09 -07:00
2010-08-09 16:48:45 -04:00
2010-07-14 17:14:00 +10:00
2010-08-11 08:59:19 -07:00
2010-05-25 08:07:00 -07:00
2010-08-09 20:44:56 -07:00
2010-05-25 08:06:59 -07:00
2010-08-21 00:37:40 -07:00
2010-06-03 03:21:52 -07:00
2010-08-21 08:49:21 -07:00
2010-08-28 14:01:03 -07:00
2010-08-09 20:44:58 -07:00
2010-08-09 20:45:00 -07:00
2010-05-21 17:15:44 -07:00
2010-06-05 11:17:36 +09:30
2010-08-11 23:04:41 +09:30
2010-08-11 00:29:47 -04:00
2010-07-30 09:41:39 -07:00
2010-06-30 13:01:11 -07:00
2010-08-22 21:15:39 -07:00
2010-06-03 03:21:52 -07:00
2010-08-22 21:15:39 -07:00
2010-07-02 21:59:08 -07:00
2010-08-04 15:31:02 -07:00
2010-05-21 09:37:32 -07:00
2010-08-10 16:24:41 -07:00
2010-07-30 14:46:10 -04:00
2010-06-22 13:24:02 -04:00
2010-08-07 13:19:36 -07:00
2010-08-06 13:41:39 -04:00
2010-07-30 14:41:56 -04:00
2010-07-30 14:46:10 -04:00
2010-07-25 23:29:21 +09:00
2010-06-24 15:42:37 -04:00
2010-05-30 09:00:03 -07:00
2010-05-31 00:28:35 -07:00
2010-08-01 01:42:42 -06:00
2010-08-06 09:25:50 -06:00
2010-07-05 16:14:30 -06:00
2010-07-05 16:14:52 -06:00
2010-07-05 16:14:25 -06:00
2010-08-06 09:25:50 -06:00
2010-07-30 00:03:59 -06:00
2010-07-30 00:03:58 -06:00
2010-08-08 10:02:59 -07:00
2010-08-11 08:59:19 -07:00
2010-07-31 19:53:06 +08:00
2010-05-27 09:12:44 -07:00
2010-07-16 11:13:08 +03:00
2010-08-12 10:15:10 -07:00
2010-08-11 00:29:47 -04:00
2010-08-04 14:12:05 -07:00
2010-08-08 18:20:38 +00:00
2010-05-21 18:58:52 -07:00
2010-07-30 09:29:35 -07:00
2010-08-09 20:44:58 -07:00
2010-06-01 08:55:52 -07:00
2010-06-27 18:50:00 +02:00
2010-08-06 09:39:22 -07:00
2010-06-04 15:21:45 -07:00
2010-08-22 21:15:39 -07:00
2010-07-18 19:15:26 -07:00
2010-06-03 14:54:39 +02:00
2010-08-05 13:53:34 -07:00
2010-07-19 01:58:48 +02:00
2010-07-19 02:00:34 +02:00
2010-07-19 01:58:48 +02:00
2010-07-19 02:01:06 +02:00
2010-07-19 01:58:48 +02:00
2010-08-11 09:21:15 +02:00
2010-07-16 09:48:45 +02:00
2010-08-04 21:53:17 -07:00
2010-07-18 19:15:26 -07:00
2010-08-18 23:30:42 -07:00
2010-05-27 18:56:27 +02:00
2010-07-23 12:50:46 +02:00
2010-08-09 20:44:59 -07:00
2010-05-21 18:31:26 -04:00
2010-05-27 09:12:52 -07:00
2010-08-03 09:48:50 -04:00
2010-05-25 08:07:03 -07:00
2010-07-05 14:43:50 +02:00
2010-06-14 16:37:26 -07:00
2010-06-03 03:21:52 -07:00
2010-05-21 18:31:19 -04:00
2010-08-09 16:47:27 -04:00
2010-08-10 11:26:52 -07:00
2010-05-21 18:31:19 -04:00
2010-07-16 09:48:48 +02:00
2010-08-22 21:15:39 -07:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:51 -07:00
2010-05-30 09:02:47 -07:00
2010-08-12 10:15:10 -07:00
2010-07-22 13:46:21 -07:00
2010-07-23 17:08:41 +04:00
2010-08-17 18:07:43 -07:00
2010-06-03 03:21:52 -07:00
2010-05-27 09:12:39 -07:00
2010-08-10 12:07:51 -07:00
2010-05-27 09:12:49 -07:00
2010-08-10 13:47:46 -07:00
2010-08-21 00:34:45 -07:00
2010-08-10 13:47:46 -07:00
2010-08-10 13:47:46 -07:00
2010-05-25 12:22:33 +09:00
2010-08-10 13:47:46 -07:00
2010-05-25 11:41:43 -04:00
2010-08-04 16:12:01 +09:00
2010-08-09 20:44:58 -07:00
2010-08-04 21:53:14 -07:00
2010-08-11 08:59:21 -07:00
2010-07-04 19:48:33 +03:00
2010-08-11 08:59:21 -07:00
2010-08-22 10:08:52 -07:00
2010-06-03 03:18:19 -07:00
2010-06-16 14:55:35 -07:00
2010-06-01 08:55:52 -07:00
2010-05-21 21:12:40 +02:00
2010-08-09 16:48:44 -04:00
2010-07-19 02:00:35 +02:00
2010-08-11 08:59:19 -07:00
2010-06-07 11:59:27 -04:00
2010-08-17 18:07:43 -07:00
2010-08-23 18:12:46 -07:00
2010-08-21 00:34:45 -07:00
2010-08-11 08:59:22 -07:00
2010-05-27 09:12:51 -07:00
2010-08-13 16:53:13 -07:00
2010-08-03 09:48:45 -04:00
2010-08-09 20:44:57 -07:00
2010-06-21 12:23:36 -04:00
2010-08-18 08:35:47 -04:00
2010-08-06 10:37:02 -04:00
2010-06-28 23:24:30 -07:00
2010-08-21 00:37:40 -07:00
2010-08-10 14:35:44 -07:00
2010-06-16 14:55:34 -07:00
2010-05-19 22:40:47 -04:00
2010-08-27 09:10:44 +10:00
2010-08-08 23:43:01 -03:00
2010-08-11 08:59:02 -07:00
2010-08-12 09:09:41 -07:00
2010-05-25 08:06:59 -07:00
2010-08-10 13:47:44 -07:00
2010-05-20 21:26:12 -07:00
2010-06-03 03:21:52 -07:00
2010-08-07 12:42:58 -07:00
2010-08-12 08:43:29 -07:00
2010-08-02 15:34:57 +10:00