Thread (45 messages) 45 messages, 6 authors, 2023-03-02

RE: Trying to reduce NFSv4 timeouts to a few seconds on an established connection

From: Andrew Klaassen <hidden>
Date: 2023-03-02 18:47:27

From: Jeff Layton <jlayton@kernel.org>
Sent: Tuesday, February 28, 2023 8:24 AM

On Mon, 2023-02-27 at 14:48 +0000, Andrew Klaassen wrote:
quoted
+struct rpc_timeout *xprt_alloc_timeout(const struct rpc_timeout
*timeo,
+                                    const struct rpc_timeout
*default_timeo)
+{
+     struct rpc_timeout *timeout;
+
+     timeout = kzalloc(sizeof(*timeout), GFP_KERNEL);
+     if (!timeout)
+             return ERR_PTR(-ENOMEM);
+     if (timeo)
+             memcpy(timeout, timeo, sizeof(struct rpc_timeout));
+     else
+             memcpy(timeout, default_timeo, sizeof(struct
rpc_timeout));
I don't think you need an allocation here. struct rpc_timeout is quite
small and it only contains a bunch of integers. I think it'd be better
to just embed this in struct rpc_xprt instead.
I missed this in my initial reply; apologies.  What do you mean by "embed" in this case?

FWIW, every time I tried assigning xprt->timeout without an allocation the timeout values would be correct just after the assignment in xs_setup_tcp, but by the time the code got to xs_tcp_set_socket_timeouts the timeout would be filled with random values.  I'm sure this reflects my limitations as not-a-C-programmer, but no matter which way I tried it I couldn't stop that from happening until I allocated memory.

Thanks.

Andrew Klaassen

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help