Whamcloud - gitweb
Branch b1_4
authoradilger <adilger>
Wed, 21 Sep 2005 07:55:37 +0000 (07:55 +0000)
committeradilger <adilger>
Wed, 21 Sep 2005 07:55:37 +0000 (07:55 +0000)
commit1f0d79a5b74f0b19558da1a892754cc7c1521dfc
tree2c95d4ea1b6479a76693faf26e43ec45afde93ee
parentae622d8e459e97e5ec1d7f3e526b637801c93659
Branch b1_4
b=8322
r=nathan
Description: OST or MDS may oops in ping_evictor_main()
Details    : ping_evictor_main() drops obd_dev_lock if deleting a stale
     export but doesn't restart at beginning of obd_exports_timed
     list afterward.

The list_for_each_safe() macro is only safe for the removal of the current
entry and not safe if some other entry (in particular the next one)
is removed.  As class_fail_export() will immediately result in the export
being removed from the obd_exports_timed list (via class_unlink_export())
we are OK to restart processing at the start of the list each time.

The extra pet_lock around pet_exp references in code are not strictly
necessary, but rather precautionary and for consistency when accessing
pet_exp.
lustre/ChangeLog
lustre/obdclass/genops.c