Anna Schumaker 303a780520 NFSv4.2: Rework scratch handling for READ_PLUS (again)
I found that the read code might send multiple requests using the same
nfs_pgio_header, but nfs4_proc_read_setup() is only called once. This is
how we ended up occasionally double-freeing the scratch buffer, but also
means we set a NULL pointer but non-zero length to the xdr scratch
buffer. This results in an oops the first time decoding needs to copy
something to scratch, which frequently happens when decoding READ_PLUS
hole segments.

I fix this by moving scratch handling into the pageio read code. I
provide a function to allocate scratch space for decoding read replies,
and free the scratch buffer when the nfs_pgio_header is freed.

Fixes: fbd2a05f29a9 (NFSv4.2: Rework scratch handling for READ_PLUS)
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2023-08-23 15:58:47 -04:00
..
2017-11-17 14:18:00 -08:00
2017-11-17 14:18:00 -08:00
2021-04-05 09:04:20 -04:00
2023-03-06 09:57:12 +01:00
2022-10-20 10:13:27 +02:00
2023-03-06 09:57:12 +01:00
2023-05-24 08:42:16 -06:00
2015-04-23 15:16:14 -04:00
2023-06-19 15:10:45 -04:00
2023-06-19 15:03:48 -04:00
2022-05-09 16:36:48 -04:00
2023-08-19 10:26:29 -04:00
2022-11-27 22:10:00 -05:00