Merge tag 'nfs-for-5.11-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[linux-2.6-microblaze.git] / fs / nfs / flexfilelayout / flexfilelayout.c
index 4252ce6..872112b 100644 (file)
@@ -740,16 +740,12 @@ ff_layout_choose_ds_for_read(struct pnfs_layout_segment *lseg,
        struct nfs4_ff_layout_segment *fls = FF_LAYOUT_LSEG(lseg);
        struct nfs4_ff_layout_mirror *mirror;
        struct nfs4_pnfs_ds *ds;
-       bool fail_return = false;
        u32 idx;
 
        /* mirrors are initially sorted by efficiency */
        for (idx = start_idx; idx < fls->mirror_array_cnt; idx++) {
-               if (idx+1 == fls->mirror_array_cnt)
-                       fail_return = !check_device;
-
                mirror = FF_LAYOUT_COMP(lseg, idx);
-               ds = nfs4_ff_layout_prepare_ds(lseg, mirror, fail_return);
+               ds = nfs4_ff_layout_prepare_ds(lseg, mirror, false);
                if (!ds)
                        continue;
 
@@ -1056,7 +1052,7 @@ static void ff_layout_resend_pnfs_read(struct nfs_pgio_header *hdr)
        u32 idx = hdr->pgio_mirror_idx + 1;
        u32 new_idx = 0;
 
-       if (ff_layout_choose_any_ds_for_read(hdr->lseg, idx + 1, &new_idx))
+       if (ff_layout_choose_any_ds_for_read(hdr->lseg, idx, &new_idx))
                ff_layout_send_layouterror(hdr->lseg);
        else
                pnfs_error_mark_layout_for_return(hdr->inode, hdr->lseg);
@@ -2284,7 +2280,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 +2289,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 +2303,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);