]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
pNFS/flexfiles: Fix up layoutstats reporting for non-TCP transports
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 9 Nov 2020 20:42:03 +0000 (15:42 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 2 Dec 2020 19:05:53 +0000 (14:05 -0500)
Ensure that we report the correct netid when using UDP or RDMA
transports to the DSes.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/flexfilelayout/flexfilelayout.c

index 24bf5797f88ae2cf5f3a6262fa5777a6a48e1736..b7c26836b2cb8e7180db593356247097f1be89f1 100644 (file)
@@ -2284,7 +2284,6 @@ ff_layout_encode_netaddr(struct xdr_stream *xdr, struct nfs4_pnfs_ds_addr *da)
        struct sockaddr *sap = (struct sockaddr *)&da->da_addr;
        char portbuf[RPCBIND_MAXUADDRPLEN];
        char addrbuf[RPCBIND_MAXUADDRLEN];
-       char *netid;
        unsigned short port;
        int len, netid_len;
        __be32 *p;
@@ -2294,18 +2293,13 @@ ff_layout_encode_netaddr(struct xdr_stream *xdr, struct nfs4_pnfs_ds_addr *da)
                if (ff_layout_ntop4(sap, addrbuf, sizeof(addrbuf)) == 0)
                        return;
                port = ntohs(((struct sockaddr_in *)sap)->sin_port);
-               netid = "tcp";
-               netid_len = 3;
                break;
        case AF_INET6:
                if (ff_layout_ntop6_noscopeid(sap, addrbuf, sizeof(addrbuf)) == 0)
                        return;
                port = ntohs(((struct sockaddr_in6 *)sap)->sin6_port);
-               netid = "tcp6";
-               netid_len = 4;
                break;
        default:
-               /* we only support tcp and tcp6 */
                WARN_ON_ONCE(1);
                return;
        }
@@ -2313,8 +2307,9 @@ ff_layout_encode_netaddr(struct xdr_stream *xdr, struct nfs4_pnfs_ds_addr *da)
        snprintf(portbuf, sizeof(portbuf), ".%u.%u", port >> 8, port & 0xff);
        len = strlcat(addrbuf, portbuf, sizeof(addrbuf));
 
+       netid_len = strlen(da->da_netid);
        p = xdr_reserve_space(xdr, 4 + netid_len);
-       xdr_encode_opaque(p, netid, netid_len);
+       xdr_encode_opaque(p, da->da_netid, netid_len);
 
        p = xdr_reserve_space(xdr, 4 + len);
        xdr_encode_opaque(p, addrbuf, len);