From: kernel test robot <lkp@intel.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [jlayton:nfsd-tracepoints 9/14] fs/nfsd/nfsproc.c:508:9: error: implicit declaration of function 'trace_nfsd_proc_symlink'; did you mean 'nfsd_proc_symlink'?
Date: Sat, 15 Mar 2025 17:33:55 +0800 [thread overview]
Message-ID: <202503151700.DSZSysRq-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git nfsd-tracepoints
head: 406b15fe7fc917eb20c0cfe48d441442adad9918
commit: 481c829d4945fb5f4f83828214f5e36c02f67f6c [9/14] nfsd: add tracepoints for symlink events
config: csky-randconfig-002-20250315 (https://download.01.org/0day-ci/archive/20250315/202503151700.DSZSysRq-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250315/202503151700.DSZSysRq-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/202503151700.DSZSysRq-lkp@intel.com/
All errors (new ones prefixed by >>):
fs/nfsd/nfsproc.c: In function 'nfsd_proc_create':
fs/nfsd/nfsproc.c:295:9: error: implicit declaration of function 'trace_nfsd_proc_create'; did you mean 'nfsd_proc_create'? [-Wimplicit-function-declaration]
295 | trace_nfsd_proc_create(rqstp, dirfhp, S_IFREG, argp->name, argp->len);
| ^~~~~~~~~~~~~~~~~~~~~~
| nfsd_proc_create
fs/nfsd/nfsproc.c: In function 'nfsd_proc_symlink':
>> fs/nfsd/nfsproc.c:508:9: error: implicit declaration of function 'trace_nfsd_proc_symlink'; did you mean 'nfsd_proc_symlink'? [-Wimplicit-function-declaration]
508 | trace_nfsd_proc_symlink(rqstp, &argp->ffh, argp->fname, argp->flen,
| ^~~~~~~~~~~~~~~~~~~~~~~
| nfsd_proc_symlink
>> fs/nfsd/nfsproc.c:542:1: error: invalid storage class for function 'nfsd_proc_mkdir'
542 | nfsd_proc_mkdir(struct svc_rqst *rqstp)
| ^~~~~~~~~~~~~~~
fs/nfsd/nfsproc.c: In function 'nfsd_proc_mkdir':
fs/nfsd/nfsproc.c:550:9: error: implicit declaration of function 'trace_nfsd_proc_mkdir'; did you mean 'nfsd_proc_mkdir'? [-Wimplicit-function-declaration]
550 | trace_nfsd_proc_mkdir(rqstp, &argp->fh, S_IFDIR, argp->name, argp->len);
| ^~~~~~~~~~~~~~~~~~~~~
| nfsd_proc_mkdir
fs/nfsd/nfsproc.c: In function 'nfsd_proc_symlink':
>> fs/nfsd/nfsproc.c:575:1: error: invalid storage class for function 'nfsd_proc_rmdir'
575 | nfsd_proc_rmdir(struct svc_rqst *rqstp)
| ^~~~~~~~~~~~~~~
>> fs/nfsd/nfsproc.c:589:13: error: invalid storage class for function 'nfsd_init_dirlist_pages'
589 | static void nfsd_init_dirlist_pages(struct svc_rqst *rqstp,
| ^~~~~~~~~~~~~~~~~~~~~~~
>> fs/nfsd/nfsproc.c:611:1: error: invalid storage class for function 'nfsd_proc_readdir'
611 | nfsd_proc_readdir(struct svc_rqst *rqstp)
| ^~~~~~~~~~~~~~~~~
>> fs/nfsd/nfsproc.c:639:1: error: invalid storage class for function 'nfsd_proc_statfs'
639 | nfsd_proc_statfs(struct svc_rqst *rqstp)
| ^~~~~~~~~~~~~~~~
>> fs/nfsd/nfsproc.c:824:28: error: initializer element is not constant
824 | .pc_func = nfsd_proc_mkdir,
| ^~~~~~~~~~~~~~~
fs/nfsd/nfsproc.c:824:28: note: (near initialization for 'nfsd_procedures2[14].pc_func')
fs/nfsd/nfsproc.c:836:28: error: initializer element is not constant
836 | .pc_func = nfsd_proc_rmdir,
| ^~~~~~~~~~~~~~~
fs/nfsd/nfsproc.c:836:28: note: (near initialization for 'nfsd_procedures2[15].pc_func')
fs/nfsd/nfsproc.c:847:28: error: initializer element is not constant
847 | .pc_func = nfsd_proc_readdir,
| ^~~~~~~~~~~~~~~~~
fs/nfsd/nfsproc.c:847:28: note: (near initialization for 'nfsd_procedures2[16].pc_func')
fs/nfsd/nfsproc.c:857:28: error: initializer element is not constant
857 | .pc_func = nfsd_proc_statfs,
| ^~~~~~~~~~~~~~~~
fs/nfsd/nfsproc.c:857:28: note: (near initialization for 'nfsd_procedures2[17].pc_func')
>> fs/nfsd/nfsproc.c:878:1: error: expected declaration or statement at end of input
878 | };
| ^
fs/nfsd/nfsproc.c:871:26: warning: unused variable 'nfsd_version2' [-Wunused-variable]
871 | const struct svc_version nfsd_version2 = {
| ^~~~~~~~~~~~~
fs/nfsd/nfsproc.c: At top level:
fs/nfsd/nfsproc.c:499:1: warning: 'nfsd_proc_symlink' defined but not used [-Wunused-function]
499 | nfsd_proc_symlink(struct svc_rqst *rqstp)
| ^~~~~~~~~~~~~~~~~
vim +508 fs/nfsd/nfsproc.c
497
498 static __be32
499 nfsd_proc_symlink(struct svc_rqst *rqstp)
500 {
501 struct nfsd_symlinkargs *argp = rqstp->rq_argp;
502 struct nfsd_stat *resp = rqstp->rq_resp;
503 struct nfsd_attrs attrs = {
504 .na_iattr = &argp->attrs,
505 };
506 struct svc_fh newfh;
507
> 508 trace_nfsd_proc_symlink(rqstp, &argp->ffh, argp->fname, argp->flen,
509 argp->tname, argp->tlen);
510
511 if (argp->tlen == 0) {
512 if (argp->tlen > NFS_MAXPATHLEN) {
513 resp->status = nfserr_nametoolong;
514 goto out;
515 }
516
517 argp->tname = svc_fill_symlink_pathname(rqstp, &argp->first,
518 page_address(rqstp->rq_arg.pages[0]),
519 argp->tlen);
520 if (IS_ERR(argp->tname)) {
521 resp->status = nfserrno(PTR_ERR(argp->tname));
522 goto out;
523 }
524
525 fh_init(&newfh, NFS_FHSIZE);
526 resp->status = nfsd_symlink(rqstp, &argp->ffh, argp->fname, argp->flen,
527 argp->tname, &attrs, &newfh);
528
529 kfree(argp->tname);
530 fh_put(&argp->ffh);
531 fh_put(&newfh);
532 out:
533 resp->status = nfsd_map_status(resp->status);
534 return rpc_success;
535 }
536
537 /*
538 * Make directory. This operation is not idempotent.
539 * N.B. After this call resp->fh needs an fh_put
540 */
541 static __be32
> 542 nfsd_proc_mkdir(struct svc_rqst *rqstp)
543 {
544 struct nfsd_createargs *argp = rqstp->rq_argp;
545 struct nfsd_diropres *resp = rqstp->rq_resp;
546 struct nfsd_attrs attrs = {
547 .na_iattr = &argp->attrs,
548 };
549
550 trace_nfsd_proc_mkdir(rqstp, &argp->fh, S_IFDIR, argp->name, argp->len);
551
552 if (resp->fh.fh_dentry) {
553 printk(KERN_WARNING
554 "nfsd_proc_mkdir: response already verified??\n");
555 }
556
557 argp->attrs.ia_valid &= ~ATTR_SIZE;
558 fh_init(&resp->fh, NFS_FHSIZE);
559 resp->status = nfsd_create(rqstp, &argp->fh, argp->name, argp->len,
560 &attrs, S_IFDIR, 0, &resp->fh);
561 fh_put(&argp->fh);
562 if (resp->status != nfs_ok)
563 goto out;
564
565 resp->status = fh_getattr(&resp->fh, &resp->stat);
566 out:
567 resp->status = nfsd_map_status(resp->status);
568 return rpc_success;
569 }
570
571 /*
572 * Remove a directory
573 */
574 static __be32
> 575 nfsd_proc_rmdir(struct svc_rqst *rqstp)
576 {
577 struct nfsd_diropargs *argp = rqstp->rq_argp;
578 struct nfsd_stat *resp = rqstp->rq_resp;
579
580 dprintk("nfsd: RMDIR %s %.*s\n", SVCFH_fmt(&argp->fh), argp->len, argp->name);
581
582 resp->status = nfsd_unlink(rqstp, &argp->fh, S_IFDIR,
583 argp->name, argp->len);
584 fh_put(&argp->fh);
585 resp->status = nfsd_map_status(resp->status);
586 return rpc_success;
587 }
588
> 589 static void nfsd_init_dirlist_pages(struct svc_rqst *rqstp,
590 struct nfsd_readdirres *resp,
591 u32 count)
592 {
593 struct xdr_buf *buf = &resp->dirlist;
594 struct xdr_stream *xdr = &resp->xdr;
595
596 memset(buf, 0, sizeof(*buf));
597
598 /* Reserve room for the NULL ptr & eof flag (-2 words) */
599 buf->buflen = clamp(count, (u32)(XDR_UNIT * 2), (u32)PAGE_SIZE);
600 buf->buflen -= XDR_UNIT * 2;
601 buf->pages = rqstp->rq_next_page;
602 rqstp->rq_next_page++;
603
604 xdr_init_encode_pages(xdr, buf, buf->pages, NULL);
605 }
606
607 /*
608 * Read a portion of a directory.
609 */
610 static __be32
> 611 nfsd_proc_readdir(struct svc_rqst *rqstp)
612 {
613 struct nfsd_readdirargs *argp = rqstp->rq_argp;
614 struct nfsd_readdirres *resp = rqstp->rq_resp;
615 loff_t offset;
616
617 dprintk("nfsd: READDIR %s %d bytes at %d\n",
618 SVCFH_fmt(&argp->fh),
619 argp->count, argp->cookie);
620
621 nfsd_init_dirlist_pages(rqstp, resp, argp->count);
622
623 resp->common.err = nfs_ok;
624 resp->cookie_offset = 0;
625 offset = argp->cookie;
626 resp->status = nfsd_readdir(rqstp, &argp->fh, &offset,
627 &resp->common, nfssvc_encode_entry);
628 nfssvc_encode_nfscookie(resp, offset);
629
630 fh_put(&argp->fh);
631 resp->status = nfsd_map_status(resp->status);
632 return rpc_success;
633 }
634
635 /*
636 * Get file system info
637 */
638 static __be32
> 639 nfsd_proc_statfs(struct svc_rqst *rqstp)
640 {
641 struct nfsd_fhandle *argp = rqstp->rq_argp;
642 struct nfsd_statfsres *resp = rqstp->rq_resp;
643
644 dprintk("nfsd: STATFS %s\n", SVCFH_fmt(&argp->fh));
645
646 resp->status = nfsd_statfs(rqstp, &argp->fh, &resp->stats,
647 NFSD_MAY_BYPASS_GSS_ON_ROOT);
648 fh_put(&argp->fh);
649 resp->status = nfsd_map_status(resp->status);
650 return rpc_success;
651 }
652
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2025-03-15 9:34 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202503151700.DSZSysRq-lkp@intel.com \
--to=lkp@intel.com \
--cc=jlayton@kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.