412 lines
13 KiB
Diff
412 lines
13 KiB
Diff
From 1c7c01420d592e0e87e532ac688e61d5a2fafab2 Mon Sep 17 00:00:00 2001
|
|
From: Larry Dewey <ldewey@suse.com>
|
|
Date: Thu, 9 Jan 2020 14:36:45 -0700
|
|
Subject: [PATCH] libfs: Fixing issue with variable name collision
|
|
|
|
Due to the structure of the old code, variable name collisions were
|
|
occuring when building with the `-fno-common` flag. These changes fix
|
|
the problem.
|
|
|
|
[LD: BSC#1160272]
|
|
|
|
Signed-off-by: Larry Dewey <ldewey@suse.com>
|
|
---
|
|
fscklog/display.c | 4 +-
|
|
libfs/logredo.c | 127 +++++++++++++++++++++++-----------------------
|
|
2 files changed, 66 insertions(+), 65 deletions(-)
|
|
|
|
diff --git a/fscklog/display.c b/fscklog/display.c
|
|
index a33d44f..ecb48ca 100644
|
|
--- a/fscklog/display.c
|
|
+++ b/fscklog/display.c
|
|
@@ -54,7 +54,7 @@ FILE *infp;
|
|
* output: fsck extracted service log I/O buffer
|
|
*
|
|
*/
|
|
-char xchklog_buffer[XCHKLOG_BUFSIZE];
|
|
+char display_xchklog_buffer[XCHKLOG_BUFSIZE];
|
|
|
|
/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
|
*
|
|
@@ -98,7 +98,7 @@ int xchkdmp(struct fscklog_record *local_recptr)
|
|
* Initialize the fscklog control block
|
|
*/
|
|
local_recptr->infile_buf_length = XCHKLOG_BUFSIZE;
|
|
- local_recptr->infile_buf_ptr = xchklog_buffer;
|
|
+ local_recptr->infile_buf_ptr = display_xchklog_buffer;
|
|
local_recptr->highest_msg_num =
|
|
fsck_highest_msgid_defined + JFSCHKLOG_FIRSTMSGNUM;
|
|
|
|
diff --git a/libfs/logredo.c b/libfs/logredo.c
|
|
index eb897e8..c9934db 100644
|
|
--- a/libfs/logredo.c
|
|
+++ b/libfs/logredo.c
|
|
@@ -87,9 +87,9 @@ int32_t bmap_stg_bytes = 0;
|
|
* S T U F F F O R T H E L O G
|
|
*
|
|
*/
|
|
-struct logsuper logsup; /* log super block */
|
|
-int32_t numdoblk; /* number of do blocks used */
|
|
-int32_t numnodofile; /* number of nodo file blocks used */
|
|
+struct logsuper global_logsup; /* log super block */
|
|
+int32_t logredo_numdoblk; /* number of do blocks used */
|
|
+int32_t logredo_numnodofile; /* number of nodo file blocks used */
|
|
int32_t numExtDtPg = 0; /* number of extended dtpage blocks used */
|
|
|
|
/*
|
|
@@ -129,7 +129,7 @@ int32_t use_2ndary_agg_superblock;
|
|
*/
|
|
|
|
/* buffer header table */
|
|
-struct bufhdr {
|
|
+struct logredo_bufhdr {
|
|
int16_t next; /* 2: next on free/lru list */
|
|
int16_t prev; /* 2: previous on free/lru list */
|
|
int16_t hnext; /* 2: next on hash chain */
|
|
@@ -139,27 +139,28 @@ struct bufhdr {
|
|
int16_t reserve; /* 2 */
|
|
int32_t vol; /* 4: minor of agrregate/lv number */
|
|
pxd_t pxd; /* 8: on-disk page pxd */
|
|
-} bufhdr[NBUFPOOL]; /* (24) */
|
|
+} logredo_bufhdr[NBUFPOOL]; /* (24) */
|
|
|
|
/* buffer table */
|
|
struct bufpool {
|
|
char bytes[PSIZE];
|
|
-} buffer[NBUFPOOL - 1];
|
|
+} logredo_buffer[NBUFPOOL - 1];
|
|
|
|
/*
|
|
* log page buffer cache
|
|
*
|
|
* log has its own 4 page buffer pool.
|
|
*/
|
|
-uint8_t afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
|
|
+uint8_t logredo_afterdata[LOGPSIZE * 2]; /* buffer to read in redopage data */
|
|
|
|
/*
|
|
* Miscellaneous
|
|
*/
|
|
-caddr_t prog; /* Program name */
|
|
-int32_t mntcnt, bufsize;
|
|
-char *mntinfo;
|
|
-int32_t retcode; /* return code from logredo */
|
|
+caddr_t logredo_prog; /* Program name */
|
|
+extern int32_t mntcnt;
|
|
+int32_t logredo_bufsize;
|
|
+char *logredo_mntinfo;
|
|
+int32_t logredo_retcode; /* return code from logredo */
|
|
int end_of_transaction = 0;
|
|
|
|
/*
|
|
@@ -489,8 +490,8 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
/*
|
|
* loop until we get enough memory to read vmount struct
|
|
*/
|
|
- mntinfo = (char *) &bufsize;
|
|
- bufsize = sizeof (int);
|
|
+ logredo_mntinfo = (char *) &logredo_bufsize;
|
|
+ logredo_bufsize = sizeof (int);
|
|
|
|
/*
|
|
* validate that the log is not currently in use;
|
|
@@ -517,21 +518,21 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
rc = ujfs_rw_diskblocks(Log.fp,
|
|
(uint64_t) (Log.xaddr +
|
|
LOGPNTOB(LOGSUPER_B)),
|
|
- (unsigned) sizeof (struct logsuper), (char *) &logsup, GET);
|
|
+ (unsigned) sizeof (struct logsuper), (char *) &global_logsup, GET);
|
|
if (rc != 0) {
|
|
fsck_send_msg(lrdo_CANTREADLOGSUP);
|
|
rc = LOGSUPER_READ_ERROR;
|
|
goto error_out;
|
|
}
|
|
- ujfs_swap_logsuper(&logsup);
|
|
+ ujfs_swap_logsuper(&global_logsup);
|
|
|
|
- if (logsup.magic != LOGMAGIC) {
|
|
+ if (global_logsup.magic != LOGMAGIC) {
|
|
fsck_send_msg(lrdo_LOGSUPBADMGC);
|
|
rc = NOT_LOG_FILE_ERROR;
|
|
goto error_out;
|
|
}
|
|
|
|
- if (logsup.version > LOGVERSION) {
|
|
+ if (global_logsup.version > LOGVERSION) {
|
|
fsck_send_msg(lrdo_LOGSUPBADVER);
|
|
rc = JFS_VERSION_ERROR;
|
|
goto error_out;
|
|
@@ -551,7 +552,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
}
|
|
}
|
|
|
|
- if (logsup.state == LOGREDONE) {
|
|
+ if (global_logsup.state == LOGREDONE) {
|
|
fsck_send_msg(lrdo_ALREADYREDONE);
|
|
if (Log.location & INLINELOG)
|
|
if ((rc = updateSuper(0)) != 0) {
|
|
@@ -561,8 +562,8 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
return (0);
|
|
}
|
|
|
|
- Log.size = logsup.size;
|
|
- Log.serial = logsup.serial;
|
|
+ Log.size = global_logsup.size;
|
|
+ Log.serial = global_logsup.serial;
|
|
|
|
/*
|
|
* find the end of log
|
|
@@ -574,10 +575,10 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
|
|
fsck_send_msg(lrdo_LOGENDBAD1);
|
|
logError(LOGEND, 0);
|
|
- ujfs_swap_logsuper(&logsup);
|
|
+ ujfs_swap_logsuper(&global_logsup);
|
|
rc = ujfs_rw_diskblocks(Log.fp,
|
|
(Log.xaddr + LOGPNTOB(LOGSUPER_B)),
|
|
- (unsigned long) LOGPSIZE, (char *) &logsup, PUT);
|
|
+ (unsigned long) LOGPSIZE, (char *) &global_logsup, PUT);
|
|
rc = logend;
|
|
goto error_out;
|
|
}
|
|
@@ -592,7 +593,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
goto error_out;
|
|
}
|
|
|
|
- highest_lr_byte = logsup.size * LOGPSIZE - LOGRDSIZE;
|
|
+ highest_lr_byte = global_logsup.size * LOGPSIZE - LOGRDSIZE;
|
|
|
|
if ((logend < lowest_lr_byte) || (logend > highest_lr_byte)) {
|
|
fsck_send_msg(lrdo_LOGEND, logend);
|
|
@@ -614,7 +615,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
|
|
do {
|
|
logaddr = nextaddr;
|
|
- nextaddr = logRead(logaddr, &ld, afterdata);
|
|
+ nextaddr = logRead(logaddr, &ld, logredo_afterdata);
|
|
DBG_TRACE(("Logaddr=%x\nNextaddr=%x\n", logaddr, nextaddr))
|
|
nlogrecords += 1;
|
|
/*
|
|
@@ -745,7 +746,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
*/
|
|
if (end_of_transaction != 0) {
|
|
for (k = 1; k < NBUFPOOL; k++) {
|
|
- if ((rc = bflush(k, &buffer[k - 1])) != 0)
|
|
+ if ((rc = bflush(k, &logredo_buffer[k - 1])) != 0)
|
|
goto error_out;
|
|
}
|
|
end_of_transaction = 0;
|
|
@@ -768,7 +769,7 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
* flush data page buffer cache
|
|
*/
|
|
for (k = 1; k < NBUFPOOL; k++) {
|
|
- if ((rc = bflush(k, &buffer[k - 1])) != 0)
|
|
+ if ((rc = bflush(k, &logredo_buffer[k - 1])) != 0)
|
|
break;
|
|
}
|
|
|
|
@@ -810,17 +811,17 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
* versions of the operating system. Therefore switch the magic
|
|
* number to the earliest level.
|
|
*/
|
|
- if (logsup.state != LOGREADERR) {
|
|
+ if (global_logsup.state != LOGREADERR) {
|
|
for (k = 0; k < MAX_ACTIVE; k++)
|
|
- uuid_clear(logsup.active[k]);
|
|
+ uuid_clear(global_logsup.active[k]);
|
|
|
|
- logsup.end = logend;
|
|
- logsup.state = LOGREDONE;
|
|
- logsup.magic = LOGMAGIC;
|
|
+ global_logsup.end = logend;
|
|
+ global_logsup.state = LOGREDONE;
|
|
+ global_logsup.magic = LOGMAGIC;
|
|
}
|
|
- ujfs_swap_logsuper(&logsup);
|
|
+ ujfs_swap_logsuper(&global_logsup);
|
|
rc = ujfs_rw_diskblocks(Log.fp, (Log.xaddr + LOGPNTOB(LOGSUPER_B)),
|
|
- LOGPSIZE, (char *) &logsup, PUT);
|
|
+ LOGPSIZE, (char *) &global_logsup, PUT);
|
|
|
|
/*
|
|
* now log some info for the curious
|
|
@@ -833,9 +834,9 @@ int jfs_logredo(caddr_t pathname, FILE *fp, int32_t use_2nd_aggSuper)
|
|
|
|
fsck_send_msg(lrdo_RPTNUMLOGREC, nlogrecords);
|
|
|
|
- fsck_send_msg(lrdo_RPTNUMDOBLK, numdoblk);
|
|
+ fsck_send_msg(lrdo_RPTNUMDOBLK, logredo_numdoblk);
|
|
|
|
- fsck_send_msg(lrdo_RPTNUMNODOBLK, numnodofile);
|
|
+ fsck_send_msg(lrdo_RPTNUMNODOBLK, logredo_numnodofile);
|
|
|
|
error_out:
|
|
|
|
@@ -954,18 +955,18 @@ int openVol(int vol)
|
|
* Now that the aggregate superblock has been read, do some
|
|
* more validation of the log superblock
|
|
*/
|
|
- if (logsup.bsize != vopen[vol].lblksize) {
|
|
+ if (global_logsup.bsize != vopen[vol].lblksize) {
|
|
fsck_send_msg(lrdo_LOGSUPBADBLKSZ);
|
|
return JFS_BLKSIZE_ERROR;
|
|
}
|
|
|
|
- if (logsup.l2bsize != vopen[vol].l2bsize) {
|
|
+ if (global_logsup.l2bsize != vopen[vol].l2bsize) {
|
|
fsck_send_msg(lrdo_LOGSUPBADL2BLKSZ);
|
|
return JFS_L2BLKSIZE_ERROR;
|
|
}
|
|
|
|
- aggsb_numpages = lengthPXD(&sb.s_logpxd) * logsup.bsize / LOGPSIZE;
|
|
- if (logsup.size != aggsb_numpages) {
|
|
+ aggsb_numpages = lengthPXD(&sb.s_logpxd) * global_logsup.bsize / LOGPSIZE;
|
|
+ if (global_logsup.size != aggsb_numpages) {
|
|
fsck_send_msg(lrdo_LOGSUPBADLOGSZ);
|
|
return JFS_LOGSIZE_ERROR;
|
|
}
|
|
@@ -1139,14 +1140,14 @@ int bflush(int32_t k, /* The index in bufhdr that describes buf */
|
|
int64_t blkno;
|
|
|
|
/* nothing to do ? */
|
|
- if (bufhdr[k].modify == 0)
|
|
+ if (logredo_bufhdr[k].modify == 0)
|
|
return (0);
|
|
|
|
/* write it out */
|
|
- vol = bufhdr[k].vol;
|
|
+ vol = logredo_bufhdr[k].vol;
|
|
fp = vopen[vol].fp;
|
|
- blkno = addressPXD(&bufhdr[k].pxd);
|
|
- nbytes = lengthPXD(&bufhdr[k].pxd) << vopen[vol].l2bsize;
|
|
+ blkno = addressPXD(&logredo_bufhdr[k].pxd);
|
|
+ nbytes = lengthPXD(&logredo_bufhdr[k].pxd) << vopen[vol].l2bsize;
|
|
rc = ujfs_rw_diskblocks(fp,
|
|
(uint64_t) (blkno << vopen[vol].l2bsize),
|
|
(unsigned) nbytes, (char *) buf, PUT);
|
|
@@ -1155,7 +1156,7 @@ int bflush(int32_t k, /* The index in bufhdr that describes buf */
|
|
return (BFLUSH_WRITEERROR);
|
|
}
|
|
|
|
- bufhdr[k].modify = 0;
|
|
+ logredo_bufhdr[k].modify = 0;
|
|
|
|
return (0);
|
|
}
|
|
@@ -1171,7 +1172,7 @@ int bflush(int32_t k, /* The index in bufhdr that describes buf */
|
|
*/
|
|
int findLog(FILE *fp, int *in_use)
|
|
{
|
|
- struct logsuper logsup;
|
|
+ struct logsuper findLog_logsup;
|
|
struct superblock sb;
|
|
|
|
*in_use = 0;
|
|
@@ -1230,9 +1231,9 @@ int findLog(FILE *fp, int *in_use)
|
|
}
|
|
}
|
|
ujfs_rw_diskblocks(Log.fp, LOGPNTOB(LOGSUPER_B),
|
|
- sizeof (struct logsuper), &logsup, GET);
|
|
- ujfs_swap_logsuper(&logsup);
|
|
- if ((logsup.magic != LOGMAGIC) || (uuid_compare(logsup.uuid, sb.s_loguuid))) {
|
|
+ sizeof (struct logsuper), &findLog_logsup, GET);
|
|
+ ujfs_swap_logsuper(&findLog_logsup);
|
|
+ if ((findLog_logsup.magic != LOGMAGIC) || (uuid_compare(findLog_logsup.uuid, sb.s_loguuid))) {
|
|
fclose(Log.fp);
|
|
*in_use = 0;
|
|
goto by_uuid;
|
|
@@ -1253,9 +1254,9 @@ int findLog(FILE *fp, int *in_use)
|
|
/*
|
|
* is this an external log?
|
|
*/
|
|
- ujfs_rw_diskblocks(fp, LOGPNTOB(LOGSUPER_B), sizeof (struct logsuper), &logsup, GET);
|
|
- ujfs_swap_logsuper(&logsup);
|
|
- if (logsup.magic != LOGMAGIC) {
|
|
+ ujfs_rw_diskblocks(fp, LOGPNTOB(LOGSUPER_B), sizeof (struct logsuper), &findLog_logsup, GET);
|
|
+ ujfs_swap_logsuper(&findLog_logsup);
|
|
+ if (global_logsup.magic != LOGMAGIC) {
|
|
fsck_send_msg(lrdo_NOTAFSDEV);
|
|
return NOT_FSDEV_ERROR;
|
|
}
|
|
@@ -1280,7 +1281,7 @@ int fsError(int type, /* error types */
|
|
|
|
fsck_send_msg(lrdo_ERRORONVOL, vol);
|
|
|
|
- retcode = -1;
|
|
+ logredo_retcode = -1;
|
|
vopen[vol].status = FM_LOGREDO;
|
|
|
|
switch (type) {
|
|
@@ -1320,8 +1321,8 @@ int fsError(int type, /* error types */
|
|
int logError(int type, int logaddr)
|
|
{
|
|
int k;
|
|
- retcode = -1;
|
|
- logsup.state = LOGREADERR;
|
|
+ logredo_retcode = -1;
|
|
+ global_logsup.state = LOGREADERR;
|
|
switch (type) {
|
|
case LOGEND:
|
|
fsck_send_msg(lrdo_FINDLOGENDFAIL);
|
|
@@ -1376,12 +1377,12 @@ static int recoverExtendFS(FILE *fp)
|
|
* read bmap global control page
|
|
*/
|
|
/* read superblock yet again */
|
|
- sbp = (struct superblock *) &buffer[0];
|
|
+ sbp = (struct superblock *) &logredo_buffer[0];
|
|
if (rdwrSuper(fp, sbp, PB_READ))
|
|
goto errout;
|
|
|
|
/* read primary block allocation map inode */
|
|
- dip = (char *) &buffer[1];
|
|
+ dip = (char *) &logredo_buffer[1];
|
|
if (ujfs_rw_diskblocks(fp, AITBL_OFF, PSIZE, dip, GET)) {
|
|
fsck_send_msg(lrdo_EXTFSREADFSSUPERFAIL);
|
|
goto errout;
|
|
@@ -1391,7 +1392,7 @@ static int recoverExtendFS(FILE *fp)
|
|
dip1 = (struct dinode *) dip;
|
|
dip1 += BMAP_I;
|
|
|
|
- bp = (char *) &buffer[2]; /* utility buffer */
|
|
+ bp = (char *) &logredo_buffer[2]; /* utility buffer */
|
|
|
|
/* start from root in dinode */
|
|
p = (xtpage_t *) & dip1->di_btroot;
|
|
@@ -1660,15 +1661,15 @@ static int recoverExtendFS(FILE *fp)
|
|
*/
|
|
/* read log superblock */
|
|
t64 = (addressPXD(&sbp->s_logpxd) << sbp->s_l2bsize) + LOGPSIZE;
|
|
- if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &logsup, GET)) {
|
|
+ if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &global_logsup, GET)) {
|
|
fsck_send_msg(lrdo_EXTFSREADLOGSUPFAIL);
|
|
goto errout;
|
|
}
|
|
|
|
- logsup.end = findEndOfLog();
|
|
- logsup.state = LOGREDONE;
|
|
+ global_logsup.end = findEndOfLog();
|
|
+ global_logsup.state = LOGREDONE;
|
|
|
|
- if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &logsup, PUT)) {
|
|
+ if (ujfs_rw_diskblocks(fp, t64, LOGPSIZE, &global_logsup, PUT)) {
|
|
fsck_send_msg(lrdo_EXTFSWRITELOGSUPFAIL);
|
|
goto errout;
|
|
}
|
|
@@ -1791,11 +1792,11 @@ static int nfsisloaded()
|
|
if (entry = load("/usr/sbin/probe", 0, 0))
|
|
return (1);
|
|
if (errno == ENOEXEC) {
|
|
- DBG_TRACE(("%s: nfs is not loaded\n", prog))
|
|
+ DBG_TRACE(("%s: nfs is not loaded\n", logredo_prog))
|
|
return (0);
|
|
}
|
|
sav_errno = errno;
|
|
- DBG_TRACE(("%s: ", prog))
|
|
+ DBG_TRACE(("%s: ", logredo_prog))
|
|
errno = sav_errno;
|
|
perror("load");
|
|
return (0);
|
|
--
|
|
2.24.1
|
|
|