Schedule all salvages via VScheduleSalvage_r
authorAndrew Deason <adeason@sinenomine.net>
Fri, 19 Feb 2010 21:17:56 +0000 (15:17 -0600)
committerDerrick Brashear <shadow@dementia.org>
Tue, 9 Mar 2010 19:06:26 +0000 (11:06 -0800)
commit9aa09f5e634db8a8b2dedf3a749f2a90ef206e2f
treefec370fb4565458b2045e6bfd1beff9ddc8f4876
parentb550276579f929512a5fa3cf1d9482df914f67be
Schedule all salvages via VScheduleSalvage_r

Change I03ecf6302436c35fec705cd6c84a40b7cdbf6f97 allowed non-fileserver
programs to schedule salvages via FSSYNC, making the FSSYNC call
directly in VRequestSalvage_r. This isn't as safe as making the call in
VScheduleSalvage_r (as is done when the fileserver schedules a salvage
via SALVSYNC), since we may not have relinquished all of our handles and
such for the volume by the time the salvager starts.

So instead, make this path a bit more like the fileserver, and make
non-fileserver programs actually make the FSSYNC call in
VScheduleSalvage_r. Consequently, make VScheduleSalvage_r conditionally
hit FSSYNC or SALVSYNC. Add a VCheckSalvage to attach2 failures, so
non-fileserver salvage requests actually get scheduled.

Also, reorganize the attach2 error handling a bit to make this a bit
easier.

Change-Id: I786a7953e860a132575caad8fe12168f6841442b
Reviewed-on: http://gerrit.openafs.org/1356
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/vol/volume.c