Message ID | 1685122722-18287-3-git-send-email-dai.ngo@oracle.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | NFSD: recall write delegation on GETATTR conflict | expand |
Hi Dai, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.4-rc3 next-20230525] [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/Dai-Ngo/NFSD-handle-GETATTR-conflict-with-write-delegation/20230527-013936 base: linus/master patch link: https://lore.kernel.org/r/1685122722-18287-3-git-send-email-dai.ngo%40oracle.com patch subject: [PATCH 2/2] NFSD: add counter for write delegation recall due to conflict with GETATTR config: parisc-defconfig (https://download.01.org/0day-ci/archive/20230527/202305271936.3kL7Ufxk-lkp@intel.com/config) compiler: hppa-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): mkdir -p ~/bin wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/a90d0ca71c9459b76f9faa8c704c029ac8066d00 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Dai-Ngo/NFSD-handle-GETATTR-conflict-with-write-delegation/20230527-013936 git checkout a90d0ca71c9459b76f9faa8c704c029ac8066d00 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross W=1 O=build_dir ARCH=parisc olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 ~/bin/make.cross W=1 O=build_dir ARCH=parisc SHELL=/bin/bash fs/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202305271936.3kL7Ufxk-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from fs/nfsd/nfsd.h:28, from fs/nfsd/state.h:42, from fs/nfsd/xdr4.h:40, from fs/nfsd/trace.h:17, from fs/nfsd/trace.c:4: fs/nfsd/stats.h: In function 'nfsd_stats_wdeleg_getattr_inc': >> fs/nfsd/stats.h:99:47: error: 'NFSD_STATS_WDELEG_GETATTR' undeclared (first use in this function) 99 | percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); | ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/nfsd/stats.h:99:47: note: each undeclared identifier is reported only once for each function it appears in -- In file included from fs/nfsd/nfsd.h:28, from fs/nfsd/export.c:21: fs/nfsd/stats.h: In function 'nfsd_stats_wdeleg_getattr_inc': >> fs/nfsd/stats.h:99:47: error: 'NFSD_STATS_WDELEG_GETATTR' undeclared (first use in this function) 99 | percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); | ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/nfsd/stats.h:99:47: note: each undeclared identifier is reported only once for each function it appears in fs/nfsd/export.c: In function 'exp_rootfh': fs/nfsd/export.c:1005:34: warning: variable 'inode' set but not used [-Wunused-but-set-variable] 1005 | struct inode *inode; | ^~~~~ -- In file included from fs/nfsd/nfsd.h:28, from fs/nfsd/state.h:42, from fs/nfsd/xdr4.h:40, from fs/nfsd/trace.h:17, from fs/nfsd/trace.c:4: fs/nfsd/stats.h: In function 'nfsd_stats_wdeleg_getattr_inc': >> fs/nfsd/stats.h:99:47: error: 'NFSD_STATS_WDELEG_GETATTR' undeclared (first use in this function) 99 | percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); | ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/nfsd/stats.h:99:47: note: each undeclared identifier is reported only once for each function it appears in In file included from fs/nfsd/trace.h:1589: include/trace/define_trace.h: At top level: include/trace/define_trace.h:95:42: fatal error: ./trace.h: No such file or directory 95 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | ^ compilation terminated. vim +/NFSD_STATS_WDELEG_GETATTR +99 fs/nfsd/stats.h 96 97 static inline void nfsd_stats_wdeleg_getattr_inc(void) 98 { > 99 percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]);
Hi Dai, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.4-rc3 next-20230525] [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/Dai-Ngo/NFSD-handle-GETATTR-conflict-with-write-delegation/20230527-013936 base: linus/master patch link: https://lore.kernel.org/r/1685122722-18287-3-git-send-email-dai.ngo%40oracle.com patch subject: [PATCH 2/2] NFSD: add counter for write delegation recall due to conflict with GETATTR config: i386-randconfig-i074-20230526 (https://download.01.org/0day-ci/archive/20230528/202305280121.3RAeAt4l-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): mkdir -p ~/bin wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/a90d0ca71c9459b76f9faa8c704c029ac8066d00 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Dai-Ngo/NFSD-handle-GETATTR-conflict-with-write-delegation/20230527-013936 git checkout a90d0ca71c9459b76f9faa8c704c029ac8066d00 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=i386 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202305280121.3RAeAt4l-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from fs/nfsd/trace.c:4: In file included from fs/nfsd/trace.h:17: In file included from fs/nfsd/xdr4.h:40: In file included from fs/nfsd/state.h:42: In file included from fs/nfsd/nfsd.h:28: >> fs/nfsd/stats.h:99:40: error: use of undeclared identifier 'NFSD_STATS_WDELEG_GETATTR' percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); ^ 1 error generated. -- In file included from fs/nfsd/export.c:21: In file included from fs/nfsd/nfsd.h:28: >> fs/nfsd/stats.h:99:40: error: use of undeclared identifier 'NFSD_STATS_WDELEG_GETATTR' percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); ^ fs/nfsd/export.c:1005:17: warning: variable 'inode' set but not used [-Wunused-but-set-variable] struct inode *inode; ^ 1 warning and 1 error generated. vim +/NFSD_STATS_WDELEG_GETATTR +99 fs/nfsd/stats.h 96 97 static inline void nfsd_stats_wdeleg_getattr_inc(void) 98 { > 99 percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]);
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 9f551dbf50d6..89ec251f7e83 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -8386,6 +8386,7 @@ nfsd4_deleg_getattr_conflict(struct svc_rqst *rqstp, struct inode *inode) return 0; } spin_unlock(&ctx->flc_lock); + nfsd_stats_wdeleg_getattr_inc(); status = nfserrno(nfsd_open_break_lease(inode, NFSD_MAY_READ)); if (status != nfserr_jukebox) return status; diff --git a/fs/nfsd/stats.c b/fs/nfsd/stats.c index 777e24e5da33..63797635e1c3 100644 --- a/fs/nfsd/stats.c +++ b/fs/nfsd/stats.c @@ -65,6 +65,8 @@ static int nfsd_show(struct seq_file *seq, void *v) seq_printf(seq, " %lld", percpu_counter_sum_positive(&nfsdstats.counter[NFSD_STATS_NFS4_OP(i)])); } + seq_printf(seq, "\nwdeleg_getattr %lld", + percpu_counter_sum_positive(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR])); seq_putc(seq, '\n'); #endif diff --git a/fs/nfsd/stats.h b/fs/nfsd/stats.h index 9b43dc3d9991..e31bd3abdf07 100644 --- a/fs/nfsd/stats.h +++ b/fs/nfsd/stats.h @@ -22,6 +22,7 @@ enum { NFSD_STATS_FIRST_NFS4_OP, /* count of individual nfsv4 operations */ NFSD_STATS_LAST_NFS4_OP = NFSD_STATS_FIRST_NFS4_OP + LAST_NFS4_OP, #define NFSD_STATS_NFS4_OP(op) (NFSD_STATS_FIRST_NFS4_OP + (op)) + NFSD_STATS_WDELEG_GETATTR, /* count of getattr conflict with wdeleg */ #endif NFSD_STATS_COUNTERS_NUM }; @@ -93,4 +94,8 @@ static inline void nfsd_stats_drc_mem_usage_sub(struct nfsd_net *nn, s64 amount) percpu_counter_sub(&nn->counter[NFSD_NET_DRC_MEM_USAGE], amount); } +static inline void nfsd_stats_wdeleg_getattr_inc(void) +{ + percpu_counter_inc(&nfsdstats.counter[NFSD_STATS_WDELEG_GETATTR]); +} #endif /* _NFSD_STATS_H */
Add counter to keep track of how many times write delegations are recalled due to conflict with GETATTR. Signed-off-by: Dai Ngo <dai.ngo@oracle.com> --- fs/nfsd/nfs4state.c | 1 + fs/nfsd/stats.c | 2 ++ fs/nfsd/stats.h | 5 +++++ 3 files changed, 8 insertions(+)