All of lore.kernel.org
 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 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.