On Tue, Aug 01, 2017 at 05:02:25PM +0900, Ethan Zhao wrote:Yep, I agree it is kind of cover up block layer issue.
There is no enough error handling in block device adding/registrationThen fix the real issue here, don't paper over the issue by changing the
path, for example,
device_add_disk()
blk_register_queue()
When kernel returns from device_add_disk(), no return value to tell
us it was successful or not --- that suggests it would always succeed,
and according to this assumption, then during block device removal/
unregistration steps,
sd_remove()
del_gendisk()
blk_unregister_queue()
dpm_sysfs_remove(), blk_trace_remove_sysfs() will be called blindly,
though there is likely no 'trace' 'power' sysfs groups there because
actually blk_register_queue()/device_add() failed somewhere. thus
causes WARN flood emitted from sysfs_remove_group() as following triggered
by unloading fnic driver:
sysfs core please. No other subsystem seems to be having this issue.
thanks,
greg k-h