Source
409
409
tbl = rht_dereference(ht->tbl, ht);
410
410
tbl = rhashtable_last_table(ht, tbl);
411
411
412
412
if (rht_grow_above_75(ht, tbl))
413
413
err = rhashtable_rehash_alloc(ht, tbl, tbl->size * 2);
414
414
else if (ht->p.automatic_shrinking && rht_shrink_below_30(ht, tbl))
415
415
err = rhashtable_shrink(ht);
416
416
else if (tbl->nest)
417
417
err = rhashtable_rehash_alloc(ht, tbl, tbl->size);
418
418
419
-
if (!err)
420
-
err = rhashtable_rehash_table(ht);
419
+
if (!err || err == -EEXIST) {
420
+
int nerr;
421
+
422
+
nerr = rhashtable_rehash_table(ht);
423
+
err = err ?: nerr;
424
+
}
421
425
422
426
mutex_unlock(&ht->mutex);
423
427
424
428
if (err)
425
429
schedule_work(&ht->run_work);
426
430
}
427
431
428
432
static int rhashtable_insert_rehash(struct rhashtable *ht,
429
433
struct bucket_table *tbl)
430
434
{