public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
@ 2024-09-05 18:33 Scott Mayhew
  2024-09-05 23:13 ` Luis Chamberlain
  2024-09-06 14:43 ` Chuck Lever
  0 siblings, 2 replies; 6+ messages in thread
From: Scott Mayhew @ 2024-09-05 18:33 UTC (permalink / raw)
  To: kdevops

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.
+
 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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
  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
  1 sibling, 1 reply; 6+ messages in thread
From: Luis Chamberlain @ 2024-09-05 23:13 UTC (permalink / raw)
  To: Scott Mayhew; +Cc: kdevops

On Thu, Sep 05, 2024 at 02:33:54PM -0400, Scott Mayhew wrote:
> 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"

You can just add here:

	output yaml

> 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

That lets you remove this hunk now that we have yamlconfig support merged.

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
  2024-09-05 23:13 ` Luis Chamberlain
@ 2024-09-06 12:14   ` Scott Mayhew
  0 siblings, 0 replies; 6+ messages in thread
From: Scott Mayhew @ 2024-09-06 12:14 UTC (permalink / raw)
  To: Luis Chamberlain; +Cc: kdevops

On Thu, 05 Sep 2024, Luis Chamberlain wrote:

> On Thu, Sep 05, 2024 at 02:33:54PM -0400, Scott Mayhew wrote:
> > 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"
> 
> You can just add here:
> 
> 	output yaml
> 
> > 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
> 
> That lets you remove this hunk now that we have yamlconfig support merged.
> 
Nice. I'll do that and give it a test this morning.

-Scott
>   Luis
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
  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 14:43 ` Chuck Lever
  2024-09-06 15:26   ` Scott Mayhew
  1 sibling, 1 reply; 6+ messages in thread
From: Chuck Lever @ 2024-09-06 14:43 UTC (permalink / raw)
  To: Scott Mayhew; +Cc: kdevops

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'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.


>  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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
  2024-09-06 14:43 ` Chuck Lever
@ 2024-09-06 15:26   ` Scott Mayhew
  2024-09-06 15:29     ` Chuck Lever
  0 siblings, 1 reply; 6+ messages in thread
From: Scott Mayhew @ 2024-09-06 15:26 UTC (permalink / raw)
  To: Chuck Lever; +Cc: kdevops

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
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
  2024-09-06 15:26   ` Scott Mayhew
@ 2024-09-06 15:29     ` Chuck Lever
  0 siblings, 0 replies; 6+ messages in thread
From: Chuck Lever @ 2024-09-06 15:29 UTC (permalink / raw)
  To: Scott Mayhew; +Cc: kdevops

On Fri, Sep 06, 2024 at 11:26:23AM -0400, Scott Mayhew wrote:
> 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

IMO the help text here should mention the NFS version is fixed
at v4.1 for this test section.


> > 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.

Yeah, that is appropriate for many of them. Fair enough.


> > >  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
> > 
> 

-- 
Chuck Lever

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-09-06 15:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2024-09-06 15:29     ` Chuck Lever

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox