The *hook* looks OK to me but set_swap_free_notify() looks like an uglyhack. I don't understand why we're setting up the hook lazily inramzswap_read() nor do I understand why we need to look up structswap_info_struct with a bdev. Surely there's a cleaner way to do allthis? Probably somewhere in sys_swapon()?