Message ID | 20210415022802.31692-8-olga.kornievskaia@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | create sysfs files for changing IP address | expand |
Hi Olga, Thank you for the patch! Yet something to improve: [auto build test ERROR on nfs/linux-next] [also build test ERROR on nfsd/nfsd-next v5.12-rc7 next-20210414] [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] url: https://github.com/0day-ci/linux/commits/Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210415-102946 base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next config: ia64-gensparse_defconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/eb4c4b6126d3914b950cb13c118d7b28ce132dc3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210415-102946 git checkout eb4c4b6126d3914b950cb13c118d7b28ce132dc3 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=ia64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): net/sunrpc/xprtrdma/transport.c: In function 'xprt_setup_rdma': >> net/sunrpc/xprtrdma/transport.c:353:22: error: 'xprt_rdma' undeclared (first use in this function); did you mean 'xprt_rdma_bc'? 353 | xprt->xprt_class = &xprt_rdma; | ^~~~~~~~~ | xprt_rdma_bc net/sunrpc/xprtrdma/transport.c:353:22: note: each undeclared identifier is reported only once for each function it appears in vim +353 net/sunrpc/xprtrdma/transport.c 308 309 /** 310 * xprt_setup_rdma - Set up transport to use RDMA 311 * 312 * @args: rpc transport arguments 313 */ 314 static struct rpc_xprt * 315 xprt_setup_rdma(struct xprt_create *args) 316 { 317 struct rpc_xprt *xprt; 318 struct rpcrdma_xprt *new_xprt; 319 struct sockaddr *sap; 320 int rc; 321 322 if (args->addrlen > sizeof(xprt->addr)) 323 return ERR_PTR(-EBADF); 324 325 if (!try_module_get(THIS_MODULE)) 326 return ERR_PTR(-EIO); 327 328 xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt), 0, 329 xprt_rdma_slot_table_entries); 330 if (!xprt) { 331 module_put(THIS_MODULE); 332 return ERR_PTR(-ENOMEM); 333 } 334 335 xprt->timeout = &xprt_rdma_default_timeout; 336 xprt->connect_timeout = xprt->timeout->to_initval; 337 xprt->max_reconnect_timeout = xprt->timeout->to_maxval; 338 xprt->bind_timeout = RPCRDMA_BIND_TO; 339 xprt->reestablish_timeout = RPCRDMA_INIT_REEST_TO; 340 xprt->idle_timeout = RPCRDMA_IDLE_DISC_TO; 341 342 xprt->resvport = 0; /* privileged port not needed */ 343 xprt->ops = &xprt_rdma_procs; 344 345 /* 346 * Set up RDMA-specific connect data. 347 */ 348 sap = args->dstaddr; 349 350 /* Ensure xprt->addr holds valid server TCP (not RDMA) 351 * address, for any side protocols which peek at it */ 352 xprt->prot = IPPROTO_TCP; > 353 xprt->xprt_class = &xprt_rdma; 354 xprt->addrlen = args->addrlen; 355 memcpy(&xprt->addr, sap, xprt->addrlen); 356 357 if (rpc_get_port(sap)) 358 xprt_set_bound(xprt); 359 xprt_rdma_format_addresses(xprt, sap); 360 361 new_xprt = rpcx_to_rdmax(xprt); 362 rc = rpcrdma_buffer_create(new_xprt); 363 if (rc) { 364 xprt_rdma_free_addresses(xprt); 365 xprt_free(xprt); 366 module_put(THIS_MODULE); 367 return ERR_PTR(rc); 368 } 369 370 INIT_DELAYED_WORK(&new_xprt->rx_connect_worker, 371 xprt_rdma_connect_worker); 372 373 xprt->max_payload = RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT; 374 375 return xprt; 376 } 377 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Olga, Thank you for the patch! Yet something to improve: [auto build test ERROR on nfs/linux-next] [also build test ERROR on nfsd/nfsd-next v5.12-rc7 next-20210415] [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] url: https://github.com/0day-ci/linux/commits/Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210415-102946 base: git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next config: x86_64-randconfig-a011-20210415 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 6a18cc23efad410db48a3ccfc233d215de7d4cb9) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/eb4c4b6126d3914b950cb13c118d7b28ce132dc3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Olga-Kornievskaia/create-sysfs-files-for-changing-IP-address/20210415-102946 git checkout eb4c4b6126d3914b950cb13c118d7b28ce132dc3 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): >> net/sunrpc/xprtrdma/transport.c:353:22: error: use of undeclared identifier 'xprt_rdma'; did you mean 'xprt_rdma_bc'? xprt->xprt_class = &xprt_rdma; ^~~~~~~~~ xprt_rdma_bc net/sunrpc/xprtrdma/xprt_rdma.h:595:26: note: 'xprt_rdma_bc' declared here extern struct xprt_class xprt_rdma_bc; ^ 1 error generated. vim +353 net/sunrpc/xprtrdma/transport.c 308 309 /** 310 * xprt_setup_rdma - Set up transport to use RDMA 311 * 312 * @args: rpc transport arguments 313 */ 314 static struct rpc_xprt * 315 xprt_setup_rdma(struct xprt_create *args) 316 { 317 struct rpc_xprt *xprt; 318 struct rpcrdma_xprt *new_xprt; 319 struct sockaddr *sap; 320 int rc; 321 322 if (args->addrlen > sizeof(xprt->addr)) 323 return ERR_PTR(-EBADF); 324 325 if (!try_module_get(THIS_MODULE)) 326 return ERR_PTR(-EIO); 327 328 xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt), 0, 329 xprt_rdma_slot_table_entries); 330 if (!xprt) { 331 module_put(THIS_MODULE); 332 return ERR_PTR(-ENOMEM); 333 } 334 335 xprt->timeout = &xprt_rdma_default_timeout; 336 xprt->connect_timeout = xprt->timeout->to_initval; 337 xprt->max_reconnect_timeout = xprt->timeout->to_maxval; 338 xprt->bind_timeout = RPCRDMA_BIND_TO; 339 xprt->reestablish_timeout = RPCRDMA_INIT_REEST_TO; 340 xprt->idle_timeout = RPCRDMA_IDLE_DISC_TO; 341 342 xprt->resvport = 0; /* privileged port not needed */ 343 xprt->ops = &xprt_rdma_procs; 344 345 /* 346 * Set up RDMA-specific connect data. 347 */ 348 sap = args->dstaddr; 349 350 /* Ensure xprt->addr holds valid server TCP (not RDMA) 351 * address, for any side protocols which peek at it */ 352 xprt->prot = IPPROTO_TCP; > 353 xprt->xprt_class = &xprt_rdma; 354 xprt->addrlen = args->addrlen; 355 memcpy(&xprt->addr, sap, xprt->addrlen); 356 357 if (rpc_get_port(sap)) 358 xprt_set_bound(xprt); 359 xprt_rdma_format_addresses(xprt, sap); 360 361 new_xprt = rpcx_to_rdmax(xprt); 362 rc = rpcrdma_buffer_create(new_xprt); 363 if (rc) { 364 xprt_rdma_free_addresses(xprt); 365 xprt_free(xprt); 366 module_put(THIS_MODULE); 367 return ERR_PTR(rc); 368 } 369 370 INIT_DELAYED_WORK(&new_xprt->rx_connect_worker, 371 xprt_rdma_connect_worker); 372 373 xprt->max_payload = RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT; 374 375 return xprt; 376 } 377 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 82294d06075c..a2edcc42e6c4 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h @@ -53,6 +53,7 @@ enum rpc_display_format_t { struct rpc_task; struct rpc_xprt; +struct xprt_class; struct seq_file; struct svc_serv; struct net; @@ -289,6 +290,7 @@ struct rpc_xprt { atomic_t inject_disconnect; #endif struct rcu_head rcu; + const struct xprt_class *xprt_class; }; #if defined(CONFIG_SUNRPC_BACKCHANNEL) diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 78d29d1bcc20..2c2e51e54fbb 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c @@ -87,6 +87,7 @@ static unsigned int dummy; static struct ctl_table_header *sunrpc_table_header; +static struct xprt_class xprt_rdma; static struct ctl_table xr_tunables_table[] = { { .procname = "rdma_slot_table_entries", @@ -347,6 +348,7 @@ xprt_setup_rdma(struct xprt_create *args) /* Ensure xprt->addr holds valid server TCP (not RDMA) * address, for any side protocols which peek at it */ xprt->prot = IPPROTO_TCP; + xprt->xprt_class = &xprt_rdma; xprt->addrlen = args->addrlen; memcpy(&xprt->addr, sap, xprt->addrlen); diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 2bcb80c19339..5ff37badd335 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -91,6 +91,11 @@ static unsigned int xprt_max_resvport_limit = RPC_MAX_RESVPORT; static struct ctl_table_header *sunrpc_table_header; +static struct xprt_class xs_local_transport; +static struct xprt_class xs_udp_transport; +static struct xprt_class xs_tcp_transport; +static struct xprt_class xs_bc_tcp_transport; + /* * FIXME: changing the UDP slot table size should also resize the UDP * socket buffers for existing UDP transports @@ -2777,6 +2782,7 @@ static struct rpc_xprt *xs_setup_local(struct xprt_create *args) transport = container_of(xprt, struct sock_xprt, xprt); xprt->prot = 0; + xprt->xprt_class = &xs_local_transport; xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; xprt->bind_timeout = XS_BIND_TO; @@ -2846,6 +2852,7 @@ static struct rpc_xprt *xs_setup_udp(struct xprt_create *args) transport = container_of(xprt, struct sock_xprt, xprt); xprt->prot = IPPROTO_UDP; + xprt->xprt_class = &xs_udp_transport; /* XXX: header size can vary due to auth type, IPv6, etc. */ xprt->max_payload = (1U << 16) - (MAX_HEADER << 3); @@ -2926,6 +2933,7 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) transport = container_of(xprt, struct sock_xprt, xprt); xprt->prot = IPPROTO_TCP; + xprt->xprt_class = &xs_tcp_transport; xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; xprt->bind_timeout = XS_BIND_TO; @@ -2999,6 +3007,7 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args) transport = container_of(xprt, struct sock_xprt, xprt); xprt->prot = IPPROTO_TCP; + xprt->xprt_class = &xs_bc_tcp_transport; xprt->max_payload = RPC_MAX_FRAGMENT_SIZE; xprt->timeout = &xs_tcp_default_timeout;