]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/nfs: Added nfs cluster level RDMA precheck for enabling RDMA for export
authorShweta Bhosale <Shweta.Bhosale1@ibm.com>
Tue, 14 Apr 2026 14:21:17 +0000 (19:51 +0530)
committerShweta Bhosale <Shweta.Bhosale1@ibm.com>
Tue, 21 Apr 2026 10:23:50 +0000 (15:53 +0530)
If NFS cluster level RDMA is enabled then only allow transport as RDMA at export level

Fixes: https://tracker.ceph.com/issues/75189
Signed-off-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
src/pybind/mgr/nfs/export.py

index bdd3365c8b1927627940abf2904019fa7506bf6d..f3fe29405aab38770035aa5ff0e1ff157ac6a9c4 100644 (file)
@@ -725,10 +725,13 @@ class ExportMgr:
         ex_dict["fsal"] = fsal
         ex_dict["cluster_id"] = cluster_id
         # When RDMA is enabled at cluster level, default export transports to tcp, RDMA
-        if "transports" not in ex_dict:
-            nfs_spec = get_nfs_spec_for_cluster(self.mgr, cluster_id)
-            if nfs_spec and getattr(nfs_spec, "enable_rdma", False):
-                ex_dict["transports"] = ["TCP", "RDMA"]
+        nfs_spec = get_nfs_spec_for_cluster(self.mgr, cluster_id)
+        rdma_status = getattr(nfs_spec, "enable_rdma", False)
+        if "transports" not in ex_dict and rdma_status:
+            ex_dict["transports"] = ["TCP", "RDMA"]
+        elif "RDMA" in ex_dict.get("transports", []) and not rdma_status:
+            raise NFSInvalidOperation("Can't set Transport as RDMA as RDMA not enabled at NFS cluster level")
+
         export = Export.from_dict(ex_id, ex_dict)
         if export.fsal.name == NFS_GANESHA_SUPPORTED_FSALS[0]:
             self._ensure_cephfs_export_user(export)