[PATCH] Removed unused variable

Pycode posted 1 patch 5 days, 12 hours ago
fs/nfs/flexfilelayout/flexfilelayoutdev.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
[PATCH] Removed unused variable
Posted by Pycode 5 days, 12 hours ago
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
Re: [PATCH] Removed unused variable
Posted by kernel test robot 4 days, 20 hours ago
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
Re: [PATCH] Removed unused variable
Posted by kernel test robot 4 days, 20 hours ago
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
Re: [PATCH] Removed unused variable
Posted by kernel test robot 4 days, 22 hours ago
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
Re: [PATCH] Removed unused variable
Posted by Jeff Layton 5 days, 9 hours ago
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>
Re: [PATCH] Removed unused variable
Posted by Pycode 5 days, 3 hours ago
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>
Re: [PATCH] Removed unused variable
Posted by Kuan-Wei Chiu 5 days, 2 hours ago
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
Re: [PATCH] Removed unused variable
Posted by Pycode 5 days, 1 hour ago
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.


Re: [PATCH] Removed unused variable
Posted by Kuan-Wei Chiu 4 days, 23 hours ago
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