From patchwork Fri Sep 6 19:12:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hristo Venev X-Patchwork-Id: 11135853 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6B6801708 for ; Fri, 6 Sep 2019 19:13:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 423DD2070C for ; Fri, 6 Sep 2019 19:13:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (4096-bit key) header.d=venev.name header.i=@venev.name header.b="TECFahY+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392981AbfIFTN1 (ORCPT ); Fri, 6 Sep 2019 15:13:27 -0400 Received: from mtel-bg02.venev.name ([77.70.28.44]:46694 "EHLO mtel-bg02.venev.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392980AbfIFTN1 (ORCPT ); Fri, 6 Sep 2019 15:13:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=venev.name; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=fi8ucjjg2QspVh9mhFRX7nSefEX0Ac9ST+dZJle9rpM=; b=TECFahY+MfgG31kttDIeRY4n6+ ALIrgcThXoRbTuMYKY15M2+PKDodnjFqarmLeqHQlZGLFNwCM5igOmRXAbBBJZkfjPSJPPX6lc64l ow8sv1VPiYa59Mt0RPmElWkz4kVLoENWH5HIjccRSTnK/160RNdy7Fr+MPOwJn6fQiBZLY/F2UjD9 iQAZO+DQ2owYgWqd72p/oXzvcKqSzGb3abjMXC2ysZZo5pCB/t2ogcdFIwdos8M/ZmQ/pdc9zFD4Z 7YiZQ29dNc4gVtuSyKVVGPpzOLH73UCxzuGCPN9gZseGPmDqJSoC7eLwnmLV34DfJeK3jxhM8vq6G 4QLjYdyqTFFE/+NYB4oXohMsPUalTesTeIBdKJKkF9TuSGukhNXhfoRJLYXhzifUb/MqkcdMIq08c rY7Ypetn/ujrZVyxn+chGnkIS60XQgvhCVW0oC1rlOZvfXUZC/zqAMtDcPy3WKPh5y29b7gZb3FIR SyEtI8luHpFaJMttfPfni8ABXv4KPBTaNWKPoV0FHeMgQSN2rGoUHApu96SCvI3IjUKJ5bR0Ta1qN +K3eopx/jknXIzYcGSo9ZuTMqXb7nCORQiFrdxMbI4/NiwUIMCt93fuIZesv4AqDv1S0SXQbySAnb 2vC9YBFVjS1IynS8RdbMAf40HAX6Rmb1FTGgwqJPw=; X-Check-Malware: ok Received: from mtel-bg02.venev.name by mtel-bg02.venev.name with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (envelope-from ) id 1i6Jfd-00063G-0V; Fri, 06 Sep 2019 19:13:21 +0000 From: Hristo Venev To: Jens Axboe Cc: linux-block@vger.kernel.org, Hristo Venev Subject: [PATCH 1/2] liburing/test: There are now 4 reserved fields Date: Fri, 6 Sep 2019 20:12:51 +0100 Message-Id: <20190906191252.30332-1-hristo@venev.name> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Signed-off-by: Hristo Venev --- test/io_uring_setup.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/io_uring_setup.c b/test/io_uring_setup.c index 2dd3763..73b0398 100644 --- a/test/io_uring_setup.c +++ b/test/io_uring_setup.c @@ -67,8 +67,8 @@ dump_resv(struct io_uring_params *p) if (!p) return ""; - sprintf(resvstr, "0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x", p->resv[0], - p->resv[1], p->resv[2], p->resv[3], p->resv[4]); + sprintf(resvstr, "0x%.8x 0x%.8x 0x%.8x 0x%.8x", p->resv[0], + p->resv[1], p->resv[2], p->resv[3]); return resvstr; } @@ -118,7 +118,7 @@ main(int argc, char **argv) /* resv array is non-zero */ memset(&p, 0, sizeof(p)); - p.resv[0] = p.resv[1] = p.resv[2] = p.resv[3] = p.resv[4] = 1; + p.resv[0] = p.resv[1] = p.resv[2] = p.resv[3] = 1; status |= try_io_uring_setup(1, &p, -1, EINVAL); /* invalid flags */ From patchwork Fri Sep 6 19:12:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hristo Venev X-Patchwork-Id: 11135851 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 391B116B1 for ; Fri, 6 Sep 2019 19:13:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E106720838 for ; Fri, 6 Sep 2019 19:13:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (4096-bit key) header.d=venev.name header.i=@venev.name header.b="Gfi2wlIr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392983AbfIFTN1 (ORCPT ); Fri, 6 Sep 2019 15:13:27 -0400 Received: from mtel-bg02.venev.name ([77.70.28.44]:46702 "EHLO mtel-bg02.venev.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2392981AbfIFTN1 (ORCPT ); Fri, 6 Sep 2019 15:13:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=venev.name; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=g0KfkkbCzMbLqnICvZM8Jb4Ika4rajIxYnFPe8531kA=; b=Gfi2wlIr1MIPoKdWYEcyPliXdW fioVdDt45+zEPiaZSfE9XrjvMFS6fBhuOt/fPBSrnk7hOnUIhnyAAypSg8BaR7AwsnnxPHUaJYkXO rngB085boGCg3BkyXV9hXnCMHsfeWJS0fAcKSDS4d1/26sa+v6B/w9zXKYNX1ze+HmzmmAsh40t92 ORVZTVzVZgAUIxkAWg+aFJRQtGGWmLiPWN4wyp6qWLhIzexIXRhL2DTkZ/JL99cP8B/bt0928cpvJ CFZwhd2ND01Z9BfjYzyUktHY+yOqlNv9332b44Bf4l4fUcRUca8iGVMREhqT3V9WmlNqwv8XDVZkI qFkNO8euIBQwT8ECAOSks5b1eniciN60zbVY1VLtmX0/8sRI0Heoj30jUSewy7EcgP5znyDpX31aa IObfM08MVLOSrWrCeLTIOxmJi9yWr6SKPo4iMK/gqNiNRy3w0CrjHz6yqrbMv/O74Ctx7It4RGlL+ c/3HKwYV2jJfeAGGF1iXDrn+UpqVg1G3pE4RRR2X2TZeC76li2vjNDmYs1065KB0fAQBONViRcRtz wXRmsgEezGIsc3H9cZ77yaXFEprkroQHWA5KZ03wtSQURSZXDggjc5zV0Km7FYFLr7RvePJeej+XE mkO50Ow+IJHhdlTheUL8UJi6Qf0rMdiRVpodB7UAM=; X-Check-Malware: ok Received: from mtel-bg02.venev.name by mtel-bg02.venev.name with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (envelope-from ) id 1i6Jfd-00063G-Nm; Fri, 06 Sep 2019 19:13:21 +0000 From: Hristo Venev To: Jens Axboe Cc: linux-block@vger.kernel.org, Hristo Venev Subject: [PATCH 2/2] liburing: Use the single mmap feature Date: Fri, 6 Sep 2019 20:12:52 +0100 Message-Id: <20190906191252.30332-2-hristo@venev.name> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190906191252.30332-1-hristo@venev.name> References: <20190906191252.30332-1-hristo@venev.name> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Signed-off-by: Hristo Venev --- src/setup.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/setup.c b/src/setup.c index 47b0deb..48c96a0 100644 --- a/src/setup.c +++ b/src/setup.c @@ -16,10 +16,30 @@ static int io_uring_mmap(int fd, struct io_uring_params *p, int ret; sq->ring_sz = p->sq_off.array + p->sq_entries * sizeof(unsigned); + cq->ring_sz = p->cq_off.cqes + p->cq_entries * sizeof(struct io_uring_cqe); + + if (p->features & IORING_FEAT_SINGLE_MMAP) { + if (cq->ring_sz > sq->ring_sz) { + sq->ring_sz = cq->ring_sz; + } + cq->ring_sz = sq->ring_sz; + } sq->ring_ptr = mmap(0, sq->ring_sz, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_SQ_RING); if (sq->ring_ptr == MAP_FAILED) return -errno; + + if (p->features & IORING_FEAT_SINGLE_MMAP) { + cq->ring_ptr = sq->ring_ptr; + } else { + cq->ring_ptr = mmap(0, cq->ring_sz, PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_CQ_RING); + if (cq->ring_ptr == MAP_FAILED) { + ret = -errno; + goto err; + } + } + sq->khead = sq->ring_ptr + p->sq_off.head; sq->ktail = sq->ring_ptr + p->sq_off.tail; sq->kring_mask = sq->ring_ptr + p->sq_off.ring_mask; @@ -34,19 +54,14 @@ static int io_uring_mmap(int fd, struct io_uring_params *p, IORING_OFF_SQES); if (sq->sqes == MAP_FAILED) { ret = -errno; + if (cq->ring_ptr != sq->ring_ptr) { + munmap(cq->ring_ptr, cq->ring_sz); + } err: munmap(sq->ring_ptr, sq->ring_sz); return ret; } - cq->ring_sz = p->cq_off.cqes + p->cq_entries * sizeof(struct io_uring_cqe); - cq->ring_ptr = mmap(0, cq->ring_sz, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_POPULATE, fd, IORING_OFF_CQ_RING); - if (cq->ring_ptr == MAP_FAILED) { - ret = -errno; - munmap(sq->sqes, *sq->kring_entries * sizeof(struct io_uring_sqe)); - goto err; - } cq->khead = cq->ring_ptr + p->cq_off.head; cq->ktail = cq->ring_ptr + p->cq_off.tail; cq->kring_mask = cq->ring_ptr + p->cq_off.ring_mask; @@ -105,6 +120,8 @@ void io_uring_queue_exit(struct io_uring *ring) munmap(sq->sqes, *sq->kring_entries * sizeof(struct io_uring_sqe)); munmap(sq->ring_ptr, sq->ring_sz); - munmap(cq->ring_ptr, cq->ring_sz); + if (cq->ring_ptr != sq->ring_ptr) { + munmap(cq->ring_ptr, cq->ring_sz); + } close(ring->ring_fd); }