mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
a193d76070
When doing a full volume restore (vos restore -overwrite full), the target volume is deleted by UV_RestoreVolume2() before the dump file is opened. After the target volume is deleted, UV_RestoreVolume2() calls the WriteData() callback function to open the dump file and send the volume data to the volume server. If the volume dump file cannot be opened at that point, then the volume restore operation is aborted before sending any dump data, but the target volume was unnecessarily destroyed. Currently, a precheck is done by the FileExists() function, but the file handled acquired by FileExists() is discarded, and a new file handle is opened in the WriteData() function. To improve this situation, change the sequence to open the dump file before calling UV_RestoreVolume2() and pass the opened file handle, instead of the filename string, and close the file handle after UV_RestoreVolume2() returns. The FileExists() function is no longer needed since we no longer discard the opened file handle when processing the vos restore arguments, so remove the now unused FileExists() function. Also remove the afilename string from RestoreVolumeCmd() and pass the opened file handle to UV_RestoreVolume2() instead. Because of this refactoring, we no longer report an error when the USC_CLOSE of the dump file handle fails, and we no longer run USD_IOCTL_GETSIZE when opening the dump file (and exit with an error if it fails.) Change-Id: I6092e43a5dcaa795191143b65388ad1117b582f3 Reviewed-on: https://gerrit.openafs.org/15069 Reviewed-by: Cheyenne Wills <cwills@sinenomine.net> Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Andrew Deason <adeason@sinenomine.net> |
||
---|---|---|
build-tools | ||
doc | ||
src | ||
tests | ||
.gitignore | ||
.gitreview | ||
.mailmap | ||
.splintrc | ||
acinclude.m4 | ||
CODING | ||
configure-libafs.ac | ||
configure.ac | ||
CONTRIBUTING | ||
INSTALL | ||
libafsdep | ||
LICENSE | ||
Makefile-libafs.in | ||
Makefile.in | ||
NEWS | ||
NTMakefile | ||
README | ||
README-WINDOWS | ||
regen.sh |
AFS is a distributed file system that enables users to share and access all of the files stored in a network of computers as easily as they access the files stored on their local machines. The file system is called distributed for this exact reason: files can reside on many different machines, but are available to users on every machine. OpenAFS 1.0 was originally released by IBM under the terms of the IBM Public License 1.0 (IPL10). For details on IPL10 see the LICENSE file in this directory. The current OpenAFS distribution is licensed under a combination of the IPL10 and many other licenses as granted by the relevant copyright holders. The LICENSE file in this directory contains more details, thought it is not a comprehensive statement. See INSTALL for information about building and installing OpenAFS on various platforms. See CODING for developer information and guidelines. See NEWS for recent changes to OpenAFS.