Messages in this thread | | | Date | Thu, 29 Nov 2018 11:43:34 +0900 | From | Sergey Senozhatsky <> | Subject | Re: [PATCH v3 1/7] zram: fix lockdep warning of free block handling |
| |
On (11/27/18 14:54), Minchan Kim wrote: > With writeback feature, zram_slot_free_notify could be called > in softirq context by end_swap_bio_read. However, bitmap_lock > is not aware of that so lockdep yell out. Thanks. > > get_entry_bdev > spin_lock(bitmap->lock); > irq > softirq > end_swap_bio_read > zram_slot_free_notify > zram_slot_lock <-- deadlock prone > zram_free_page > put_entry_bdev > spin_lock(bitmap->lock); <-- deadlock prone > > With akpm's suggestion(i.e. bitmap operation is already atomic), > we could remove bitmap lock. It might fail to find a empty slot > if serious contention happens. However, it's not severe problem > because huge page writeback has already possiblity to fail if there > is severe memory pressure. Worst case is just keeping > the incompressible in memory, not storage. > > The other problem is zram_slot_lock in zram_slot_slot_free_notify. > To make it safe is this patch introduces zram_slot_trylock where > zram_slot_free_notify uses it. Although it's rare to be contented, > this patch adds new debug stat "miss_free" to keep monitoring > how often it happens. > > Signed-off-by: Minchan Kim <minchan@kernel.org>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
-ss
| |