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
>
next prev parent 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