On Fri, Feb 14, 2025 at 9:24 AM Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > > On 2/13/25 12:30 PM, Olga Kornievskaia wrote: > > On Thu, Feb 13, 2025 at 11:01 AM Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > >> > >> On 2/13/25 10:47 AM, Olga Kornievskaia wrote: > >>> Don't ignore return code of adding rdma listener. If nfs.conf has asked > >>> for "rdma=y" but adding the listener fails, don't ignore the failure. > >>> Note in soft-rdma-provider environment (such as soft iwarp, soft roce), > >>> when no address-constraints are used, an "any" listener is created and > >>> rdma-enabling is done independently. > >> > >> This behavior is confusing... I suggest that an nfs.conf man page > >> update accompany the below code change. > > > > Do you find only the rdma=y soft-rdma case confusing, or do you find > > that when listeners fail and we shouldn't start knfsd threads in > > general confusing? > > > > It was always the case that if rdma=y is done, then any listener > > created for it does not check whether or not the underlying interface > > is already rdma-enabled. This hasn't changed. Nor does this patch > > change it. > > Not saying the patch changes the behavior. But you have to admit the > behavior is surprising and needs clear documentation. Sure we can document the behavior of the any listener on a soft rdma interface as it's used by the knfsd. But is it guaranteed not to change, as the behaviour is controlled by the RDMA core not NFS? > >> Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > >> > >> > >>> Fixes: e3b72007ab31 ("nfs-utils: nfsdctl: cleanup listeners if some failed") > >>> Signed-off-by: Olga Kornievskaia <okorniev@xxxxxxxxxx> > >>> --- > >>> utils/nfsdctl/nfsdctl.c | 4 ++-- > >>> 1 file changed, 2 insertions(+), 2 deletions(-) > >>> > >>> diff --git a/utils/nfsdctl/nfsdctl.c b/utils/nfsdctl/nfsdctl.c > >>> index 05fecc71..244910ef 100644 > >>> --- a/utils/nfsdctl/nfsdctl.c > >>> +++ b/utils/nfsdctl/nfsdctl.c > >>> @@ -1388,7 +1388,7 @@ static int configure_listeners(void) > >>> if (tcp) > >>> ret = add_listener("tcp", n->field, port); > >>> if (rdma) > >>> - add_listener("rdma", n->field, rdma_port); > >>> + ret = add_listener("rdma", n->field, rdma_port); > >>> if (ret) > >>> return ret; > >>> } > >>> @@ -1398,7 +1398,7 @@ static int configure_listeners(void) > >>> if (tcp) > >>> ret = add_listener("tcp", "", port); > >>> if (rdma) > >>> - add_listener("rdma", "", rdma_port); > >>> + ret = add_listener("rdma", "", rdma_port); > >>> } > >>> return ret; > >>> } > >> > >> > >> -- > >> Chuck Lever > >> > > > > > -- > Chuck Lever >