Whamcloud - gitweb
LU-7593 target: umount vs tgt_last_rcvd_update deadlock
tgt_client_del() and
ofd_commitrw_write->tgt_last_rcvd_update
take transaction and ted->ted_lcd_lock
in different order:
thread1:
osd_trans_start
tgt_client_data_update
tgt_client_del <<< mutex_lock(&ted->ted_lcd_lock);
ofd_obd_disconnect
class_disconnect_export_list
class_disconnect_exports
class_cleanup
...
sys_umount
thread2:
__mutex_lock_slowpath
mutex_lock <<< mutex_lock(&ted->ted_lcd_lock);
tgt_last_rcvd_update
tgt_txn_stop_cb
dt_txn_hook_stop
osd_trans_stop
ofd_trans_stop
ofd_commitrw_write
...
tgt_brw_write
Lock only around tgt_client_data_write() inside
the tgt_client_data_update()
Change-Id: Id3f60636be2abb3b70a99ee44b735aab7dfb7657
Seagate-bug-id: MRP-3109
Signed-off-by: Andriy Skulysh <andriy.skulysh@seagate.com>
Reviewed-on: http://review.whamcloud.com/17704
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>