diff options
author | Bart Van Assche <bvanassche@acm.org> | 2019-07-01 14:42:32 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-07-02 07:33:52 -0600 |
commit | ecefd7958eb32602df07f12e9808598b2c2de84b (patch) | |
tree | 789bcf30a838d99b02237568dae0b215cc13f944 /test | |
parent | bbb30995a0b4c9e3489aa5d66d1807425734b791 (diff) |
Fix the use of memory barriers
Introduce the smp_load_acquire() and smp_store_release() macros. Fix
synchronization in io_uring_cq_advance() and __io_uring_get_cqe().
Remove a superfluous local variable, if-test and write barrier from
__io_uring_submit(). Remove a superfluous barrier from
test/io_uring_enter.c.
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Roman Penyaev <rpenyaev@suse.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'test')
-rw-r--r-- | test/io_uring_enter.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/test/io_uring_enter.c b/test/io_uring_enter.c index d6e407e..b25afd5 100644 --- a/test/io_uring_enter.c +++ b/test/io_uring_enter.c @@ -262,9 +262,11 @@ main(int argc, char **argv) ktail = *sq->ktail; sq->array[ktail & mask] = index; ++ktail; - write_barrier(); - *sq->ktail = ktail; - write_barrier(); + /* + * Ensure that the kernel sees the SQE update before it sees the tail + * update. + */ + smp_store_release(sq->ktail, ktail); ret = io_uring_enter(ring.ring_fd, 1, 0, 0, NULL); /* now check to see if our sqe was dropped */ |