Avoid thread-unsafe PrintInode in threaded code
authorAndrew Deason <adeason@sinenomine.net>
Mon, 12 Jul 2010 20:47:15 +0000 (15:47 -0500)
committerDerrick Brashear <shadow@dementia.org>
Thu, 19 Aug 2010 18:52:46 +0000 (11:52 -0700)
Some potentially-threaded callers were calling PrintInode with a NULL
first argument, which is not threadsafe. Alter them to use local
storage.

Change-Id: Ib9ad9c070bd659be30616b2c77cd244458357197
Reviewed-on: http://gerrit.openafs.org/2593
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/viced/afsfileprocs.c
src/viced/physio.c
src/vol/clone.c
src/vol/listinodes.c
src/vol/vnode.c
src/vol/vol-salvage.c
src/vol/vutil.c
src/volser/dumpstuff.c
src/volser/vol-dump.c

index d8d93a7..1eca526 100644 (file)
@@ -1318,6 +1318,7 @@ DeleteTarget(Vnode * parentptr, Volume * volptr, Vnode ** targetptr,
     DirHandle childdir;                /* Handle for dir package I/O */
     Error errorCode = 0;
     int code;
+    afs_ino_str_t stmp;
 
     /* watch for invalid names */
     if (!strcmp(Name, ".") || !strcmp(Name, ".."))
@@ -1386,7 +1387,7 @@ DeleteTarget(Vnode * parentptr, Volume * volptr, Vnode ** targetptr,
            if (errorCode == -1) {
                ViceLog(0,
                        ("DT: inode=%s, name=%s, errno=%d\n",
-                        PrintInode(NULL, VN_GET_INO(*targetptr)), Name,
+                        PrintInode(stmp, VN_GET_INO(*targetptr)), Name,
                         errno));
                if (errno != ENOENT)
                {
@@ -1722,6 +1723,7 @@ Alloc_NewVnode(Vnode * parentptr, DirHandle * dir, Volume * volptr,
     Error temp;
     Inode inode = 0;
     Inode nearInode;           /* hint for inode allocation in solaris */
+    afs_ino_str_t stmp;
 
     if ((errorCode =
         AdjustDiskUsage(volptr, BlocksPreallocatedForVnode,
@@ -1777,7 +1779,7 @@ Alloc_NewVnode(Vnode * parentptr, DirHandle * dir, Volume * volptr,
            if (IH_DEC(V_linkHandle(volptr), inode, V_parentId(volptr)))
                ViceLog(0,
                        ("Alloc_NewVnode: partition %s idec %s failed\n",
-                        volptr->partition->name, PrintInode(NULL, inode)));
+                        volptr->partition->name, PrintInode(stmp, inode)));
            IH_RELEASE((*targetptr)->handle);
 
            return errorCode;
@@ -1793,7 +1795,7 @@ Alloc_NewVnode(Vnode * parentptr, DirHandle * dir, Volume * volptr,
        if (IH_DEC(V_linkHandle(volptr), inode, V_parentId(volptr)))
            ViceLog(0,
                    ("Alloc_NewVnode: partition %s idec %s failed\n",
-                    volptr->partition->name, PrintInode(NULL, inode)));
+                    volptr->partition->name, PrintInode(stmp, inode)));
        IH_RELEASE((*targetptr)->handle);
        return (errorCode);
     }
@@ -3859,6 +3861,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName,
     struct client *t_client;   /* tmp ptr to client data */
     struct in_addr logHostAddr;        /* host ip holder for inet_ntoa */
     struct rx_connection *tcon = rx_ConnectionOf(acall);
+    afs_ino_str_t stmp;
 
     FidZero(&olddir);
     FidZero(&newdir);
@@ -4147,7 +4150,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName,
                if (errorCode == -1) {
                    ViceLog(0,
                            ("Del: inode=%s, name=%s, errno=%d\n",
-                            PrintInode(NULL, VN_GET_INO(newfileptr)),
+                            PrintInode(stmp, VN_GET_INO(newfileptr)),
                             NewName, errno));
                    if ((errno != ENOENT) && (errno != EIO)
                        && (errno != ENXIO))
@@ -7270,6 +7273,7 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
     ssize_t nBytes;
     FdHandle_t *fdP, *origfdP = NULL;
     struct in_addr logHostAddr;        /* host ip holder for inet_ntoa */
+    afs_ino_str_t stmp;
 
 #if FS_STATS_DETAILED
     /*
@@ -7302,7 +7306,7 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
         */
        ViceLog(25,
                ("StoreData_RXStyle : Opening inode %s\n",
-                PrintInode(NULL, VN_GET_INO(targetptr))));
+                PrintInode(stmp, VN_GET_INO(targetptr))));
        fdP = IH_OPEN(targetptr->handle);
        if (fdP == NULL)
            return ENOENT;
@@ -7318,7 +7322,7 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
            afs_fsize_t size;
            ViceLog(25,
                    ("StoreData_RXStyle : inode %s has more than onelink\n",
-                    PrintInode(NULL, VN_GET_INO(targetptr))));
+                    PrintInode(stmp, VN_GET_INO(targetptr))));
            /* other volumes share this data, better copy it first */
 
            /* Adjust the disk block count by the creation of the new inode.
index 6021a53..6165dcc 100644 (file)
@@ -52,13 +52,14 @@ ReallyRead(DirHandle * file, int block, char *data)
     int code;
     ssize_t rdlen;
     FdHandle_t *fdP;
+    afs_ino_str_t stmp;
 
     fdP = IH_OPEN(file->dirh_handle);
     if (fdP == NULL) {
        code = errno;
        ViceLog(0,
                ("ReallyRead(): open failed device %X inode %s errno %d\n",
-                file->dirh_handle->ih_dev, PrintInode(NULL,
+                file->dirh_handle->ih_dev, PrintInode(stmp,
                                                       file->dirh_handle->
                                                       ih_ino), code));
        return code;
@@ -81,7 +82,7 @@ ReallyRead(DirHandle * file, int block, char *data)
            code = EIO;
        ViceLog(0,
                ("ReallyRead(): read failed device %X inode %s errno %d\n",
-                file->dirh_handle->ih_dev, PrintInode(NULL,
+                file->dirh_handle->ih_dev, PrintInode(stmp,
                                                       file->dirh_handle->
                                                       ih_ino), code));
        FDH_REALLYCLOSE(fdP);
@@ -98,12 +99,13 @@ ReallyWrite(DirHandle * file, int block, char *data)
 {
     ssize_t count;
     FdHandle_t *fdP;
+    afs_ino_str_t stmp;
 
     fdP = IH_OPEN(file->dirh_handle);
     if (fdP == NULL) {
        ViceLog(0,
                ("ReallyWrite(): open failed device %X inode %s errno %d\n",
-                file->dirh_handle->ih_dev, PrintInode(NULL,
+                file->dirh_handle->ih_dev, PrintInode(stmp,
                                                       file->dirh_handle->
                                                       ih_ino), errno));
        lpErrno = errno;
@@ -122,7 +124,7 @@ ReallyWrite(DirHandle * file, int block, char *data)
     if ((count = FDH_WRITE(fdP, data, PAGESIZE)) != PAGESIZE) {
        ViceLog(0,
                ("ReallyWrite(): write failed device %X inode %s errno %d\n",
-                file->dirh_handle->ih_dev, PrintInode(NULL,
+                file->dirh_handle->ih_dev, PrintInode(stmp,
                                                       file->dirh_handle->
                                                       ih_ino), errno));
        lpCount = count;
index 405176a..e2e5909 100644 (file)
@@ -174,6 +174,7 @@ DoCloneIndex(Volume * rwvp, Volume * clvp, VnodeClass class, int reclone)
     afs_int32 offset = 0;
     afs_int32 dircloned, inodeinced;
     afs_int32 filecount = 0, diskused = 0;
+    afs_ino_str_t stmp;
 
     struct VnodeClassInfo *vcp = &VnodeClassInfo[class];
     int ReadWriteOriginal = VolumeWriteable(rwvp);
@@ -260,7 +261,7 @@ DoCloneIndex(Volume * rwvp, Volume * clvp, VnodeClass class, int reclone)
                if (IH_INC(V_linkHandle(rwvp), rwinode, V_parentId(rwvp)) ==
                    -1) {
                    Log("IH_INC failed: %"AFS_PTR_FMT", %s, %u errno %d\n",
-                       V_linkHandle(rwvp), PrintInode(NULL, rwinode),
+                       V_linkHandle(rwvp), PrintInode(stmp, rwinode),
                        V_parentId(rwvp), errno);
                    VForceOffline(rwvp);
                    ERROR_EXIT(EIO);
@@ -313,7 +314,7 @@ DoCloneIndex(Volume * rwvp, Volume * clvp, VnodeClass class, int reclone)
                if (IH_DEC(V_linkHandle(rwvp), rwinode, V_parentId(rwvp)) ==
                    -1) {
                    Log("IH_DEC failed: %"AFS_PTR_FMT", %s, %u errno %d\n",
-                       V_linkHandle(rwvp), PrintInode(NULL, rwinode),
+                       V_linkHandle(rwvp), PrintInode(stmp, rwinode),
                        V_parentId(rwvp), errno);
                    VForceOffline(rwvp);
                    ERROR_EXIT(EIO);
index 8d74604..090f954 100644 (file)
@@ -492,6 +492,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
     char tmpName[32];
     b64_string_t stmp;
     int tag;
+    afs_ino_str_t stmp;
 
     *rename = 0;
     (void)sprintf(path, "%s/%s", dir, name);
@@ -499,7 +500,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
     if (info->ili_magic != XFS_VICEMAGIC) {
        Log("%s  magic for %s/%s (inode %s) from %d to %d\n",
            Testing ? "Would have changed" : "Changing", dir, name,
-           PrintInode(NULL, info->ili_info.inodeNumber), info->ili_magic,
+           PrintInode(stmp, info->ili_info.inodeNumber), info->ili_magic,
            XFS_VICEMAGIC);
        if (!Testing)
            update_chown = 1;
@@ -509,7 +510,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
     if (info->ili_vno != AFS_XFS_VNO_CLIP(vno)) {
        Log("%s volume id for %s/%s (inode %s) from %d to %d\n",
            Testing ? "Would have changed" : "Changing", dir, name,
-           PrintInode(NULL, info->ili_info.inodeNumber), info->ili_vno,
+           PrintInode(stmp, info->ili_info.inodeNumber), info->ili_vno,
            AFS_XFS_VNO_CLIP(vno));
        if (!Testing)
            update_chown = 1;
@@ -542,7 +543,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
     if (strncmp(name, tmpName, strlen(tmpName))) {
        Log("%s name %s (inode %s) in directory %s, unique=%d, tag=%d\n",
            Testing ? "Would have returned bad" : "Bad", name,
-           PrintInode(NULL, info->ili_info.inodeNumber), dir,
+           PrintInode(stmp, info->ili_info.inodeNumber), dir,
            info->ili_info.param[2], info->ili_tag);
        if (!Testing)
            *rename = 1;
@@ -558,7 +559,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
            p = strchr(tmpName + 1, '.');
            if (!p) {
                Log("No tag found on name %s (inode %s)in directory, %s.\n",
-                   name, PrintInode(NULL, info->ili_info.inodeNumber), dir,
+                   name, PrintInode(stmp, info->ili_info.inodeNumber), dir,
                    Testing ? "would have renamed" : "will rename");
                if (!Testing)
                    *rename = 1;
@@ -566,7 +567,7 @@ xfs_VerifyInode(char *dir, uint64_t pino, char *name, i_list_inode_t * info,
                tag = base64_to_int(p + 1);
                Log("%s the tag for %s (inode %s) from %d to %d.\n",
                    Testing ? "Would have changed" : "Will change", path,
-                   PrintInode(NULL, info->ili_info.inodeNumber), dir, tag,
+                   PrintInode(stmp, info->ili_info.inodeNumber), dir, tag,
                    info->ili_tag);
                if (!Testing)
                    update_tag = 1;
@@ -1501,8 +1502,9 @@ inode_ConvertROtoRWvolume(char *pname, afs_uint32 volumeId)
            /* Unlink the old special inode; otherwise we will get duplicate
             * special inodes if we recreate the RO again */
            if (IH_DEC(ih, specinos[j].inodeNumber, volumeId) == -1) {
+               afs_ino_str_t stmp;
                Log("IH_DEC failed: %x, %s, %u errno %d\n", ih,
-                   PrintInode(NULL, specinos[j].inodeNumber), volumeId, errno);
+                   PrintInode(stmp, specinos[j].inodeNumber), volumeId, errno);
            }
 
            IH_RELEASE(ih);
index 45cfa85..18e2014 100644 (file)
@@ -883,6 +883,7 @@ VnLoad(Error * ec, Volume * vp, Vnode * vnp,
     ssize_t nBytes;
     IHandle_t *ihP = vp->vnodeIndex[class].handle;
     FdHandle_t *fdP;
+    afs_ino_str_t stmp;
 
     *ec = 0;
     vcp->reads++;
@@ -898,7 +899,7 @@ VnLoad(Error * ec, Volume * vp, Vnode * vnp,
     fdP = IH_OPEN(ihP);
     if (fdP == NULL) {
        Log("VnLoad: can't open index dev=%u, i=%s\n", vp->device,
-           PrintInode(NULL, vp->vnodeIndex[class].handle->ih_ino));
+           PrintInode(stmp, vp->vnodeIndex[class].handle->ih_ino));
        *ec = VIO;
        goto error_encountered_nolock;
     } else if (FDH_SEEK(fdP, vnodeIndexOffset(vcp, Vn_id(vnp)), SEEK_SET)
@@ -912,7 +913,7 @@ VnLoad(Error * ec, Volume * vp, Vnode * vnp,
         * or the inode table is full. */
        if (nBytes == BAD_IGET) {
            Log("VnLoad: bad inumber %s\n",
-               PrintInode(NULL, vp->vnodeIndex[class].handle->ih_ino));
+               PrintInode(stmp, vp->vnodeIndex[class].handle->ih_ino));
            *ec = VIO;
            dosalv = 0;
        } else if (nBytes == -1 && errno == EIO) {
@@ -1010,6 +1011,7 @@ VnStore(Error * ec, Volume * vp, Vnode * vnp,
     afs_foff_t offset;
     IHandle_t *ihP = vp->vnodeIndex[class].handle;
     FdHandle_t *fdP;
+    afs_ino_str_t stmp;
 #ifdef AFS_DEMAND_ATTACH_FS
     VnState vn_state_save;
 #endif
@@ -1042,7 +1044,7 @@ VnStore(Error * ec, Volume * vp, Vnode * vnp,
        FDH_REALLYCLOSE(fdP);
        if (nBytes == BAD_IGET) {
            Log("VnStore: bad inumber %s\n",
-               PrintInode(NULL,
+               PrintInode(stmp,
                           vp->vnodeIndex[class].handle->ih_ino));
            *ec = VIO;
            VOL_LOCK;
index 148879a..964ae21 100644 (file)
@@ -1970,6 +1970,7 @@ DoSalvageVolumeGroup(struct SalvInfo *salvinfo, struct InodeSummary *isp, int nV
 
     /* Fix actual inode counts */
     if (!Showmode) {
+       afs_ino_str_t stmp;
        Log("totalInodes %d\n",totalInodes);
        for (ip = inodes; totalInodes; ip++, totalInodes--) {
            static int TraceBadLinkCounts = 0;
@@ -1982,14 +1983,14 @@ DoSalvageVolumeGroup(struct SalvInfo *salvinfo, struct InodeSummary *isp, int nV
 #endif
            if (ip->linkCount != 0 && TraceBadLinkCounts) {
                TraceBadLinkCounts--;   /* Limit reports, per volume */
-               Log("#### DEBUG #### Link count incorrect by %d; inode %s, size %llu, p=(%u,%u,%u,%u)\n", ip->linkCount, PrintInode(NULL, ip->inodeNumber), (afs_uintmax_t) ip->byteCount, ip->u.param[0], ip->u.param[1], ip->u.param[2], ip->u.param[3]);
+               Log("#### DEBUG #### Link count incorrect by %d; inode %s, size %llu, p=(%u,%u,%u,%u)\n", ip->linkCount, PrintInode(stmp, ip->inodeNumber), (afs_uintmax_t) ip->byteCount, ip->u.param[0], ip->u.param[1], ip->u.param[2], ip->u.param[3]);
            }
            while (ip->linkCount > 0) {
                /* below used to assert, not break */
                if (!Testing) {
                    if (IH_DEC(salvinfo->VGLinkH, ip->inodeNumber, ip->u.param[0])) {
                        Log("idec failed. inode %s errno %d\n",
-                           PrintInode(NULL, ip->inodeNumber), errno);
+                           PrintInode(stmp, ip->inodeNumber), errno);
                        break;
                    }
                }
@@ -2000,7 +2001,7 @@ DoSalvageVolumeGroup(struct SalvInfo *salvinfo, struct InodeSummary *isp, int nV
                if (!Testing) {
                    if (IH_INC(salvinfo->VGLinkH, ip->inodeNumber, ip->u.param[0])) {
                        Log("iinc failed. inode %s errno %d\n",
-                           PrintInode(NULL, ip->inodeNumber), errno);
+                           PrintInode(stmp, ip->inodeNumber), errno);
                        break;
                    }
                }
@@ -2200,11 +2201,12 @@ SalvageVolumeHeaderFile(struct SalvInfo *salvinfo, struct InodeSummary *isp,
        }
     }
     for (i = 0; i < isp->nSpecialInodes; i++) {
+       afs_ino_str_t stmp;
        ip = &inodes[isp->index + i];
        if (ip->u.special.type <= 0 || ip->u.special.type > MAXINODETYPE) {
            if (check) {
                Log("Rubbish header inode %s of type %d\n",
-                   PrintInode(NULL, ip->inodeNumber),
+                   PrintInode(stmp, ip->inodeNumber),
                    ip->u.special.type);
                if (skip) {
                    free(skip);
@@ -2212,17 +2214,17 @@ SalvageVolumeHeaderFile(struct SalvInfo *salvinfo, struct InodeSummary *isp,
                return -1;
            }
            Log("Rubbish header inode %s of type %d; deleted\n",
-               PrintInode(NULL, ip->inodeNumber),
+               PrintInode(stmp, ip->inodeNumber),
                ip->u.special.type);
        } else if (!stuff[ip->u.special.type - 1].obsolete) {
            if (skip && skip[i]) {
                if (orphans == ORPH_REMOVE) {
                    Log("Removing orphan special inode %s of type %d\n",
-                       PrintInode(NULL, ip->inodeNumber), ip->u.special.type);
+                       PrintInode(stmp, ip->inodeNumber), ip->u.special.type);
                    continue;
                } else {
                    Log("Ignoring orphan special inode %s of type %d\n",
-                       PrintInode(NULL, ip->inodeNumber), ip->u.special.type);
+                       PrintInode(stmp, ip->inodeNumber), ip->u.special.type);
                    /* fall through to the ip->linkCount--; line below */
                }
            } else {
@@ -2728,13 +2730,14 @@ SalvageIndex(struct SalvInfo *salvinfo, Inode ino, VnodeClass class, int RW,
                    ip++;
                    nInodes--;
                } else {        /* no matching inode */
+                   afs_ino_str_t stmp;
                    if (VNDISK_GET_INO(vnode) != 0
                        || vnode->type == vDirectory) {
                        /* No matching inode--get rid of the vnode */
                        if (check) {
                            if (VNDISK_GET_INO(vnode)) {
                                if (!Showmode) {
-                                   Log("Vnode %d (unique %u): corresponding inode %s is missing\n", vnodeNumber, vnode->uniquifier, PrintInode(NULL, VNDISK_GET_INO(vnode)));
+                                   Log("Vnode %d (unique %u): corresponding inode %s is missing\n", vnodeNumber, vnode->uniquifier, PrintInode(stmp, VNDISK_GET_INO(vnode)));
                                }
                            } else {
                                if (!Showmode)
@@ -2746,7 +2749,7 @@ SalvageIndex(struct SalvInfo *salvinfo, Inode ino, VnodeClass class, int RW,
                        if (VNDISK_GET_INO(vnode)) {
                            if (!Showmode) {
                                time_t serverModifyTime = vnode->serverModifyTime;
-                               Log("Vnode %d (unique %u): corresponding inode %s is missing; vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, PrintInode(NULL, VNDISK_GET_INO(vnode)), ctime(&serverModifyTime));
+                               Log("Vnode %d (unique %u): corresponding inode %s is missing; vnode deleted, vnode mod time=%s", vnodeNumber, vnode->uniquifier, PrintInode(stmp, VNDISK_GET_INO(vnode)), ctime(&serverModifyTime));
                            }
                        } else {
                            if (!Showmode) {
@@ -4406,6 +4409,7 @@ PrintInodeList(struct SalvInfo *salvinfo)
     struct ViceInodeInfo *buf;
     struct afs_stat status;
     int nInodes;
+    afs_ino_str_t stmp;
 
     assert(afs_fstat(salvinfo->inodeFd, &status) == 0);
     buf = (struct ViceInodeInfo *)malloc(status.st_size);
@@ -4414,7 +4418,7 @@ PrintInodeList(struct SalvInfo *salvinfo)
     assert(read(salvinfo->inodeFd, buf, status.st_size) == status.st_size);
     for (ip = buf; nInodes--; ip++) {
        Log("Inode:%s, linkCount=%d, size=%#llx, p=(%u,%u,%u,%u)\n",
-           PrintInode(NULL, ip->inodeNumber), ip->linkCount,
+           PrintInode(stmp, ip->inodeNumber), ip->linkCount,
            (afs_uintmax_t) ip->byteCount, ip->u.param[0], ip->u.param[1],
            ip->u.param[2], ip->u.param[3]);
     }
index d9c3246..3d643c6 100644 (file)
@@ -127,6 +127,7 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId)
     struct stat st;
     struct VolumeHeader tempHeader;
     struct afs_inode_info stuff[MAXINODETYPE];
+    afs_ino_str_t stmp;
 # ifdef AFS_DEMAND_ATTACH_FS
     int locktype = 0;
 # endif /* AFS_DEMAND_ATTACH_FS */
@@ -271,7 +272,7 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId)
        fdP = IH_OPEN(handle);
        if (fdP == NULL) {
            Log("VCreateVolume:  Problem iopen inode %s (err=%d)\n",
-               PrintInode(NULL, *(p->inode)), errno);
+               PrintInode(stmp, *(p->inode)), errno);
            goto bad;
        }
        if (FDH_SEEK(fdP, 0, SEEK_SET) < 0) {
@@ -283,7 +284,7 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId)
        if (FDH_WRITE(fdP, (char *)&p->stamp, sizeof(p->stamp)) !=
            sizeof(p->stamp)) {
            Log("VCreateVolume:  Problem writing to  inode %s (err=%d)\n",
-               PrintInode(NULL, *(p->inode)), errno);
+               PrintInode(stmp, *(p->inode)), errno);
            FDH_REALLYCLOSE(fdP);
            goto bad;
        }
@@ -296,7 +297,7 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId)
     fdP = IH_OPEN(handle);
     if (fdP == NULL) {
        Log("VCreateVolume:  Problem iopen inode %s (err=%d)\n",
-           PrintInode(NULL, tempHeader.volumeInfo), errno);
+           PrintInode(stmp, tempHeader.volumeInfo), errno);
        goto bad;
     }
     if (FDH_SEEK(fdP, 0, SEEK_SET) < 0) {
@@ -307,7 +308,7 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId)
     }
     if (FDH_WRITE(fdP, (char *)&vol, sizeof(vol)) != sizeof(vol)) {
        Log("VCreateVolume:  Problem writing to  inode %s (err=%d)\n",
-           PrintInode(NULL, tempHeader.volumeInfo), errno);
+           PrintInode(stmp, tempHeader.volumeInfo), errno);
        FDH_REALLYCLOSE(fdP);
        goto bad;
     }
index 0b06feb..732a3f6 100644 (file)
@@ -714,6 +714,7 @@ DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP)
     afs_foff_t lcode = 0;
     byte *p;
     afs_uint32 hi, lo;
+    afs_ino_str_t stmp;
 #ifndef AFS_NT40_ENV
     struct afs_stat status;
 #endif
@@ -796,9 +797,9 @@ DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP)
            /* Record the read error */
            if (n < 0) {
                n = 0;
-               Log("1 Volser: DumpFile: Error reading inode %s for vnode %d: %s\n", PrintInode(NULL, handleP->fd_ih->ih_ino), vnode, afs_error_message(errno));
+               Log("1 Volser: DumpFile: Error reading inode %s for vnode %d: %s\n", PrintInode(stmp, handleP->fd_ih->ih_ino), vnode, afs_error_message(errno));
            } else if (!pad) {
-               Log("1 Volser: DumpFile: Error reading inode %s for vnode %d\n", PrintInode(NULL, handleP->fd_ih->ih_ino), vnode);
+               Log("1 Volser: DumpFile: Error reading inode %s for vnode %d\n", PrintInode(stmp, handleP->fd_ih->ih_ino), vnode);
            }
 
            /* Pad the rest of the buffer with zeros. Remember offset we started
index cef91bf..cb862f9 100644 (file)
@@ -565,6 +565,7 @@ DumpFile(int dumpfd, int vnode, FdHandle_t * handleP,  struct VnodeDiskObject *v
     size_t howMany;
     byte *p;
     afs_uint32 hi, lo;
+    afs_ino_str_t stmp;
 #ifndef AFS_NT40_ENV
     struct afs_stat status;
 #endif
@@ -650,11 +651,11 @@ DumpFile(int dumpfd, int vnode, FdHandle_t * handleP,  struct VnodeDiskObject *v
            if (n < 0) {
                n = 0;
                fprintf(stderr, "Error %d reading inode %s for vnode %d\n",
-                       errno, PrintInode(NULL, handleP->fd_ih->ih_ino),
+                       errno, PrintInode(stmp, handleP->fd_ih->ih_ino),
                        vnode);
            } else if (!pad) {
                fprintf(stderr, "Error reading inode %s for vnode %d\n",
-                       PrintInode(NULL, handleP->fd_ih->ih_ino), vnode);
+                       PrintInode(stmp, handleP->fd_ih->ih_ino), vnode);
            }
 
            /* Pad the rest of the buffer with zeros. Remember offset we started
@@ -708,6 +709,7 @@ DumpVnode(int dumpfd, struct VnodeDiskObject *v, int volid, int vnodeNumber,
     int code = 0;
     IHandle_t *ihP;
     FdHandle_t *fdP;
+    afs_ino_str_t stmp;
 
     if (verbose)
        fprintf(stderr, "dumping vnode %d\n", vnodeNumber);
@@ -752,14 +754,14 @@ DumpVnode(int dumpfd, struct VnodeDiskObject *v, int volid, int vnodeNumber,
        if (fdP == NULL) {
            fprintf(stderr,
                    "Unable to open inode %s for vnode %u (volume %i); not dumped, error %d\n",
-                   PrintInode(NULL, VNDISK_GET_INO(v)), vnodeNumber, volid,
+                   PrintInode(stmp, VNDISK_GET_INO(v)), vnodeNumber, volid,
                    errno);
        }
        else
        {
                if (verbose)
                    fprintf(stderr, "about to dump inode %s for vnode %u\n",
-                           PrintInode(NULL, VNDISK_GET_INO(v)), vnodeNumber);
+                           PrintInode(stmp, VNDISK_GET_INO(v)), vnodeNumber);
                code = DumpFile(dumpfd, vnodeNumber, fdP, v);
                FDH_CLOSE(fdP);
        }