From 6f7ae535bbac2a5376358801b7f2c9e072f2d141 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Fri, 8 Feb 2013 17:24:28 -0600 Subject: [PATCH] afs: Avoid SetupVolume panic 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. Change-Id: Iad3c2c857f1b736fcf4a142338d9e219bab68969 Reviewed-on: http://gerrit.openafs.org/9094 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afs/afs_volume.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/afs/afs_volume.c b/src/afs/afs_volume.c index 9953f5a15..ef0d825c5 100644 --- a/src/afs/afs_volume.c +++ b/src/afs/afs_volume.c @@ -592,9 +592,18 @@ afs_SetupVolume(afs_int32 volid, char *aname, void *ve, struct cell *tcell, 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; -- 2.39.5