[PATCH v2] jfs: jfs_xtree: replace XT_GETPAGE macro with xt_getpage() function

From: Suchit Karunakaran
Date: Sun Apr 13 2025 - 17:02:48 EST


Replace legacy XT_GETPAGE macro with an inline function and update all
instances of XT_GETPAGE in jfs_xtree.c file to use the new function.

Signed-off-by: Suchit Karunakaran <suchitkarunakaran@xxxxxxxxx>
---
fs/jfs/jfs_xtree.c | 55 +++++++++++++++++++++++-----------------------
1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/fs/jfs/jfs_xtree.c b/fs/jfs/jfs_xtree.c
index 4fea5e90e29b..5b8b7819cf29 100644
--- a/fs/jfs/jfs_xtree.c
+++ b/fs/jfs/jfs_xtree.c
@@ -104,32 +104,33 @@ static int xtSplitRoot(tid_t tid, struct inode *ip,
* bn - block number (s64) of the xtree page to be retrieved;
* mp - pointer to a metapage pointer where the page buffer is returned;
* size - size parameter to pass to BT_GETPAGE;
- * p - pointer to an xtpage_t pointer mapping the page's data.
+ * rc - pointer to an integer to store the return code;
*
* returns:
- * 0 on success, or -EIO if the page is corrupt or an error occurs.
+ * A pointer to the xtree page (xtpage_t) on success. If an error occurs,
+ * sets rc to -EIO, releases the page buffer, sets mp to NULL and returns NULL.
*/

-static inline int xt_getpage(struct inode *ip, s64 bn, struct metapage **mp,
- unsigned int size, xtpage_t **p)
+static inline xtpage_t* xt_getpage(struct inode *ip, s64 bn, struct metapage **mp,
+ unsigned int size, int *rc)
{
- int rc;
+ xtpage_t *p;

- BT_GETPAGE(ip, bn, *mp, xtpage_t, size, *p, rc, i_xtroot);
+ BT_GETPAGE(ip, bn, *mp, xtpage_t, size, p, *rc, i_xtroot);

- if (!rc) {
- if ((le16_to_cpu((*p)->header.nextindex) < XTENTRYSTART) ||
- (le16_to_cpu((*p)->header.nextindex) >
- le16_to_cpu((*p)->header.maxentry)) ||
- (le16_to_cpu((*p)->header.maxentry) >
+ if (!(*rc)) {
+ if ((le16_to_cpu(p->header.nextindex) < XTENTRYSTART) ||
+ (le16_to_cpu(p->header.nextindex) >
+ le16_to_cpu(p->header.maxentry)) ||
+ (le16_to_cpu(p->header.maxentry) >
((bn == 0) ? XTROOTMAXSLOT : PSIZE >> L2XTSLOTSIZE))) {
jfs_error(ip->i_sb, "xt_getpage: xtree page corrupt\n");
BT_PUTPAGE(*mp);
*mp = NULL;
- rc = -EIO;
+ *rc = -EIO;
}
}
- return rc;
+ return p;
}

/*
@@ -270,7 +271,7 @@ static int xtSearch(struct inode *ip, s64 xoff, s64 *nextp,
*/
for (bn = 0;;) {
/* get/pin the page to search */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -825,7 +826,7 @@ xtSplitUp(tid_t tid,
* insert router entry in parent for new right child page <rp>
*/
/* get/pin the parent page <sp> */
- rc = xt_getpage(ip, parent->bn, &smp, PSIZE, &sp);
+ sp = xt_getpage(ip, parent->bn, &smp, PSIZE, &rc);
if (rc) {
XT_PUTPAGE(rcmp);
return rc;
@@ -1080,7 +1081,7 @@ xtSplitPage(tid_t tid, struct inode *ip,
* update previous pointer of old next/right page of <sp>
*/
if (nextbn != 0) {
- rc = xt_getpage(ip, nextbn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, nextbn, &mp, PSIZE, &rc);
if (rc) {
XT_PUTPAGE(rmp);
goto clean_up;
@@ -1435,7 +1436,7 @@ int xtExtend(tid_t tid, /* transaction id */
return rc;

/* get back old page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;
/*
@@ -1451,7 +1452,7 @@ int xtExtend(tid_t tid, /* transaction id */
XT_PUTPAGE(mp);

/* get new child page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -1729,7 +1730,7 @@ int xtUpdate(tid_t tid, struct inode *ip, xad_t * nxad)
return rc;

/* get back old page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;
/*
@@ -1745,7 +1746,7 @@ int xtUpdate(tid_t tid, struct inode *ip, xad_t * nxad)
XT_PUTPAGE(mp);

/* get new child page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -1806,7 +1807,7 @@ int xtUpdate(tid_t tid, struct inode *ip, xad_t * nxad)
XT_PUTPAGE(mp);

/* get new right page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -1882,7 +1883,7 @@ printf("xtUpdate.updateLeft.split p:0x%p\n", p);
return rc;

/* get back old page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -1899,7 +1900,7 @@ printf("xtUpdate.updateLeft.split p:0x%p\n", p);
XT_PUTPAGE(mp);

/* get new child page */
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -2286,7 +2287,7 @@ s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag)
* first access of each page:
*/
getPage:
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -2524,7 +2525,7 @@ s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag)

/* get back the parent page */
bn = parent->bn;
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -2809,7 +2810,7 @@ s64 xtTruncate_pmap(tid_t tid, struct inode *ip, s64 committed_size)
* first access of each page:
*/
getPage:
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

@@ -2854,7 +2855,7 @@ s64 xtTruncate_pmap(tid_t tid, struct inode *ip, s64 committed_size)

/* get back the parent page */
bn = parent->bn;
- rc = xt_getpage(ip, bn, &mp, PSIZE, &p);
+ p = xt_getpage(ip, bn, &mp, PSIZE, &rc);
if (rc)
return rc;

--
2.49.0