On 4/25/21 6:19 PM, Ming Lei wrote: > On Sun, Apr 25, 2021 at 01:53:16PM -0700, Bart Van Assche wrote: >> On 4/25/21 2:27 AM, Ming Lei wrote: >>> 4) synchronize_rcu() is added before shutting down one request queue, >>> which may slow down reboot/poweroff very much on big systems with lots of >>> HBAs in which lots of LUNs are attached. >> >> The synchronize_rcu() can be removed by using a semaphore >> (<linux/semaphore.h>) instead of an RCU reader lock inside bt_tags_iter(). > > I am not sure you can, because some iteration is done in atomic context. I meant <linux/rwlock.h>. The functions like read_lock_irq() that are declared in that header file are appropriate for atomic context. Bart.