From: Shweta Bhosale Date: Tue, 14 Apr 2026 14:21:17 +0000 (+0530) Subject: mgr/nfs: Added nfs cluster level RDMA precheck for enabling RDMA for export X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6696b107daae8165e0de4cea9ba8fd731d3b69f4;p=ceph.git mgr/nfs: Added nfs cluster level RDMA precheck for enabling RDMA for export 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 --- diff --git a/src/pybind/mgr/nfs/export.py b/src/pybind/mgr/nfs/export.py index bdd3365c8b19..f3fe29405aab 100644 --- a/src/pybind/mgr/nfs/export.py +++ b/src/pybind/mgr/nfs/export.py @@ -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)