]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - fs/nfs/client.c
NFS: Allow setting rsize / wsize to a multiple of PAGE_SIZE
[thirdparty/kernel/stable.git] / fs / nfs / client.c
index e828504cc396c97d147706e6b5c724224102379f..da8da5cdbbc1f39c47755eb5d91659b893510555 100644 (file)
@@ -708,9 +708,9 @@ static int nfs_init_server(struct nfs_server *server,
        }
 
        if (ctx->rsize)
-               server->rsize = nfs_block_size(ctx->rsize, NULL);
+               server->rsize = nfs_io_size(ctx->rsize, clp->cl_proto);
        if (ctx->wsize)
-               server->wsize = nfs_block_size(ctx->wsize, NULL);
+               server->wsize = nfs_io_size(ctx->wsize, clp->cl_proto);
 
        server->acregmin = ctx->acregmin * HZ;
        server->acregmax = ctx->acregmax * HZ;
@@ -755,18 +755,19 @@ error:
 static void nfs_server_set_fsinfo(struct nfs_server *server,
                                  struct nfs_fsinfo *fsinfo)
 {
+       struct nfs_client *clp = server->nfs_client;
        unsigned long max_rpc_payload, raw_max_rpc_payload;
 
        /* Work out a lot of parameters */
        if (server->rsize == 0)
-               server->rsize = nfs_block_size(fsinfo->rtpref, NULL);
+               server->rsize = nfs_io_size(fsinfo->rtpref, clp->cl_proto);
        if (server->wsize == 0)
-               server->wsize = nfs_block_size(fsinfo->wtpref, NULL);
+               server->wsize = nfs_io_size(fsinfo->wtpref, clp->cl_proto);
 
        if (fsinfo->rtmax >= 512 && server->rsize > fsinfo->rtmax)
-               server->rsize = nfs_block_size(fsinfo->rtmax, NULL);
+               server->rsize = nfs_io_size(fsinfo->rtmax, clp->cl_proto);
        if (fsinfo->wtmax >= 512 && server->wsize > fsinfo->wtmax)
-               server->wsize = nfs_block_size(fsinfo->wtmax, NULL);
+               server->wsize = nfs_io_size(fsinfo->wtmax, clp->cl_proto);
 
        raw_max_rpc_payload = rpc_max_payload(server->client);
        max_rpc_payload = nfs_block_size(raw_max_rpc_payload, NULL);