Message ID | 20200419173620.GA98107@nevermore.foobar.lan (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nfsd4: add filename to states output | expand |
On Sun, 2020-04-19 at 23:06 +0530, Achilles Gaikwad wrote: > Add filename to states output for ease of debugging. > > Signed-off-by: Achilles Gaikwad <agaikwad@redhat.com> > Signed-off-by: Kenneth Dsouza <kdsouza@redhat.com> > --- > fs/nfsd/nfs4state.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > index e32ecedece0f..0f4ed5e3fbe4 100644 > --- a/fs/nfsd/nfs4state.c > +++ b/fs/nfsd/nfs4state.c > @@ -2414,6 +2414,11 @@ static void nfs4_show_superblock(struct > seq_file *s, struct nfsd_file *f) > inode->i_ino); > } > > +static void nfs4_show_fname(struct seq_file *s, struct nfsd_file *f) > +{ > + seq_printf(s, "filename: \"%s\"", f->nf_file->f_path.dentry- > >d_name.name); Please consider using the '%pD' format specifier, as described in Documentation/core-api/printk-formats.rst, which is designed to avoid races with rename in cases like the above. Note that most debugging printks use something like %pD2 in order to display the name of the parent directory as well, in which case you want seq_printf (s, "filename: \"%pD2\"", f->nf_file); > +} > + > static void nfs4_show_owner(struct seq_file *s, struct > nfs4_stateowner *oo) > { > seq_printf(s, "owner: "); > @@ -2449,6 +2454,8 @@ static int nfs4_show_open(struct seq_file *s, > struct nfs4_stid *st) > > nfs4_show_superblock(s, file); > seq_printf(s, ", "); > + nfs4_show_fname(s, file); > + seq_printf(s, ", "); > nfs4_show_owner(s, oo); > seq_printf(s, " }\n"); > nfsd_file_put(file); > @@ -2480,6 +2487,8 @@ static int nfs4_show_lock(struct seq_file *s, > struct nfs4_stid *st) > nfs4_show_superblock(s, file); > /* XXX: open stateid? */ > seq_printf(s, ", "); > + nfs4_show_fname(s, file); > + seq_printf(s, ", "); > nfs4_show_owner(s, oo); > seq_printf(s, " }\n"); > nfsd_file_put(file); > @@ -2506,6 +2515,7 @@ static int nfs4_show_deleg(struct seq_file *s, > struct nfs4_stid *st) > /* XXX: lease time, whether it's being recalled. */ > > nfs4_show_superblock(s, file); > + nfs4_show_fname(s, file); > seq_printf(s, " }\n"); > > return 0; > @@ -2524,6 +2534,7 @@ static int nfs4_show_layout(struct seq_file *s, > struct nfs4_stid *st) > /* XXX: What else would be useful? */ > > nfs4_show_superblock(s, file); > + nfs4_show_fname(s, file); > seq_printf(s, " }\n"); > > return 0;
Thanks for the help Trond! I'll fix the code and send another patch. Best, - Achilles --- On Mon, Apr 20, 2020 at 12:42 AM Trond Myklebust <trondmy@hammerspace.com> wrote: > > On Sun, 2020-04-19 at 23:06 +0530, Achilles Gaikwad wrote: > > Add filename to states output for ease of debugging. > > > > Signed-off-by: Achilles Gaikwad <agaikwad@redhat.com> > > Signed-off-by: Kenneth Dsouza <kdsouza@redhat.com> > > --- > > fs/nfsd/nfs4state.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c > > index e32ecedece0f..0f4ed5e3fbe4 100644 > > --- a/fs/nfsd/nfs4state.c > > +++ b/fs/nfsd/nfs4state.c > > @@ -2414,6 +2414,11 @@ static void nfs4_show_superblock(struct > > seq_file *s, struct nfsd_file *f) > > inode->i_ino); > > } > > > > +static void nfs4_show_fname(struct seq_file *s, struct nfsd_file *f) > > +{ > > + seq_printf(s, "filename: \"%s\"", f->nf_file->f_path.dentry- > > >d_name.name); > > Please consider using the '%pD' format specifier, as described in > Documentation/core-api/printk-formats.rst, which is designed to avoid > races with rename in cases like the above. > > Note that most debugging printks use something like %pD2 in order to > display the name of the parent directory as well, in which case you > want > > seq_printf (s, "filename: \"%pD2\"", f->nf_file); > > > +} > > + > > static void nfs4_show_owner(struct seq_file *s, struct > > nfs4_stateowner *oo) > > { > > seq_printf(s, "owner: "); > > @@ -2449,6 +2454,8 @@ static int nfs4_show_open(struct seq_file *s, > > struct nfs4_stid *st) > > > > nfs4_show_superblock(s, file); > > seq_printf(s, ", "); > > + nfs4_show_fname(s, file); > > + seq_printf(s, ", "); > > nfs4_show_owner(s, oo); > > seq_printf(s, " }\n"); > > nfsd_file_put(file); > > @@ -2480,6 +2487,8 @@ static int nfs4_show_lock(struct seq_file *s, > > struct nfs4_stid *st) > > nfs4_show_superblock(s, file); > > /* XXX: open stateid? */ > > seq_printf(s, ", "); > > + nfs4_show_fname(s, file); > > + seq_printf(s, ", "); > > nfs4_show_owner(s, oo); > > seq_printf(s, " }\n"); > > nfsd_file_put(file); > > @@ -2506,6 +2515,7 @@ static int nfs4_show_deleg(struct seq_file *s, > > struct nfs4_stid *st) > > /* XXX: lease time, whether it's being recalled. */ > > > > nfs4_show_superblock(s, file); > > + nfs4_show_fname(s, file); > > seq_printf(s, " }\n"); > > > > return 0; > > @@ -2524,6 +2534,7 @@ static int nfs4_show_layout(struct seq_file *s, > > struct nfs4_stid *st) > > /* XXX: What else would be useful? */ > > > > nfs4_show_superblock(s, file); > > + nfs4_show_fname(s, file); > > seq_printf(s, " }\n"); > > > > return 0; > > -- > Trond Myklebust > Linux NFS client maintainer, Hammerspace > trond.myklebust@hammerspace.com > >
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index e32ecedece0f..0f4ed5e3fbe4 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -2414,6 +2414,11 @@ static void nfs4_show_superblock(struct seq_file *s, struct nfsd_file *f) inode->i_ino); } +static void nfs4_show_fname(struct seq_file *s, struct nfsd_file *f) +{ + seq_printf(s, "filename: \"%s\"", f->nf_file->f_path.dentry->d_name.name); +} + static void nfs4_show_owner(struct seq_file *s, struct nfs4_stateowner *oo) { seq_printf(s, "owner: "); @@ -2449,6 +2454,8 @@ static int nfs4_show_open(struct seq_file *s, struct nfs4_stid *st) nfs4_show_superblock(s, file); seq_printf(s, ", "); + nfs4_show_fname(s, file); + seq_printf(s, ", "); nfs4_show_owner(s, oo); seq_printf(s, " }\n"); nfsd_file_put(file); @@ -2480,6 +2487,8 @@ static int nfs4_show_lock(struct seq_file *s, struct nfs4_stid *st) nfs4_show_superblock(s, file); /* XXX: open stateid? */ seq_printf(s, ", "); + nfs4_show_fname(s, file); + seq_printf(s, ", "); nfs4_show_owner(s, oo); seq_printf(s, " }\n"); nfsd_file_put(file); @@ -2506,6 +2515,7 @@ static int nfs4_show_deleg(struct seq_file *s, struct nfs4_stid *st) /* XXX: lease time, whether it's being recalled. */ nfs4_show_superblock(s, file); + nfs4_show_fname(s, file); seq_printf(s, " }\n"); return 0; @@ -2524,6 +2534,7 @@ static int nfs4_show_layout(struct seq_file *s, struct nfs4_stid *st) /* XXX: What else would be useful? */ nfs4_show_superblock(s, file); + nfs4_show_fname(s, file); seq_printf(s, " }\n"); return 0;