Currently SetupVolume panics if it cannot successfully read a
volumeinfo entry from disk. Try to return an error instead, so we
don't panic the machine.
Reviewed-on: http://gerrit.openafs.org/9094
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
(cherry picked from commit
6f7ae535bbac2a5376358801b7f2c9e072f2d141)
Change-Id: Ib8ea06192bfcd6c2111444db325abc4a90190bbc
Reviewed-on: http://gerrit.openafs.org/9131
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
err =
afs_osi_Read(tfile, sizeof(struct fvolume) * j,
&staticFVolume, sizeof(struct fvolume));
- if (err != sizeof(struct fvolume))
- osi_Panic("read volumeinfo2");
osi_UFSClose(tfile);
+ if (err != sizeof(struct fvolume)) {
+ afs_warn("afs_SetupVolume: error %d reading volumeinfo\n",
+ (int)err);
+ /* put tv back on the free list; the data in it is not valid */
+ tv->next = afs_freeVolList;
+ afs_freeVolList = tv;
+ /* staticFVolume contents are not valid */
+ afs_FVIndex = -1;
+ ReleaseWriteLock(&afs_xvolume);
+ return NULL;
+ }
afs_FVIndex = j;
}
tf = &staticFVolume;