1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

s3: VFS: vfs_glusterfs. Pass in struct vfs_gluster_pread_state as the callback data to the subreq.

Find the req we're finishing off by looking inside vfs_gluster_pread_state.
In a shutdown close the caller calls talloc_free(req), so we can't
access it directly as callback data.

The next commit will NULL out the vfs_gluster_pread_state->req pointer
when a caller calls talloc_free(req), and the request is still in
flight.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14301

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Jeremy Allison 2020-02-28 15:35:46 -08:00
parent 0e3dc0078e
commit c6c4e2de22

View File

@ -766,7 +766,7 @@ static struct tevent_req *vfs_gluster_pread_send(struct vfs_handle_struct
if (tevent_req_nomem(subreq, req)) {
return tevent_req_post(req, ev);
}
tevent_req_set_callback(subreq, vfs_gluster_pread_done, req);
tevent_req_set_callback(subreq, vfs_gluster_pread_done, state);
talloc_set_destructor(state, vfs_gluster_pread_state_destructor);
@ -812,10 +812,9 @@ static int vfs_gluster_pread_state_destructor(struct vfs_gluster_pread_state *st
static void vfs_gluster_pread_done(struct tevent_req *subreq)
{
struct tevent_req *req = tevent_req_callback_data(
subreq, struct tevent_req);
struct vfs_gluster_pread_state *state = tevent_req_data(
req, struct vfs_gluster_pread_state);
struct vfs_gluster_pread_state *state = tevent_req_callback_data(
subreq, struct vfs_gluster_pread_state);
struct tevent_req *req = state->req;
int ret;
ret = pthreadpool_tevent_job_recv(subreq);