Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] rcu: add rcu_bh_sync torture type to rcutorture

Use the newly-generic synchronous deferred free function to implement torture
testing for rcu_bh using synchronize_rcu_bh rather than the asynchronous
call_rcu_bh.

Signed-off-by: Josh Triplett <josh@freedesktop.org>
Acked-by: Paul E. McKenney <paulmck@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Josh Triplett and committed by
Linus Torvalds
11a14701 20d2e428

+18 -3
+3 -2
Documentation/RCU/torture.txt
··· 55 55 56 56 torture_type The type of RCU to test: "rcu" for the rcu_read_lock() API, 57 57 "rcu_sync" for rcu_read_lock() with synchronous reclamation, 58 - "rcu_bh" for the rcu_read_lock_bh() API, and "srcu" for the 59 - "srcu_read_lock()" API. 58 + "rcu_bh" for the rcu_read_lock_bh() API, "rcu_bh_sync" for 59 + rcu_read_lock_bh() with synchronous reclamation, and "srcu" 60 + for the "srcu_read_lock()" API. 60 61 61 62 verbose Enable debug printk()s. Default is disabled. 62 63
+15 -1
kernel/rcutorture.c
··· 370 370 .name = "rcu_bh" 371 371 }; 372 372 373 + static struct rcu_torture_ops rcu_bh_sync_ops = { 374 + .init = rcu_sync_torture_init, 375 + .cleanup = NULL, 376 + .readlock = rcu_bh_torture_read_lock, 377 + .readdelay = rcu_read_delay, /* just reuse rcu's version. */ 378 + .readunlock = rcu_bh_torture_read_unlock, 379 + .completed = rcu_bh_torture_completed, 380 + .deferredfree = rcu_sync_torture_deferred_free, 381 + .sync = rcu_bh_torture_synchronize, 382 + .stats = NULL, 383 + .name = "rcu_bh_sync" 384 + }; 385 + 373 386 /* 374 387 * Definitions for srcu torture testing. 375 388 */ ··· 465 452 }; 466 453 467 454 static struct rcu_torture_ops *torture_ops[] = 468 - { &rcu_ops, &rcu_sync_ops, &rcu_bh_ops, &srcu_ops, NULL }; 455 + { &rcu_ops, &rcu_sync_ops, &rcu_bh_ops, &rcu_bh_sync_ops, &srcu_ops, 456 + NULL }; 469 457 470 458 /* 471 459 * RCU torture writer kthread. Repeatedly substitutes a new structure