From: Scott Mayhew <smayhew@redhat.com>
To: kdevops@lists.linux.dev
Subject: [PATCH] fstests/nfs: add ability to test with NFS loopback mounts
Date: Thu, 5 Sep 2024 14:33:54 -0400 [thread overview]
Message-ID: <20240905183354.406024-1-smayhew@redhat.com> (raw)
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
next reply other threads:[~2024-09-05 18:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-05 18:33 Scott Mayhew [this message]
2024-09-05 23:13 ` [PATCH] fstests/nfs: add ability to test with NFS loopback mounts 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
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=20240905183354.406024-1-smayhew@redhat.com \
--to=smayhew@redhat.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