fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
Signed-off-by: Pycode <pycode42@gmail.com>
Removed the unused variable ret in
fs/nfs/flexfilelayout/flexfilelayoutdev.c
(Disclaimer this is my first patch, be sorry if I have done anything
wrong!)
---
fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
index c55ea8fa3bfa..9cd04e85d52f 100644
--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
@@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
u32 mp_count;
u32 version_count;
__be32 *p;
- int i, ret = -ENOMEM;
+ int i = -ENOMEM;
/* set up xdr stream */
scratch = folio_alloc(gfp_flags, 0);
@@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
if (list_empty(&dsaddrs)) {
dprintk("%s: no suitable DS addresses found\n",
__func__);
- ret = -ENOMEDIUM;
goto out_err_drain_dsaddrs;
}
@@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
i, ds_versions[i].version,
ds_versions[i].minor_version);
- ret = -EPROTONOSUPPORT;
goto out_err_drain_dsaddrs;
}
--
2.47.2
Hi Pycode,
kernel test robot noticed the following build errors:
[auto build test ERROR on trondmy-nfs/linux-next]
[also build test ERROR on linus/master v6.18 next-20251211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Pycode/Removed-unused-variable/20251211-050134
base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
patch link: https://lore.kernel.org/r/aTnfSQJ4QsfwTSf0%40raspberrypi
patch subject: [PATCH] Removed unused variable
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20251211/202512111949.7OSsjLSn-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251211/202512111949.7OSsjLSn-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512111949.7OSsjLSn-lkp@intel.com/
All errors (new ones prefixed by >>):
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/kernel.h:287:37: note: expanded from macro 'do_trace_printk'
287 | __trace_printk_check_format(fmt, ##args); \
| ^
include/linux/kernel.h:239:40: note: expanded from macro '__trace_printk_check_format'
239 | ____trace_printk_check_format(fmt, ##args); \
| ^
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/kernel.h:290:50: note: expanded from macro 'do_trace_printk'
290 | __trace_bprintk(_THIS_IP_, trace_printk_fmt, ##args); \
| ^
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^
include/linux/kernel.h:292:36: note: expanded from macro 'do_trace_printk'
292 | __trace_printk(_THIS_IP_, fmt, ##args); \
| ^
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
3 errors generated.
vim +182 fs/nfs/flexfilelayout/flexfilelayoutdev.c
d67ae825a59d63 Tom Haynes 2014-12-11 39
d67ae825a59d63 Tom Haynes 2014-12-11 40 /* Decode opaque device data and construct new_ds using it */
d67ae825a59d63 Tom Haynes 2014-12-11 41 struct nfs4_ff_layout_ds *
d67ae825a59d63 Tom Haynes 2014-12-11 42 nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
d67ae825a59d63 Tom Haynes 2014-12-11 43 gfp_t gfp_flags)
d67ae825a59d63 Tom Haynes 2014-12-11 44 {
d67ae825a59d63 Tom Haynes 2014-12-11 45 struct xdr_stream stream;
d67ae825a59d63 Tom Haynes 2014-12-11 46 struct xdr_buf buf;
4b7c3b4c673d40 Anna Schumaker 2025-06-30 47 struct folio *scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 48 struct list_head dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 49 struct nfs4_pnfs_ds_addr *da;
d67ae825a59d63 Tom Haynes 2014-12-11 50 struct nfs4_ff_layout_ds *new_ds = NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 51 struct nfs4_ff_ds_version *ds_versions = NULL;
6b9785dc8b13d9 Jeff Layton 2025-04-10 52 struct net *net = server->nfs_client->cl_net;
d67ae825a59d63 Tom Haynes 2014-12-11 53 u32 mp_count;
d67ae825a59d63 Tom Haynes 2014-12-11 54 u32 version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 55 __be32 *p;
07df4d912b7c38 Pycode 2025-12-10 56 int i = -ENOMEM;
d67ae825a59d63 Tom Haynes 2014-12-11 57
d67ae825a59d63 Tom Haynes 2014-12-11 58 /* set up xdr stream */
4b7c3b4c673d40 Anna Schumaker 2025-06-30 59 scratch = folio_alloc(gfp_flags, 0);
d67ae825a59d63 Tom Haynes 2014-12-11 60 if (!scratch)
d67ae825a59d63 Tom Haynes 2014-12-11 61 goto out_err;
d67ae825a59d63 Tom Haynes 2014-12-11 62
d67ae825a59d63 Tom Haynes 2014-12-11 63 new_ds = kzalloc(sizeof(struct nfs4_ff_layout_ds), gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 64 if (!new_ds)
d67ae825a59d63 Tom Haynes 2014-12-11 65 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 66
d67ae825a59d63 Tom Haynes 2014-12-11 67 nfs4_init_deviceid_node(&new_ds->id_node,
d67ae825a59d63 Tom Haynes 2014-12-11 68 server,
d67ae825a59d63 Tom Haynes 2014-12-11 69 &pdev->dev_id);
d67ae825a59d63 Tom Haynes 2014-12-11 70 INIT_LIST_HEAD(&dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 71
d67ae825a59d63 Tom Haynes 2014-12-11 72 xdr_init_decode_pages(&stream, &buf, pdev->pages, pdev->pglen);
4b7c3b4c673d40 Anna Schumaker 2025-06-30 73 xdr_set_scratch_folio(&stream, scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 74
d67ae825a59d63 Tom Haynes 2014-12-11 75 /* multipath count */
d67ae825a59d63 Tom Haynes 2014-12-11 76 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 77 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 78 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 79 mp_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 80 dprintk("%s: multipath ds count %d\n", __func__, mp_count);
d67ae825a59d63 Tom Haynes 2014-12-11 81
d67ae825a59d63 Tom Haynes 2014-12-11 82 for (i = 0; i < mp_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 83 /* multipath ds */
6b9785dc8b13d9 Jeff Layton 2025-04-10 84 da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 85 if (da)
d67ae825a59d63 Tom Haynes 2014-12-11 86 list_add_tail(&da->da_node, &dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 87 }
d67ae825a59d63 Tom Haynes 2014-12-11 88 if (list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 89 dprintk("%s: no suitable DS addresses found\n",
d67ae825a59d63 Tom Haynes 2014-12-11 90 __func__);
d67ae825a59d63 Tom Haynes 2014-12-11 91 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 92 }
d67ae825a59d63 Tom Haynes 2014-12-11 93
d67ae825a59d63 Tom Haynes 2014-12-11 94 /* version count */
d67ae825a59d63 Tom Haynes 2014-12-11 95 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 96 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 97 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 98 version_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 99 dprintk("%s: version count %d\n", __func__, version_count);
d67ae825a59d63 Tom Haynes 2014-12-11 100
6396bb221514d2 Kees Cook 2018-06-12 101 ds_versions = kcalloc(version_count,
6396bb221514d2 Kees Cook 2018-06-12 102 sizeof(struct nfs4_ff_ds_version),
d67ae825a59d63 Tom Haynes 2014-12-11 103 gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 104 if (!ds_versions)
d67ae825a59d63 Tom Haynes 2014-12-11 105 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 106
d67ae825a59d63 Tom Haynes 2014-12-11 107 for (i = 0; i < version_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 108 /* 20 = version(4) + minor_version(4) + rsize(4) + wsize(4) +
d67ae825a59d63 Tom Haynes 2014-12-11 109 * tightly_coupled(4) */
d67ae825a59d63 Tom Haynes 2014-12-11 110 p = xdr_inline_decode(&stream, 20);
d67ae825a59d63 Tom Haynes 2014-12-11 111 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 112 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 113 ds_versions[i].version = be32_to_cpup(p++);
d67ae825a59d63 Tom Haynes 2014-12-11 114 ds_versions[i].minor_version = be32_to_cpup(p++);
940261a195080c Anna Schumaker 2022-06-17 115 ds_versions[i].rsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 116 server->nfs_client->cl_proto);
940261a195080c Anna Schumaker 2022-06-17 117 ds_versions[i].wsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 118 server->nfs_client->cl_proto);
d67ae825a59d63 Tom Haynes 2014-12-11 119 ds_versions[i].tightly_coupled = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 120
d67ae825a59d63 Tom Haynes 2014-12-11 121 if (ds_versions[i].rsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 122 ds_versions[i].rsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 123 if (ds_versions[i].wsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 124 ds_versions[i].wsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 125
a7878ca140084e Tigran Mkrtchyan 2017-04-04 126 /*
a7878ca140084e Tigran Mkrtchyan 2017-04-04 127 * check for valid major/minor combination.
a7878ca140084e Tigran Mkrtchyan 2017-04-04 128 * currently we support dataserver which talk:
a7878ca140084e Tigran Mkrtchyan 2017-04-04 129 * v3, v4.0, v4.1, v4.2
a7878ca140084e Tigran Mkrtchyan 2017-04-04 130 */
a7878ca140084e Tigran Mkrtchyan 2017-04-04 131 if (!((ds_versions[i].version == 3 && ds_versions[i].minor_version == 0) ||
a7878ca140084e Tigran Mkrtchyan 2017-04-04 132 (ds_versions[i].version == 4 && ds_versions[i].minor_version < 3))) {
d67ae825a59d63 Tom Haynes 2014-12-11 133 dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
d67ae825a59d63 Tom Haynes 2014-12-11 134 i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 135 ds_versions[i].minor_version);
d67ae825a59d63 Tom Haynes 2014-12-11 136 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 137 }
d67ae825a59d63 Tom Haynes 2014-12-11 138
d67ae825a59d63 Tom Haynes 2014-12-11 139 dprintk("%s: [%d] vers %u minor_ver %u rsize %u wsize %u coupled %d\n",
d67ae825a59d63 Tom Haynes 2014-12-11 140 __func__, i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 141 ds_versions[i].minor_version,
d67ae825a59d63 Tom Haynes 2014-12-11 142 ds_versions[i].rsize,
d67ae825a59d63 Tom Haynes 2014-12-11 143 ds_versions[i].wsize,
d67ae825a59d63 Tom Haynes 2014-12-11 144 ds_versions[i].tightly_coupled);
d67ae825a59d63 Tom Haynes 2014-12-11 145 }
d67ae825a59d63 Tom Haynes 2014-12-11 146
d67ae825a59d63 Tom Haynes 2014-12-11 147 new_ds->ds_versions = ds_versions;
d67ae825a59d63 Tom Haynes 2014-12-11 148 new_ds->ds_versions_cnt = version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 149
6b9785dc8b13d9 Jeff Layton 2025-04-10 150 new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 151 if (!new_ds->ds)
d67ae825a59d63 Tom Haynes 2014-12-11 152 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 153
d67ae825a59d63 Tom Haynes 2014-12-11 154 /* If DS was already in cache, free ds addrs */
d67ae825a59d63 Tom Haynes 2014-12-11 155 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 156 da = list_first_entry(&dsaddrs,
d67ae825a59d63 Tom Haynes 2014-12-11 157 struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 158 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 159 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 160 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 161 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 162 }
d67ae825a59d63 Tom Haynes 2014-12-11 163
4b7c3b4c673d40 Anna Schumaker 2025-06-30 164 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 165 return new_ds;
d67ae825a59d63 Tom Haynes 2014-12-11 166
d67ae825a59d63 Tom Haynes 2014-12-11 167 out_err_drain_dsaddrs:
d67ae825a59d63 Tom Haynes 2014-12-11 168 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 169 da = list_first_entry(&dsaddrs, struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 170 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 171 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 172 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 173 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 174 }
d67ae825a59d63 Tom Haynes 2014-12-11 175
d67ae825a59d63 Tom Haynes 2014-12-11 176 kfree(ds_versions);
d67ae825a59d63 Tom Haynes 2014-12-11 177 out_scratch:
4b7c3b4c673d40 Anna Schumaker 2025-06-30 178 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 179 out_err:
d67ae825a59d63 Tom Haynes 2014-12-11 180 kfree(new_ds);
d67ae825a59d63 Tom Haynes 2014-12-11 181
d67ae825a59d63 Tom Haynes 2014-12-11 @182 dprintk("%s ERROR: returning %d\n", __func__, ret);
d67ae825a59d63 Tom Haynes 2014-12-11 183 return NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 184 }
d67ae825a59d63 Tom Haynes 2014-12-11 185
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Pycode,
kernel test robot noticed the following build errors:
[auto build test ERROR on trondmy-nfs/linux-next]
[also build test ERROR on linus/master v6.18 next-20251211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Pycode/Removed-unused-variable/20251211-050134
base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
patch link: https://lore.kernel.org/r/aTnfSQJ4QsfwTSf0%40raspberrypi
patch subject: [PATCH] Removed unused variable
config: sh-allyesconfig (https://download.01.org/0day-ci/archive/20251211/202512112024.98GqQFaU-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251211/202512112024.98GqQFaU-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512112024.98GqQFaU-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/uio.h:8,
from include/linux/socket.h:8,
from include/uapi/linux/in.h:25,
from include/linux/in.h:19,
from include/linux/nfs_fs.h:22,
from fs/nfs/flexfilelayout/flexfilelayoutdev.c:10:
fs/nfs/flexfilelayout/flexfilelayoutdev.c: In function 'nfs4_ff_alloc_deviceid_node':
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: error: 'ret' undeclared (first use in this function); did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
include/linux/kernel.h:239:54: note: in definition of macro '__trace_printk_check_format'
239 | ____trace_printk_check_format(fmt, ##args); \
| ^~~~
include/linux/kernel.h:276:17: note: in expansion of macro 'do_trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
include/linux/sunrpc/debug.h:34:41: note: in expansion of macro 'trace_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~~
include/linux/sunrpc/debug.h:42:17: note: in expansion of macro '__sunrpc_printk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro 'dprintk'
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: note: each undeclared identifier is reported only once for each function it appears in
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
include/linux/kernel.h:239:54: note: in definition of macro '__trace_printk_check_format'
239 | ____trace_printk_check_format(fmt, ##args); \
| ^~~~
include/linux/kernel.h:276:17: note: in expansion of macro 'do_trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
include/linux/sunrpc/debug.h:34:41: note: in expansion of macro 'trace_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~~
include/linux/sunrpc/debug.h:42:17: note: in expansion of macro '__sunrpc_printk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro 'dprintk'
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~~~~~
vim +182 fs/nfs/flexfilelayout/flexfilelayoutdev.c
d67ae825a59d63 Tom Haynes 2014-12-11 39
d67ae825a59d63 Tom Haynes 2014-12-11 40 /* Decode opaque device data and construct new_ds using it */
d67ae825a59d63 Tom Haynes 2014-12-11 41 struct nfs4_ff_layout_ds *
d67ae825a59d63 Tom Haynes 2014-12-11 42 nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
d67ae825a59d63 Tom Haynes 2014-12-11 43 gfp_t gfp_flags)
d67ae825a59d63 Tom Haynes 2014-12-11 44 {
d67ae825a59d63 Tom Haynes 2014-12-11 45 struct xdr_stream stream;
d67ae825a59d63 Tom Haynes 2014-12-11 46 struct xdr_buf buf;
4b7c3b4c673d40 Anna Schumaker 2025-06-30 47 struct folio *scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 48 struct list_head dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 49 struct nfs4_pnfs_ds_addr *da;
d67ae825a59d63 Tom Haynes 2014-12-11 50 struct nfs4_ff_layout_ds *new_ds = NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 51 struct nfs4_ff_ds_version *ds_versions = NULL;
6b9785dc8b13d9 Jeff Layton 2025-04-10 52 struct net *net = server->nfs_client->cl_net;
d67ae825a59d63 Tom Haynes 2014-12-11 53 u32 mp_count;
d67ae825a59d63 Tom Haynes 2014-12-11 54 u32 version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 55 __be32 *p;
07df4d912b7c38 Pycode 2025-12-10 56 int i = -ENOMEM;
d67ae825a59d63 Tom Haynes 2014-12-11 57
d67ae825a59d63 Tom Haynes 2014-12-11 58 /* set up xdr stream */
4b7c3b4c673d40 Anna Schumaker 2025-06-30 59 scratch = folio_alloc(gfp_flags, 0);
d67ae825a59d63 Tom Haynes 2014-12-11 60 if (!scratch)
d67ae825a59d63 Tom Haynes 2014-12-11 61 goto out_err;
d67ae825a59d63 Tom Haynes 2014-12-11 62
d67ae825a59d63 Tom Haynes 2014-12-11 63 new_ds = kzalloc(sizeof(struct nfs4_ff_layout_ds), gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 64 if (!new_ds)
d67ae825a59d63 Tom Haynes 2014-12-11 65 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 66
d67ae825a59d63 Tom Haynes 2014-12-11 67 nfs4_init_deviceid_node(&new_ds->id_node,
d67ae825a59d63 Tom Haynes 2014-12-11 68 server,
d67ae825a59d63 Tom Haynes 2014-12-11 69 &pdev->dev_id);
d67ae825a59d63 Tom Haynes 2014-12-11 70 INIT_LIST_HEAD(&dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 71
d67ae825a59d63 Tom Haynes 2014-12-11 72 xdr_init_decode_pages(&stream, &buf, pdev->pages, pdev->pglen);
4b7c3b4c673d40 Anna Schumaker 2025-06-30 73 xdr_set_scratch_folio(&stream, scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 74
d67ae825a59d63 Tom Haynes 2014-12-11 75 /* multipath count */
d67ae825a59d63 Tom Haynes 2014-12-11 76 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 77 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 78 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 79 mp_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 80 dprintk("%s: multipath ds count %d\n", __func__, mp_count);
d67ae825a59d63 Tom Haynes 2014-12-11 81
d67ae825a59d63 Tom Haynes 2014-12-11 82 for (i = 0; i < mp_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 83 /* multipath ds */
6b9785dc8b13d9 Jeff Layton 2025-04-10 84 da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 85 if (da)
d67ae825a59d63 Tom Haynes 2014-12-11 86 list_add_tail(&da->da_node, &dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 87 }
d67ae825a59d63 Tom Haynes 2014-12-11 88 if (list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 89 dprintk("%s: no suitable DS addresses found\n",
d67ae825a59d63 Tom Haynes 2014-12-11 90 __func__);
d67ae825a59d63 Tom Haynes 2014-12-11 91 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 92 }
d67ae825a59d63 Tom Haynes 2014-12-11 93
d67ae825a59d63 Tom Haynes 2014-12-11 94 /* version count */
d67ae825a59d63 Tom Haynes 2014-12-11 95 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 96 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 97 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 98 version_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 99 dprintk("%s: version count %d\n", __func__, version_count);
d67ae825a59d63 Tom Haynes 2014-12-11 100
6396bb221514d2 Kees Cook 2018-06-12 101 ds_versions = kcalloc(version_count,
6396bb221514d2 Kees Cook 2018-06-12 102 sizeof(struct nfs4_ff_ds_version),
d67ae825a59d63 Tom Haynes 2014-12-11 103 gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 104 if (!ds_versions)
d67ae825a59d63 Tom Haynes 2014-12-11 105 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 106
d67ae825a59d63 Tom Haynes 2014-12-11 107 for (i = 0; i < version_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 108 /* 20 = version(4) + minor_version(4) + rsize(4) + wsize(4) +
d67ae825a59d63 Tom Haynes 2014-12-11 109 * tightly_coupled(4) */
d67ae825a59d63 Tom Haynes 2014-12-11 110 p = xdr_inline_decode(&stream, 20);
d67ae825a59d63 Tom Haynes 2014-12-11 111 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 112 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 113 ds_versions[i].version = be32_to_cpup(p++);
d67ae825a59d63 Tom Haynes 2014-12-11 114 ds_versions[i].minor_version = be32_to_cpup(p++);
940261a195080c Anna Schumaker 2022-06-17 115 ds_versions[i].rsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 116 server->nfs_client->cl_proto);
940261a195080c Anna Schumaker 2022-06-17 117 ds_versions[i].wsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 118 server->nfs_client->cl_proto);
d67ae825a59d63 Tom Haynes 2014-12-11 119 ds_versions[i].tightly_coupled = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 120
d67ae825a59d63 Tom Haynes 2014-12-11 121 if (ds_versions[i].rsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 122 ds_versions[i].rsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 123 if (ds_versions[i].wsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 124 ds_versions[i].wsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 125
a7878ca140084e Tigran Mkrtchyan 2017-04-04 126 /*
a7878ca140084e Tigran Mkrtchyan 2017-04-04 127 * check for valid major/minor combination.
a7878ca140084e Tigran Mkrtchyan 2017-04-04 128 * currently we support dataserver which talk:
a7878ca140084e Tigran Mkrtchyan 2017-04-04 129 * v3, v4.0, v4.1, v4.2
a7878ca140084e Tigran Mkrtchyan 2017-04-04 130 */
a7878ca140084e Tigran Mkrtchyan 2017-04-04 131 if (!((ds_versions[i].version == 3 && ds_versions[i].minor_version == 0) ||
a7878ca140084e Tigran Mkrtchyan 2017-04-04 132 (ds_versions[i].version == 4 && ds_versions[i].minor_version < 3))) {
d67ae825a59d63 Tom Haynes 2014-12-11 133 dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
d67ae825a59d63 Tom Haynes 2014-12-11 134 i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 135 ds_versions[i].minor_version);
d67ae825a59d63 Tom Haynes 2014-12-11 136 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 137 }
d67ae825a59d63 Tom Haynes 2014-12-11 138
d67ae825a59d63 Tom Haynes 2014-12-11 139 dprintk("%s: [%d] vers %u minor_ver %u rsize %u wsize %u coupled %d\n",
d67ae825a59d63 Tom Haynes 2014-12-11 140 __func__, i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 141 ds_versions[i].minor_version,
d67ae825a59d63 Tom Haynes 2014-12-11 142 ds_versions[i].rsize,
d67ae825a59d63 Tom Haynes 2014-12-11 143 ds_versions[i].wsize,
d67ae825a59d63 Tom Haynes 2014-12-11 144 ds_versions[i].tightly_coupled);
d67ae825a59d63 Tom Haynes 2014-12-11 145 }
d67ae825a59d63 Tom Haynes 2014-12-11 146
d67ae825a59d63 Tom Haynes 2014-12-11 147 new_ds->ds_versions = ds_versions;
d67ae825a59d63 Tom Haynes 2014-12-11 148 new_ds->ds_versions_cnt = version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 149
6b9785dc8b13d9 Jeff Layton 2025-04-10 150 new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 151 if (!new_ds->ds)
d67ae825a59d63 Tom Haynes 2014-12-11 152 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 153
d67ae825a59d63 Tom Haynes 2014-12-11 154 /* If DS was already in cache, free ds addrs */
d67ae825a59d63 Tom Haynes 2014-12-11 155 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 156 da = list_first_entry(&dsaddrs,
d67ae825a59d63 Tom Haynes 2014-12-11 157 struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 158 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 159 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 160 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 161 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 162 }
d67ae825a59d63 Tom Haynes 2014-12-11 163
4b7c3b4c673d40 Anna Schumaker 2025-06-30 164 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 165 return new_ds;
d67ae825a59d63 Tom Haynes 2014-12-11 166
d67ae825a59d63 Tom Haynes 2014-12-11 167 out_err_drain_dsaddrs:
d67ae825a59d63 Tom Haynes 2014-12-11 168 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 169 da = list_first_entry(&dsaddrs, struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 170 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 171 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 172 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 173 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 174 }
d67ae825a59d63 Tom Haynes 2014-12-11 175
d67ae825a59d63 Tom Haynes 2014-12-11 176 kfree(ds_versions);
d67ae825a59d63 Tom Haynes 2014-12-11 177 out_scratch:
4b7c3b4c673d40 Anna Schumaker 2025-06-30 178 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 179 out_err:
d67ae825a59d63 Tom Haynes 2014-12-11 180 kfree(new_ds);
d67ae825a59d63 Tom Haynes 2014-12-11 181
d67ae825a59d63 Tom Haynes 2014-12-11 @182 dprintk("%s ERROR: returning %d\n", __func__, ret);
d67ae825a59d63 Tom Haynes 2014-12-11 183 return NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 184 }
d67ae825a59d63 Tom Haynes 2014-12-11 185
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Pycode,
kernel test robot noticed the following build warnings:
[auto build test WARNING on trondmy-nfs/linux-next]
[also build test WARNING on linus/master v6.18 next-20251211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Pycode/Removed-unused-variable/20251211-050134
base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
patch link: https://lore.kernel.org/r/aTnfSQJ4QsfwTSf0%40raspberrypi
patch subject: [PATCH] Removed unused variable
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20251211/202512111818.jPAPY3vr-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 6ec8c4351cfc1d0627d1633b02ea787bd29c77d8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251211/202512111818.jPAPY3vr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512111818.jPAPY3vr-lkp@intel.com/
All warnings (new ones prefixed by >>):
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/kernel.h:287:37: note: expanded from macro 'do_trace_printk'
287 | __trace_printk_check_format(fmt, ##args); \
| ^~~~
include/linux/kernel.h:239:40: note: expanded from macro '__trace_printk_check_format'
239 | ____trace_printk_check_format(fmt, ##args); \
| ^~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: warning: format specifies type 'int' but the argument has type 'struct net *' [-Wformat]
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ~~ ^~~
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
include/linux/kernel.h:287:37: note: expanded from macro 'do_trace_printk'
287 | __trace_printk_check_format(fmt, ##args); \
| ~~~ ^~~~
include/linux/kernel.h:239:40: note: expanded from macro '__trace_printk_check_format'
239 | ____trace_printk_check_format(fmt, ##args); \
| ~~~ ^~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/kernel.h:290:50: note: expanded from macro 'do_trace_printk'
290 | __trace_bprintk(_THIS_IP_, trace_printk_fmt, ##args); \
| ^~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: error: use of undeclared identifier 'ret'; did you mean 'net'?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
| net
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ^~~~~~~~~~~
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/kernel.h:292:36: note: expanded from macro 'do_trace_printk'
292 | __trace_printk(_THIS_IP_, fmt, ##args); \
| ^~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:52:14: note: 'net' declared here
52 | struct net *net = server->nfs_client->cl_net;
| ^
>> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:48: warning: format specifies type 'int' but the argument has type 'struct net *' [-Wformat]
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ~~ ^~~
include/linux/sunrpc/debug.h:25:28: note: expanded from macro 'dprintk'
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/sunrpc/debug.h:42:26: note: expanded from macro 'dfprintk'
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
include/linux/sunrpc/debug.h:34:57: note: expanded from macro '__sunrpc_printk'
34 | # define __sunrpc_printk(fmt, ...) trace_printk(fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/kernel.h:276:26: note: expanded from macro 'trace_printk'
276 | do_trace_printk(fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
include/linux/kernel.h:292:36: note: expanded from macro 'do_trace_printk'
292 | __trace_printk(_THIS_IP_, fmt, ##args); \
| ~~~ ^~~~
2 warnings and 3 errors generated.
vim +182 fs/nfs/flexfilelayout/flexfilelayoutdev.c
d67ae825a59d63 Tom Haynes 2014-12-11 39
d67ae825a59d63 Tom Haynes 2014-12-11 40 /* Decode opaque device data and construct new_ds using it */
d67ae825a59d63 Tom Haynes 2014-12-11 41 struct nfs4_ff_layout_ds *
d67ae825a59d63 Tom Haynes 2014-12-11 42 nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
d67ae825a59d63 Tom Haynes 2014-12-11 43 gfp_t gfp_flags)
d67ae825a59d63 Tom Haynes 2014-12-11 44 {
d67ae825a59d63 Tom Haynes 2014-12-11 45 struct xdr_stream stream;
d67ae825a59d63 Tom Haynes 2014-12-11 46 struct xdr_buf buf;
4b7c3b4c673d40 Anna Schumaker 2025-06-30 47 struct folio *scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 48 struct list_head dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 49 struct nfs4_pnfs_ds_addr *da;
d67ae825a59d63 Tom Haynes 2014-12-11 50 struct nfs4_ff_layout_ds *new_ds = NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 51 struct nfs4_ff_ds_version *ds_versions = NULL;
6b9785dc8b13d9 Jeff Layton 2025-04-10 52 struct net *net = server->nfs_client->cl_net;
d67ae825a59d63 Tom Haynes 2014-12-11 53 u32 mp_count;
d67ae825a59d63 Tom Haynes 2014-12-11 54 u32 version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 55 __be32 *p;
07df4d912b7c38 Pycode 2025-12-10 56 int i = -ENOMEM;
d67ae825a59d63 Tom Haynes 2014-12-11 57
d67ae825a59d63 Tom Haynes 2014-12-11 58 /* set up xdr stream */
4b7c3b4c673d40 Anna Schumaker 2025-06-30 59 scratch = folio_alloc(gfp_flags, 0);
d67ae825a59d63 Tom Haynes 2014-12-11 60 if (!scratch)
d67ae825a59d63 Tom Haynes 2014-12-11 61 goto out_err;
d67ae825a59d63 Tom Haynes 2014-12-11 62
d67ae825a59d63 Tom Haynes 2014-12-11 63 new_ds = kzalloc(sizeof(struct nfs4_ff_layout_ds), gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 64 if (!new_ds)
d67ae825a59d63 Tom Haynes 2014-12-11 65 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 66
d67ae825a59d63 Tom Haynes 2014-12-11 67 nfs4_init_deviceid_node(&new_ds->id_node,
d67ae825a59d63 Tom Haynes 2014-12-11 68 server,
d67ae825a59d63 Tom Haynes 2014-12-11 69 &pdev->dev_id);
d67ae825a59d63 Tom Haynes 2014-12-11 70 INIT_LIST_HEAD(&dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 71
d67ae825a59d63 Tom Haynes 2014-12-11 72 xdr_init_decode_pages(&stream, &buf, pdev->pages, pdev->pglen);
4b7c3b4c673d40 Anna Schumaker 2025-06-30 73 xdr_set_scratch_folio(&stream, scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 74
d67ae825a59d63 Tom Haynes 2014-12-11 75 /* multipath count */
d67ae825a59d63 Tom Haynes 2014-12-11 76 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 77 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 78 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 79 mp_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 80 dprintk("%s: multipath ds count %d\n", __func__, mp_count);
d67ae825a59d63 Tom Haynes 2014-12-11 81
d67ae825a59d63 Tom Haynes 2014-12-11 82 for (i = 0; i < mp_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 83 /* multipath ds */
6b9785dc8b13d9 Jeff Layton 2025-04-10 84 da = nfs4_decode_mp_ds_addr(net, &stream, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 85 if (da)
d67ae825a59d63 Tom Haynes 2014-12-11 86 list_add_tail(&da->da_node, &dsaddrs);
d67ae825a59d63 Tom Haynes 2014-12-11 87 }
d67ae825a59d63 Tom Haynes 2014-12-11 88 if (list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 89 dprintk("%s: no suitable DS addresses found\n",
d67ae825a59d63 Tom Haynes 2014-12-11 90 __func__);
d67ae825a59d63 Tom Haynes 2014-12-11 91 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 92 }
d67ae825a59d63 Tom Haynes 2014-12-11 93
d67ae825a59d63 Tom Haynes 2014-12-11 94 /* version count */
d67ae825a59d63 Tom Haynes 2014-12-11 95 p = xdr_inline_decode(&stream, 4);
d67ae825a59d63 Tom Haynes 2014-12-11 96 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 97 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 98 version_count = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 99 dprintk("%s: version count %d\n", __func__, version_count);
d67ae825a59d63 Tom Haynes 2014-12-11 100
6396bb221514d2 Kees Cook 2018-06-12 101 ds_versions = kcalloc(version_count,
6396bb221514d2 Kees Cook 2018-06-12 102 sizeof(struct nfs4_ff_ds_version),
d67ae825a59d63 Tom Haynes 2014-12-11 103 gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 104 if (!ds_versions)
d67ae825a59d63 Tom Haynes 2014-12-11 105 goto out_scratch;
d67ae825a59d63 Tom Haynes 2014-12-11 106
d67ae825a59d63 Tom Haynes 2014-12-11 107 for (i = 0; i < version_count; i++) {
d67ae825a59d63 Tom Haynes 2014-12-11 108 /* 20 = version(4) + minor_version(4) + rsize(4) + wsize(4) +
d67ae825a59d63 Tom Haynes 2014-12-11 109 * tightly_coupled(4) */
d67ae825a59d63 Tom Haynes 2014-12-11 110 p = xdr_inline_decode(&stream, 20);
d67ae825a59d63 Tom Haynes 2014-12-11 111 if (unlikely(!p))
d67ae825a59d63 Tom Haynes 2014-12-11 112 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 113 ds_versions[i].version = be32_to_cpup(p++);
d67ae825a59d63 Tom Haynes 2014-12-11 114 ds_versions[i].minor_version = be32_to_cpup(p++);
940261a195080c Anna Schumaker 2022-06-17 115 ds_versions[i].rsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 116 server->nfs_client->cl_proto);
940261a195080c Anna Schumaker 2022-06-17 117 ds_versions[i].wsize = nfs_io_size(be32_to_cpup(p++),
940261a195080c Anna Schumaker 2022-06-17 118 server->nfs_client->cl_proto);
d67ae825a59d63 Tom Haynes 2014-12-11 119 ds_versions[i].tightly_coupled = be32_to_cpup(p);
d67ae825a59d63 Tom Haynes 2014-12-11 120
d67ae825a59d63 Tom Haynes 2014-12-11 121 if (ds_versions[i].rsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 122 ds_versions[i].rsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 123 if (ds_versions[i].wsize > NFS_MAX_FILE_IO_SIZE)
d67ae825a59d63 Tom Haynes 2014-12-11 124 ds_versions[i].wsize = NFS_MAX_FILE_IO_SIZE;
d67ae825a59d63 Tom Haynes 2014-12-11 125
a7878ca140084e Tigran Mkrtchyan 2017-04-04 126 /*
a7878ca140084e Tigran Mkrtchyan 2017-04-04 127 * check for valid major/minor combination.
a7878ca140084e Tigran Mkrtchyan 2017-04-04 128 * currently we support dataserver which talk:
a7878ca140084e Tigran Mkrtchyan 2017-04-04 129 * v3, v4.0, v4.1, v4.2
a7878ca140084e Tigran Mkrtchyan 2017-04-04 130 */
a7878ca140084e Tigran Mkrtchyan 2017-04-04 131 if (!((ds_versions[i].version == 3 && ds_versions[i].minor_version == 0) ||
a7878ca140084e Tigran Mkrtchyan 2017-04-04 132 (ds_versions[i].version == 4 && ds_versions[i].minor_version < 3))) {
d67ae825a59d63 Tom Haynes 2014-12-11 133 dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
d67ae825a59d63 Tom Haynes 2014-12-11 134 i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 135 ds_versions[i].minor_version);
d67ae825a59d63 Tom Haynes 2014-12-11 136 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 137 }
d67ae825a59d63 Tom Haynes 2014-12-11 138
d67ae825a59d63 Tom Haynes 2014-12-11 139 dprintk("%s: [%d] vers %u minor_ver %u rsize %u wsize %u coupled %d\n",
d67ae825a59d63 Tom Haynes 2014-12-11 140 __func__, i, ds_versions[i].version,
d67ae825a59d63 Tom Haynes 2014-12-11 141 ds_versions[i].minor_version,
d67ae825a59d63 Tom Haynes 2014-12-11 142 ds_versions[i].rsize,
d67ae825a59d63 Tom Haynes 2014-12-11 143 ds_versions[i].wsize,
d67ae825a59d63 Tom Haynes 2014-12-11 144 ds_versions[i].tightly_coupled);
d67ae825a59d63 Tom Haynes 2014-12-11 145 }
d67ae825a59d63 Tom Haynes 2014-12-11 146
d67ae825a59d63 Tom Haynes 2014-12-11 147 new_ds->ds_versions = ds_versions;
d67ae825a59d63 Tom Haynes 2014-12-11 148 new_ds->ds_versions_cnt = version_count;
d67ae825a59d63 Tom Haynes 2014-12-11 149
6b9785dc8b13d9 Jeff Layton 2025-04-10 150 new_ds->ds = nfs4_pnfs_ds_add(net, &dsaddrs, gfp_flags);
d67ae825a59d63 Tom Haynes 2014-12-11 151 if (!new_ds->ds)
d67ae825a59d63 Tom Haynes 2014-12-11 152 goto out_err_drain_dsaddrs;
d67ae825a59d63 Tom Haynes 2014-12-11 153
d67ae825a59d63 Tom Haynes 2014-12-11 154 /* If DS was already in cache, free ds addrs */
d67ae825a59d63 Tom Haynes 2014-12-11 155 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 156 da = list_first_entry(&dsaddrs,
d67ae825a59d63 Tom Haynes 2014-12-11 157 struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 158 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 159 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 160 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 161 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 162 }
d67ae825a59d63 Tom Haynes 2014-12-11 163
4b7c3b4c673d40 Anna Schumaker 2025-06-30 164 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 165 return new_ds;
d67ae825a59d63 Tom Haynes 2014-12-11 166
d67ae825a59d63 Tom Haynes 2014-12-11 167 out_err_drain_dsaddrs:
d67ae825a59d63 Tom Haynes 2014-12-11 168 while (!list_empty(&dsaddrs)) {
d67ae825a59d63 Tom Haynes 2014-12-11 169 da = list_first_entry(&dsaddrs, struct nfs4_pnfs_ds_addr,
d67ae825a59d63 Tom Haynes 2014-12-11 170 da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 171 list_del_init(&da->da_node);
d67ae825a59d63 Tom Haynes 2014-12-11 172 kfree(da->da_remotestr);
d67ae825a59d63 Tom Haynes 2014-12-11 173 kfree(da);
d67ae825a59d63 Tom Haynes 2014-12-11 174 }
d67ae825a59d63 Tom Haynes 2014-12-11 175
d67ae825a59d63 Tom Haynes 2014-12-11 176 kfree(ds_versions);
d67ae825a59d63 Tom Haynes 2014-12-11 177 out_scratch:
4b7c3b4c673d40 Anna Schumaker 2025-06-30 178 folio_put(scratch);
d67ae825a59d63 Tom Haynes 2014-12-11 179 out_err:
d67ae825a59d63 Tom Haynes 2014-12-11 180 kfree(new_ds);
d67ae825a59d63 Tom Haynes 2014-12-11 181
d67ae825a59d63 Tom Haynes 2014-12-11 @182 dprintk("%s ERROR: returning %d\n", __func__, ret);
d67ae825a59d63 Tom Haynes 2014-12-11 183 return NULL;
d67ae825a59d63 Tom Haynes 2014-12-11 184 }
d67ae825a59d63 Tom Haynes 2014-12-11 185
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
A more descriptive title is preferred: "Remove unused variable from
nfs4_ff_alloc_deviceid_node()"
On Wed, 2025-12-10 at 21:59 +0100, Pycode wrote:
> Signed-off-by: Pycode <pycode42@gmail.com>
>
> Removed the unused variable ret in
> fs/nfs/flexfilelayout/flexfilelayoutdev.c
>
> (Disclaimer this is my first patch, be sorry if I have done anything
> wrong!)
> ---
> fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> index c55ea8fa3bfa..9cd04e85d52f 100644
> --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> @@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> u32 mp_count;
> u32 version_count;
> __be32 *p;
> - int i, ret = -ENOMEM;
> + int i = -ENOMEM;
>
No need to initialize this.
> /* set up xdr stream */
> scratch = folio_alloc(gfp_flags, 0);
> @@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> if (list_empty(&dsaddrs)) {
> dprintk("%s: no suitable DS addresses found\n",
> __func__);
> - ret = -ENOMEDIUM;
> goto out_err_drain_dsaddrs;
> }
>
> @@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
> i, ds_versions[i].version,
> ds_versions[i].minor_version);
> - ret = -EPROTONOSUPPORT;
> goto out_err_drain_dsaddrs;
> }
>
What about the dprintk() at the bottom of this function? Does this
actually build?
--
Jeff Layton <jlayton@kernel.org>
On Thu, Dec 11, 2025 at 08:10:25AM +0900, Jeff Layton wrote:
> A more descriptive title is preferred: "Remove unused variable from
> nfs4_ff_alloc_deviceid_node()"
>
Thanks for the advices!
> On Wed, 2025-12-10 at 21:59 +0100, Pycode wrote:
> > Signed-off-by: Pycode <pycode42@gmail.com>
> >
> > Removed the unused variable ret in
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c
> >
> > (Disclaimer this is my first patch, be sorry if I have done anything
> > wrong!)
> > ---
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
> > 1 file changed, 1 insertion(+), 3 deletions(-)
> >
> > diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > index c55ea8fa3bfa..9cd04e85d52f 100644
> > --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > @@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > u32 mp_count;
> > u32 version_count;
> > __be32 *p;
> > - int i, ret = -ENOMEM;
> > + int i = -ENOMEM;
> >
>
> No need to initialize this.
>
> > /* set up xdr stream */
> > scratch = folio_alloc(gfp_flags, 0);
> > @@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > if (list_empty(&dsaddrs)) {
> > dprintk("%s: no suitable DS addresses found\n",
> > __func__);
> > - ret = -ENOMEDIUM;
> > goto out_err_drain_dsaddrs;
> > }
> >
> > @@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
> > i, ds_versions[i].version,
> > ds_versions[i].minor_version);
> > - ret = -EPROTONOSUPPORT;
> > goto out_err_drain_dsaddrs;
> > }
> >
>
> What about the dprintk() at the bottom of this function? Does this
> actually build?
There is no dprintk() at the bottom that used the variable.
>
> --
> Jeff Layton <jlayton@kernel.org>
On Thu, Dec 11, 2025 at 06:57:54AM +0100, Pycode wrote:
> On Thu, Dec 11, 2025 at 08:10:25AM +0900, Jeff Layton wrote:
> > A more descriptive title is preferred: "Remove unused variable from
> > nfs4_ff_alloc_deviceid_node()"
> >
>
> Thanks for the advices!
>
> > On Wed, 2025-12-10 at 21:59 +0100, Pycode wrote:
> > > Signed-off-by: Pycode <pycode42@gmail.com>
> > >
> > > Removed the unused variable ret in
> > > fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > >
> > > (Disclaimer this is my first patch, be sorry if I have done anything
> > > wrong!)
> > > ---
> > > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
> > > 1 file changed, 1 insertion(+), 3 deletions(-)
> > >
> > > diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > index c55ea8fa3bfa..9cd04e85d52f 100644
> > > --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > @@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > u32 mp_count;
> > > u32 version_count;
> > > __be32 *p;
> > > - int i, ret = -ENOMEM;
> > > + int i = -ENOMEM;
> > >
> >
> > No need to initialize this.
> >
> > > /* set up xdr stream */
> > > scratch = folio_alloc(gfp_flags, 0);
> > > @@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > if (list_empty(&dsaddrs)) {
> > > dprintk("%s: no suitable DS addresses found\n",
> > > __func__);
> > > - ret = -ENOMEDIUM;
> > > goto out_err_drain_dsaddrs;
> > > }
> > >
> > > @@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
> > > i, ds_versions[i].version,
> > > ds_versions[i].minor_version);
> > > - ret = -EPROTONOSUPPORT;
> > > goto out_err_drain_dsaddrs;
> > > }
> > >
> >
> > What about the dprintk() at the bottom of this function? Does this
> > actually build?
>
> There is no dprintk() at the bottom that used the variable.
At the bottom of this function, there is a dprintk call that refers to ret:
dprintk("%s ERROR: returning %d\n", __func__, ret);
return NULL;
This causes the build to fail:
In file included from ./include/asm-generic/bug.h:31,
from ./arch/x86/include/asm/bug.h:193,
from ./arch/x86/include/asm/alternative.h:9,
from ./arch/x86/include/asm/barrier.h:5,
from ./include/asm-generic/bitops/generic-non-atomic.h:7,
from ./include/linux/bitops.h:28,
from ./include/linux/kernel.h:23,
from ./include/linux/uio.h:8,
from ./include/linux/socket.h:8,
from ./include/uapi/linux/in.h:25,
from ./include/linux/in.h:19,
from ./include/linux/nfs_fs.h:22,
from fs/nfs/flexfilelayout/flexfilelayoutdev.c:10:
fs/nfs/flexfilelayout/flexfilelayoutdev.c: In function ‘nfs4_ff_alloc_deviceid_node’:
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: error: ‘ret’ undeclared (first use in this function); did you mean ‘net’?
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
484 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
| ^~~~~~
./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: note: each undeclared identifier is reported only once for each function it appears in
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~
./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
484 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
| ^~~~~~
./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~~~~~
./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
| ^~~~~~~~
fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
| ^~~~~~~
make[5]: *** [scripts/Makefile.build:287: fs/nfs/flexfilelayout/flexfilelayoutdev.o] Error 1
make[4]: *** [scripts/Makefile.build:556: fs/nfs/flexfilelayout] Error 2
make[3]: *** [scripts/Makefile.build:556: fs/nfs] Error 2
make[2]: *** [scripts/Makefile.build:556: fs] Error 2
On Thu, Dec 11, 2025 at 02:54:03PM +0800, Kuan-Wei Chiu wrote:
> On Thu, Dec 11, 2025 at 06:57:54AM +0100, Pycode wrote:
> > On Thu, Dec 11, 2025 at 08:10:25AM +0900, Jeff Layton wrote:
> > > A more descriptive title is preferred: "Remove unused variable from
> > > nfs4_ff_alloc_deviceid_node()"
> > >
> >
> > Thanks for the advices!
> >
> > > On Wed, 2025-12-10 at 21:59 +0100, Pycode wrote:
> > > > Signed-off-by: Pycode <pycode42@gmail.com>
> > > >
> > > > Removed the unused variable ret in
> > > > fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > >
> > > > (Disclaimer this is my first patch, be sorry if I have done anything
> > > > wrong!)
> > > > ---
> > > > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
> > > > 1 file changed, 1 insertion(+), 3 deletions(-)
> > > >
> > > > diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > index c55ea8fa3bfa..9cd04e85d52f 100644
> > > > --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > @@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > u32 mp_count;
> > > > u32 version_count;
> > > > __be32 *p;
> > > > - int i, ret = -ENOMEM;
> > > > + int i = -ENOMEM;
> > > >
> > >
> > > No need to initialize this.
> > >
> > > > /* set up xdr stream */
> > > > scratch = folio_alloc(gfp_flags, 0);
> > > > @@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > if (list_empty(&dsaddrs)) {
> > > > dprintk("%s: no suitable DS addresses found\n",
> > > > __func__);
> > > > - ret = -ENOMEDIUM;
> > > > goto out_err_drain_dsaddrs;
> > > > }
> > > >
> > > > @@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
> > > > i, ds_versions[i].version,
> > > > ds_versions[i].minor_version);
> > > > - ret = -EPROTONOSUPPORT;
> > > > goto out_err_drain_dsaddrs;
> > > > }
> > > >
> > >
> > > What about the dprintk() at the bottom of this function? Does this
> > > actually build?
> >
> > There is no dprintk() at the bottom that used the variable.
>
> At the bottom of this function, there is a dprintk call that refers to ret:
>
> dprintk("%s ERROR: returning %d\n", __func__, ret);
> return NULL;
>
> This causes the build to fail:
>
> In file included from ./include/asm-generic/bug.h:31,
> from ./arch/x86/include/asm/bug.h:193,
> from ./arch/x86/include/asm/alternative.h:9,
> from ./arch/x86/include/asm/barrier.h:5,
> from ./include/asm-generic/bitops/generic-non-atomic.h:7,
> from ./include/linux/bitops.h:28,
> from ./include/linux/kernel.h:23,
> from ./include/linux/uio.h:8,
> from ./include/linux/socket.h:8,
> from ./include/uapi/linux/in.h:25,
> from ./include/linux/in.h:19,
> from ./include/linux/nfs_fs.h:22,
> from fs/nfs/flexfilelayout/flexfilelayoutdev.c:10:
> fs/nfs/flexfilelayout/flexfilelayoutdev.c: In function ‘nfs4_ff_alloc_deviceid_node’:
> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: error: ‘ret’ undeclared (first use in this function); did you mean ‘net’?
> 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> | ^~~
> ./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
> 484 | _p_func(_fmt, ##__VA_ARGS__); \
> | ^~~~~~~~~~~
> ./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
> 36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
> | ^~~~~~
> ./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
> 42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
> | ^~~~~~~~~~~~~~~
> ./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
> 25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
> | ^~~~~~~~
> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
> 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> | ^~~~~~~
> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: note: each undeclared identifier is reported only once for each function it appears in
> 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> | ^~~
> ./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
> 484 | _p_func(_fmt, ##__VA_ARGS__); \
> | ^~~~~~~~~~~
> ./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
> 36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
> | ^~~~~~
> ./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
> 42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
> | ^~~~~~~~~~~~~~~
> ./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
> 25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
> | ^~~~~~~~
> fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
> 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> | ^~~~~~~
> make[5]: *** [scripts/Makefile.build:287: fs/nfs/flexfilelayout/flexfilelayoutdev.o] Error 1
> make[4]: *** [scripts/Makefile.build:556: fs/nfs/flexfilelayout] Error 2
> make[3]: *** [scripts/Makefile.build:556: fs/nfs] Error 2
> make[2]: *** [scripts/Makefile.build:556: fs] Error 2
Sorry, I didn't see that there were more returns because of the jumps. For some reason, it compiled without any problems for me.
On Thu, Dec 11, 2025 at 08:31:57AM +0100, Pycode wrote:
> On Thu, Dec 11, 2025 at 02:54:03PM +0800, Kuan-Wei Chiu wrote:
> > On Thu, Dec 11, 2025 at 06:57:54AM +0100, Pycode wrote:
> > > On Thu, Dec 11, 2025 at 08:10:25AM +0900, Jeff Layton wrote:
> > > > A more descriptive title is preferred: "Remove unused variable from
> > > > nfs4_ff_alloc_deviceid_node()"
> > > >
> > >
> > > Thanks for the advices!
> > >
> > > > On Wed, 2025-12-10 at 21:59 +0100, Pycode wrote:
> > > > > Signed-off-by: Pycode <pycode42@gmail.com>
> > > > >
> > > > > Removed the unused variable ret in
> > > > > fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > >
> > > > > (Disclaimer this is my first patch, be sorry if I have done anything
> > > > > wrong!)
> > > > > ---
> > > > > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
> > > > > 1 file changed, 1 insertion(+), 3 deletions(-)
> > > > >
> > > > > diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > > index c55ea8fa3bfa..9cd04e85d52f 100644
> > > > > --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > > +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
> > > > > @@ -53,7 +53,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > > u32 mp_count;
> > > > > u32 version_count;
> > > > > __be32 *p;
> > > > > - int i, ret = -ENOMEM;
> > > > > + int i = -ENOMEM;
> > > > >
> > > >
> > > > No need to initialize this.
> > > >
> > > > > /* set up xdr stream */
> > > > > scratch = folio_alloc(gfp_flags, 0);
> > > > > @@ -88,7 +88,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > > if (list_empty(&dsaddrs)) {
> > > > > dprintk("%s: no suitable DS addresses found\n",
> > > > > __func__);
> > > > > - ret = -ENOMEDIUM;
> > > > > goto out_err_drain_dsaddrs;
> > > > > }
> > > > >
> > > > > @@ -134,7 +133,6 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
> > > > > dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
> > > > > i, ds_versions[i].version,
> > > > > ds_versions[i].minor_version);
> > > > > - ret = -EPROTONOSUPPORT;
> > > > > goto out_err_drain_dsaddrs;
> > > > > }
> > > > >
> > > >
> > > > What about the dprintk() at the bottom of this function? Does this
> > > > actually build?
> > >
> > > There is no dprintk() at the bottom that used the variable.
> >
> > At the bottom of this function, there is a dprintk call that refers to ret:
> >
> > dprintk("%s ERROR: returning %d\n", __func__, ret);
> > return NULL;
> >
> > This causes the build to fail:
> >
> > In file included from ./include/asm-generic/bug.h:31,
> > from ./arch/x86/include/asm/bug.h:193,
> > from ./arch/x86/include/asm/alternative.h:9,
> > from ./arch/x86/include/asm/barrier.h:5,
> > from ./include/asm-generic/bitops/generic-non-atomic.h:7,
> > from ./include/linux/bitops.h:28,
> > from ./include/linux/kernel.h:23,
> > from ./include/linux/uio.h:8,
> > from ./include/linux/socket.h:8,
> > from ./include/uapi/linux/in.h:25,
> > from ./include/linux/in.h:19,
> > from ./include/linux/nfs_fs.h:22,
> > from fs/nfs/flexfilelayout/flexfilelayoutdev.c:10:
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c: In function ‘nfs4_ff_alloc_deviceid_node’:
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: error: ‘ret’ undeclared (first use in this function); did you mean ‘net’?
> > 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> > | ^~~
> > ./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
> > 484 | _p_func(_fmt, ##__VA_ARGS__); \
> > | ^~~~~~~~~~~
> > ./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
> > 36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
> > | ^~~~~~
> > ./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
> > 42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
> > | ^~~~~~~~~~~~~~~
> > ./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
> > 25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
> > | ^~~~~~~~
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
> > 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> > | ^~~~~~~
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:55: note: each undeclared identifier is reported only once for each function it appears in
> > 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> > | ^~~
> > ./include/linux/printk.h:484:33: note: in definition of macro ‘printk_index_wrap’
> > 484 | _p_func(_fmt, ##__VA_ARGS__); \
> > | ^~~~~~~~~~~
> > ./include/linux/sunrpc/debug.h:36:41: note: in expansion of macro ‘printk’
> > 36 | # define __sunrpc_printk(fmt, ...) printk(KERN_DEFAULT fmt, ##__VA_ARGS__)
> > | ^~~~~~
> > ./include/linux/sunrpc/debug.h:42:17: note: in expansion of macro ‘__sunrpc_printk’
> > 42 | __sunrpc_printk(fmt, ##__VA_ARGS__); \
> > | ^~~~~~~~~~~~~~~
> > ./include/linux/sunrpc/debug.h:25:9: note: in expansion of macro ‘dfprintk’
> > 25 | dfprintk(FACILITY, fmt, ##__VA_ARGS__)
> > | ^~~~~~~~
> > fs/nfs/flexfilelayout/flexfilelayoutdev.c:182:9: note: in expansion of macro ‘dprintk’
> > 182 | dprintk("%s ERROR: returning %d\n", __func__, ret);
> > | ^~~~~~~
> > make[5]: *** [scripts/Makefile.build:287: fs/nfs/flexfilelayout/flexfilelayoutdev.o] Error 1
> > make[4]: *** [scripts/Makefile.build:556: fs/nfs/flexfilelayout] Error 2
> > make[3]: *** [scripts/Makefile.build:556: fs/nfs] Error 2
> > make[2]: *** [scripts/Makefile.build:556: fs] Error 2
>
> Sorry, I didn't see that there were more returns because of the jumps. For some reason, it compiled without any problems for me.
>
>
My guess is that this build failure only shows up with the debug config
on, which you don't seem to have enabled.
Regards,
Kuan-Wei
© 2016 - 2025 Red Hat, Inc.