2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-26 07:20:34 -08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-10 16:33:11 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-02-09 14:04:03 +11:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-08-13 16:38:30 +02:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:31 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
2015-01-02 23:00:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-20 00:53:38 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-02-20 00:53:38 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:56 +08:00
|
|
|
|
rhashtable: unconditionally grow when max_shift is not specified
While commit c0c09bfdc415 ("rhashtable: avoid unnecessary wakeup for
worker queue") rightfully moved part of the decision making of
whether we should expand or shrink from the expand/shrink functions
themselves into insert/delete functions in order to avoid unnecessary
worker wake-ups, it however introduced a regression by doing so.
Before that change, if no max_shift was specified (= 0) on rhashtable
initialization, rhashtable_expand() would just grow unconditionally
and lets the available memory be the limiting factor. After that
change, if no max_shift was specified, there would be _no_ expansion
step at all.
Given that netlink and tipc have a max_shift specified, it was not
visible there, but Josh Hunt reported that if nft that starts out
with a default element hint of 3 if not otherwise provided, would
slow i.e. inserts down trememdously as it cannot grow larger to
relax table occupancy.
Given that the test case verifies shrinks/expands manually, we also
must remove pointer to the helper functions to explicitly avoid
parallel resizing on insertions/deletions. test_bucket_stats() and
test_rht_lookup() could also be wrapped around rhashtable mutex to
explicitly synchronize a walk from resizing, but I think that defeats
the actual test case which intended to have explicit test steps,
i.e. 1) inserts, 2) expands, 3) shrinks, 4) deletions, with object
verification after each stage.
Reported-by: Josh Hunt <johunt@akamai.com>
Fixes: c0c09bfdc415 ("rhashtable: avoid unnecessary wakeup for worker queue")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Ying Xue <ying.xue@windriver.com>
Cc: Josh Hunt <johunt@akamai.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-02-25 16:31:53 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:56 +08:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:34 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:34 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-05 02:03:34 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:34 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-11-13 13:45:46 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:56 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-26 07:20:34 -08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-26 07:20:34 -08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:36 +01:00
|
|
|
|
2015-02-05 02:03:33 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-11-13 13:45:46 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-26 07:20:34 -08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-01-07 13:41:56 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-04 07:33:23 +11:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
rhashtable: Fix race in rhashtable_destroy() and use regular work_struct
When we put our declared work task in the global workqueue with
schedule_delayed_work(), its delay parameter is always zero.
Therefore, we should define a regular work in rhashtable structure
instead of a delayed work.
By the way, we add a condition to check whether resizing functions
are NULL before cancelling the work, avoiding to cancel an
uninitialized work.
Lastly, while we wait for all work items we submitted before to run
to completion with cancel_delayed_work(), ht->mutex has been taken in
rhashtable_destroy(). Moreover, cancel_delayed_work() doesn't return
until all work items are accomplished, and when work items are
scheduled, the work's function - rht_deferred_worker() will be called.
However, as rht_deferred_worker() also needs to acquire the lock,
deadlock might happen at the moment as the lock is already held before.
So if the cancel work function is moved out of the lock covered scope,
this will avoid the deadlock.
Fixes: 97defe1 ("rhashtable: Per bucket locks & deferred expansion/shrinking")
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Cc: Thomas Graf <tgraf@suug.ch>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-01-16 11:13:09 +08:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-04 07:33:22 +11:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-04 07:33:23 +11:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-04 07:33:22 +11:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-11-13 13:45:46 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-13 13:45:46 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:36 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:36 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:35 +01:00
|
|
|
|
2015-01-02 23:00:18 +01:00
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:36 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
2015-02-05 02:03:36 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
|
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
|
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-01-21 11:54:01 +00:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:52 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-07 13:41:52 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:52 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:14 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2015-01-02 23:00:15 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-12 14:52:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-06 16:08:43 +00:00
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2015-01-12 14:52:22 +08:00
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
2015-02-05 02:03:32 +01:00
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-12 14:52:22 +08:00
|
|
|
|
2015-01-07 13:41:54 +08:00
|
|
|
|
2015-02-04 07:33:23 +11:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-23 04:35:06 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-04 07:33:23 +11:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-03 09:22:36 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-09-03 09:22:36 +08:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-10 16:33:11 +01:00
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-12-10 16:33:11 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-02 23:00:21 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-03 09:22:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2014-09-03 09:22:36 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-04 07:33:23 +11:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 13:41:57 +08:00
|
|
|
|
2015-01-07 13:41:56 +08:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-02 00:26:05 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2015-02-25 16:31:54 +01:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
rhashtable: Fix race in rhashtable_destroy() and use regular work_struct
When we put our declared work task in the global workqueue with
schedule_delayed_work(), its delay parameter is always zero.
Therefore, we should define a regular work in rhashtable structure
instead of a delayed work.
By the way, we add a condition to check whether resizing functions
are NULL before cancelling the work, avoiding to cancel an
uninitialized work.
Lastly, while we wait for all work items we submitted before to run
to completion with cancel_delayed_work(), ht->mutex has been taken in
rhashtable_destroy(). Moreover, cancel_delayed_work() doesn't return
until all work items are accomplished, and when work items are
scheduled, the work's function - rht_deferred_worker() will be called.
However, as rht_deferred_worker() also needs to acquire the lock,
deadlock might happen at the moment as the lock is already held before.
So if the cancel work function is moved out of the lock covered scope,
this will avoid the deadlock.
Fixes: 97defe1 ("rhashtable: Per bucket locks & deferred expansion/shrinking")
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Cc: Thomas Graf <tgraf@suug.ch>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-01-16 11:13:09 +08:00
|
|
|
|
2015-01-02 23:00:20 +01:00
|
|
|
|
|
|
|
|
|
2014-08-02 11:47:44 +02:00
|
|
|
|
|
|
|
|
|