public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Scott Mayhew <smayhew@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: kdevops@lists.linux.dev
Subject: Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
Date: Fri, 6 Sep 2024 11:26:23 -0400	[thread overview]
Message-ID: <ZtsfHy7CrSB3IN8S@aion> (raw)
In-Reply-To: <ZtsU+Epv3kBqZkJv@tissot.1015granger.net>

On Fri, 06 Sep 2024, Chuck Lever wrote:

> On Thu, Sep 05, 2024 at 02:33:54PM -0400, Scott Mayhew wrote:
> > Add the ability to test with NFS loopback mounts (meaning NFS mounts
> > where the NFS server is also a client - not necessarily using the
> > loopback interface).  The primary motivation is to facilitate testing of
> > NFS with LOCALIO support:
> > 
> > https://lore.kernel.org/linux-nfs/0bd8f46b4b4c1e0bc9008014e8442fa3a7f3afe5.camel@kernel.org/T/#t
> > 
> > The changes should be pretty straightforward for the most part, the one
> > exception being the change to the "Check which fstests test types are
> > enabled" task in both the gen_hosts and gen_nodes playbooks.  Here we
> > add some logic to cause the "[nfsd]" section of nfs.config to be
> > ignored.  The reason for that is so that we don't wind up with a value
> > of "nfs-nfsd" to be added fstests_enabled_test_types list, which would
> > then cause a bogus "{{ kdevops-hosts-prefix }}-nfs-nfsd guestfs node
> > configuration to be created as well as a bogus entry to be added to the
> > ansible inventory file.
> > 
> > Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> > ---
> >  playbooks/roles/fstests/templates/nfs/nfs.config |  7 +++++++
> >  playbooks/roles/gen_hosts/tasks/main.yml         |  3 ++-
> >  playbooks/roles/gen_hosts/templates/fstests.j2   | 15 +++++++++++++++
> >  playbooks/roles/gen_nodes/tasks/main.yml         |  3 ++-
> >  workflows/fstests/nfs/Kconfig                    |  8 ++++++++
> >  workflows/fstests/nfs/Makefile                   |  3 +++
> >  6 files changed, 37 insertions(+), 2 deletions(-)
> > 
> > diff --git a/playbooks/roles/fstests/templates/nfs/nfs.config b/playbooks/roles/fstests/templates/nfs/nfs.config
> > index 40003b5..00911af 100644
> > --- a/playbooks/roles/fstests/templates/nfs/nfs.config
> > +++ b/playbooks/roles/fstests/templates/nfs/nfs.config
> > @@ -31,6 +31,13 @@ MOUNT_OPTIONS="-o rdma"
> >  TEST_FS_MOUNT_OPTS="-o xprtsec=mtls"
> >  MOUNT_OPTIONS="-o xprtsec=mtls"
> >  {% endif %}
> > +{% if fstests_nfs_section_nfsd -%}
> > +
> > +# Test NFS over loopback
> > +[nfsd]
> > +TEST_FS_MOUNT_OPTS="-o vers=4.1"
> > +MOUNT_OPTIONS="-o vers=4.1"
> > +{% endif %}
> >  {% if fstests_nfs_section_v42 -%}
> >  
> >  # Test NFSv4.2
> > diff --git a/playbooks/roles/gen_hosts/tasks/main.yml b/playbooks/roles/gen_hosts/tasks/main.yml
> > index a4dd1f5..f498a6f 100644
> > --- a/playbooks/roles/gen_hosts/tasks/main.yml
> > +++ b/playbooks/roles/gen_hosts/tasks/main.yml
> > @@ -154,7 +154,8 @@
> >      config_val: "{{ 'CONFIG_FSTESTS_' + fs + '_SECTION_' }}"
> >      fs_config_data: "{{ lookup('file', fs_config_path) }}"
> >      sections_without_default: "{{ fs_config_data | regex_replace('\\[default\\]', multiline=True) }}"
> > -    sections_lines: "{{ sections_without_default | regex_findall('^\\[(.*)', multiline=True) }}"
> > +    sections_without_default_and_nfsd: "{{ sections_without_default | regex_replace('\\[nfsd\\]', multiline=True) }}"
> > +    sections_lines: "{{ sections_without_default_and_nfsd | regex_findall('^\\[(.*)', multiline=True) }}"
> >      clean_section_lines: "{{ sections_lines | regex_replace('\\[') | regex_replace('\\]') }}"
> >      clean_section_lines_without_fsname: "{{ clean_section_lines | regex_replace(fstests_fstyp + '_') }}"
> >      config_sections_targets: "{{ clean_section_lines_without_fsname |  replace(\"'\", '') | split(', ') }}"
> > diff --git a/playbooks/roles/gen_hosts/templates/fstests.j2 b/playbooks/roles/gen_hosts/templates/fstests.j2
> > index 678c90b..17eaa82 100644
> > --- a/playbooks/roles/gen_hosts/templates/fstests.j2
> > +++ b/playbooks/roles/gen_hosts/templates/fstests.j2
> > @@ -5,12 +5,22 @@
> >  {{ kdevops_host_prefix }}-{{ s }}-dev
> >  {% endif %}
> >  {% endfor %}
> > +{% if kdevops_nfsd_enable %}
> > +{% if fstests_nfs_section_nfsd %}
> > +{{ kdevops_hosts_prefix }}-nfsd
> > +{% endif %}
> > +{% endif %}
> >  [all:vars]
> >  ansible_python_interpreter =  "{{ kdevops_python_interpreter }}"
> >  [baseline]
> >  {% for s in fstests_enabled_test_types %}
> >  {{ kdevops_host_prefix }}-{{ s }}
> >  {% endfor %}
> > +{% if kdevops_nfsd_enable %}
> > +{% if fstests_nfs_section_nfsd %}
> > +{{ kdevops_hosts_prefix }}-nfsd
> > +{% endif %}
> > +{% endif %}
> >  [baseline:vars]
> >  ansible_python_interpreter =  "{{ kdevops_python_interpreter }}"
> >  [dev]
> > @@ -18,6 +28,11 @@ ansible_python_interpreter =  "{{ kdevops_python_interpreter }}"
> >    {% for s in fstests_enabled_test_types %}
> >  {{ kdevops_host_prefix }}-{{ s }}-dev
> >    {% endfor %}
> > +{% if kdevops_nfsd_enable %}
> > +{% if fstests_nfs_section_nfsd %}
> > +{{ kdevops_hosts_prefix }}-nfsd
> > +{% endif %}
> > +{% endif %}
> >  {% endif %}
> >  [dev:vars]
> >  ansible_python_interpreter =  "{{ kdevops_python_interpreter }}"
> > diff --git a/playbooks/roles/gen_nodes/tasks/main.yml b/playbooks/roles/gen_nodes/tasks/main.yml
> > index 247cbfc..f497da7 100644
> > --- a/playbooks/roles/gen_nodes/tasks/main.yml
> > +++ b/playbooks/roles/gen_nodes/tasks/main.yml
> > @@ -213,7 +213,8 @@
> >      config_val: "{{ 'CONFIG_FSTESTS_' + fs + '_SECTION_' }}"
> >      fs_config_data: "{{ lookup('file', fs_config_path) }}"
> >      sections_without_default: "{{ fs_config_data | regex_replace('\\[default\\]', multiline=True) }}"
> > -    sections_lines: "{{ sections_without_default | regex_findall('^\\[(.*)', multiline=True) }}"
> > +    sections_without_default_and_nfsd: "{{ sections_without_default | regex_replace('\\[nfsd\\]', multiline=True) }}"
> > +    sections_lines: "{{ sections_without_default_and_nfsd | regex_findall('^\\[(.*)', multiline=True) }}"
> >      clean_section_lines: "{{ sections_lines | regex_replace('\\[') | regex_replace('\\]') }}"
> >      clean_section_lines_without_fsname: "{{ clean_section_lines | regex_replace(fstests_fstyp + '_') }}"
> >      config_sections_targets: "{{ clean_section_lines_without_fsname |  replace(\"'\", '') | split(', ') }}"
> > diff --git a/workflows/fstests/nfs/Kconfig b/workflows/fstests/nfs/Kconfig
> > index 6a728aa..eff85c2 100644
> > --- a/workflows/fstests/nfs/Kconfig
> > +++ b/workflows/fstests/nfs/Kconfig
> > @@ -68,6 +68,14 @@ config FSTESTS_NFS_SECTION_TLS
> >  	help
> >  	  Enabling this will test with the xprtsec=tls mount option.
> >  
> > +config FSTESTS_NFS_SECTION_NFSD
> > +	bool "Enable testing section: nfsd"
> > +	default n
> > +	depends on FSTESTS_USE_KDEVOPS_NFSD
> > +	help
> > +	  Enabling this will test with an NFS client running on the
> > +	  NFS server itself.
> > +
> 
> Hi Scott -
> 
> Which version of NFS is used for the test?

I hard-coded it to v4.1 up above in
playbooks/roles/fstests/templates/nfs/nfs.config

> 
> I'd like to be able to set up one target host each for several NFS
> versions, even with LOCALIO. I know that kind of "breaks the mold"
> for how the auxiliary test modes have been added over time (TLS,
> RDMA, Kerberos, etc). It would be nicer if those options could be
> tacked onto the NFS versions instead of running only for the default
> NFS version.

Agreed, but I think that's something that should be looked at for all
the test modes, not just this one.

-Scott
> 
> 
> >  config FSTESTS_NFS_SECTION_V42
> >  	bool "Enable testing section: nfs_v42"
> >  	default y
> > diff --git a/workflows/fstests/nfs/Makefile b/workflows/fstests/nfs/Makefile
> > index 765f2d3..d76d32a 100644
> > --- a/workflows/fstests/nfs/Makefile
> > +++ b/workflows/fstests/nfs/Makefile
> > @@ -18,6 +18,9 @@ endif
> >  ifeq (y,$(CONFIG_FSTESTS_NFS_SECTION_TLS))
> >  FSTESTS_ARGS += fstests_nfs_section_tls=True
> >  endif
> > +ifeq (y,$(CONFIG_FSTESTS_NFS_SECTION_NFSD))
> > +FSTESTS_ARGS += fstests_nfs_section_nfsd=True
> > +endif
> >  ifeq (y,$(CONFIG_FSTESTS_NFS_SECTION_V42))
> >  FSTESTS_ARGS += fstests_nfs_section_v42=True
> >  endif
> > -- 
> > 2.43.0
> > 
> > 
> 
> -- 
> Chuck Lever
> 


  reply	other threads:[~2024-09-06 15:26 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-05 18:33 [PATCH] fstests/nfs: add ability to test with NFS loopback mounts Scott Mayhew
2024-09-05 23:13 ` Luis Chamberlain
2024-09-06 12:14   ` Scott Mayhew
2024-09-06 14:43 ` Chuck Lever
2024-09-06 15:26   ` Scott Mayhew [this message]
2024-09-06 15:29     ` Chuck Lever

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=ZtsfHy7CrSB3IN8S@aion \
    --to=smayhew@redhat.com \
    --cc=chuck.lever@oracle.com \
    --cc=kdevops@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox