bugfix: call iocore_flush() before put_disk().
bugfix: split destroy_wdev() into finalize_wdev() and destroy_wdev() and the latter must wait for n_users to be 0.
remove unnecessary code.
use mutex instead of semaphore for alldevs structure.