diff --git a/playbooks/roles/fstests/defaults/main.yml b/playbooks/roles/fstests/defaults/main.yml
index 8b6872c..17a7e52 100644
--- a/playbooks/roles/fstests/defaults/main.yml
+++ b/playbooks/roles/fstests/defaults/main.yml
@@ -166,6 +166,7 @@ fstests_nfs_use_kdevops_nfsd: False
 fstests_nfs_section_pnfs: False
 fstests_nfs_section_rdma: False
 fstests_nfs_section_tls: False
+fstests_nfs_section_nfsd: False
 fstests_nfs_section_default: False
 fstests_nfs_section_v42: False
 fstests_nfs_section_v41: False
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/defaults/main.yml b/playbooks/roles/gen_hosts/defaults/main.yml
index 8d05aa4..1cb3940 100644
--- a/playbooks/roles/gen_hosts/defaults/main.yml
+++ b/playbooks/roles/gen_hosts/defaults/main.yml
@@ -34,6 +34,7 @@ fs_config_role_path: "/dev/null"
 fs_config_data: "[section_1]"
 
 kdevops_nfsd_enable: False
+kdevops_loopback_nfs_enable: False
 kdevops_smbd_enable: False
 kdevops_krb5_enable: False
 kdevops_enable_iscsi: false
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..abcdafd 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 kdevops_loopback_nfs_enable %}
+{{ 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 kdevops_loopback_nfs_enable %}
+{{ 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 kdevops_loopback_nfs_enable %}
+{{ 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/scripts/nfsd.Makefile b/scripts/nfsd.Makefile
index ebdbb4d..959cc4b 100644
--- a/scripts/nfsd.Makefile
+++ b/scripts/nfsd.Makefile
@@ -10,6 +10,10 @@ ifeq (y,$(CONFIG_NFSD_EXPORT_STORAGE_ISCSI))
 NFSD_EXTRA_ARGS += nfsd_export_storage_iscsi=true
 endif
 
+ifeq (y,$(CONFIG_FSTESTS_NFS_SECTION_NFSD))
+NFSD_EXTRA_ARGS += kdevops_loopback_nfs_enable=true
+endif
+
 NFSD_EXTRA_ARGS += nfsd_export_fstype='$(subst ",,$(CONFIG_NFSD_EXPORT_FSTYPE))'
 NFSD_EXTRA_ARGS += nfsd_export_path='$(subst ",,$(CONFIG_NFSD_EXPORT_PATH))'
 NFSD_EXTRA_ARGS += nfsd_threads=$(CONFIG_NFSD_THREADS)
diff --git a/workflows/fstests/nfs/Kconfig b/workflows/fstests/nfs/Kconfig
index 6a728aa..0b32e71 100644
--- a/workflows/fstests/nfs/Kconfig
+++ b/workflows/fstests/nfs/Kconfig
@@ -68,6 +68,16 @@ 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"
+	output yaml
+	default n
+	depends on FSTESTS_USE_KDEVOPS_NFSD
+	help
+	  Enabling this will test with an NFS client running on the
+	  NFS server itself.  Note that this feature is currently
+	  hard-coded to use NFSv4.1.
+
 config FSTESTS_NFS_SECTION_V42
 	bool "Enable testing section: nfs_v42"
 	default y
