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

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