From: Long Li <longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> To: Steve French <sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org> Subject: [[PATCH v1] 22/37] [CIFS] SMBD: Implement API for upper layer to receive data to page Date: Wed, 2 Aug 2017 13:10:33 -0700 [thread overview] Message-ID: <1501704648-20159-23-git-send-email-longli@exchange.microsoft.com> (raw) In-Reply-To: <1501704648-20159-1-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> From: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org> Sometimes upper layer may also want to read data to a page. Implement this API. Signed-off-by: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org> --- fs/cifs/cifsrdma.c | 30 ++++++++++++++++++++++++++++++ fs/cifs/cifsrdma.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/fs/cifs/cifsrdma.c b/fs/cifs/cifsrdma.c index e5f6300..67a11d9 100644 --- a/fs/cifs/cifsrdma.c +++ b/fs/cifs/cifsrdma.c @@ -1316,6 +1316,36 @@ struct cifs_rdma_info* cifs_create_rdma_session( } /* + * Read a page from receive reassembly queue + * page: the page to read data into + * to_read: the length of data to read + * return value: actual data read + */ +int cifs_rdma_read_page(struct cifs_rdma_info *info, + struct page *page, unsigned int to_read) +{ + int ret; + char *to_address; + + // make sure we have the page ready for read + wait_event( + info->wait_reassembly_queue, + atomic_read(&info->reassembly_data_length) >= to_read || + info->transport_status != CIFS_RDMA_CONNECTED); + + // now we can read from reassembly queue and not sleep + to_address = kmap_atomic(page); + + log_cifs_read("reading from page=%p address=%p to_read=%d\n", + page, to_address, to_read); + + ret = cifs_rdma_read(info, to_address, to_read); + kunmap_atomic(to_address); + + return ret; +} + +/* * Read data from receive reassembly queue * All the incoming data packets are placed in reassembly queue * buf: the buffer to read data into diff --git a/fs/cifs/cifsrdma.h b/fs/cifs/cifsrdma.h index 8891e21..36f3e4c 100644 --- a/fs/cifs/cifsrdma.h +++ b/fs/cifs/cifsrdma.h @@ -215,5 +215,7 @@ struct cifs_rdma_info* cifs_create_rdma_session( // SMBDirect interface for carrying upper layer CIFS I/O int cifs_rdma_read( struct cifs_rdma_info *rdma, char *buf, unsigned int to_read); +int cifs_rdma_read_page( + struct cifs_rdma_info *rdma, struct page *page, unsigned int to_read); int cifs_rdma_write(struct cifs_rdma_info *rdma, struct smb_rqst *rqst); #endif -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Long Li <longli@exchange.microsoft.com> To: Steve French <sfrench@samba.org>, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-kernel@vger.kernel.org Cc: Long Li <longli@microsoft.com> Subject: [[PATCH v1] 22/37] [CIFS] SMBD: Implement API for upper layer to receive data to page Date: Wed, 2 Aug 2017 13:10:33 -0700 [thread overview] Message-ID: <1501704648-20159-23-git-send-email-longli@exchange.microsoft.com> (raw) In-Reply-To: <1501704648-20159-1-git-send-email-longli@exchange.microsoft.com> From: Long Li <longli@microsoft.com> Sometimes upper layer may also want to read data to a page. Implement this API. Signed-off-by: Long Li <longli@microsoft.com> --- fs/cifs/cifsrdma.c | 30 ++++++++++++++++++++++++++++++ fs/cifs/cifsrdma.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/fs/cifs/cifsrdma.c b/fs/cifs/cifsrdma.c index e5f6300..67a11d9 100644 --- a/fs/cifs/cifsrdma.c +++ b/fs/cifs/cifsrdma.c @@ -1316,6 +1316,36 @@ struct cifs_rdma_info* cifs_create_rdma_session( } /* + * Read a page from receive reassembly queue + * page: the page to read data into + * to_read: the length of data to read + * return value: actual data read + */ +int cifs_rdma_read_page(struct cifs_rdma_info *info, + struct page *page, unsigned int to_read) +{ + int ret; + char *to_address; + + // make sure we have the page ready for read + wait_event( + info->wait_reassembly_queue, + atomic_read(&info->reassembly_data_length) >= to_read || + info->transport_status != CIFS_RDMA_CONNECTED); + + // now we can read from reassembly queue and not sleep + to_address = kmap_atomic(page); + + log_cifs_read("reading from page=%p address=%p to_read=%d\n", + page, to_address, to_read); + + ret = cifs_rdma_read(info, to_address, to_read); + kunmap_atomic(to_address); + + return ret; +} + +/* * Read data from receive reassembly queue * All the incoming data packets are placed in reassembly queue * buf: the buffer to read data into diff --git a/fs/cifs/cifsrdma.h b/fs/cifs/cifsrdma.h index 8891e21..36f3e4c 100644 --- a/fs/cifs/cifsrdma.h +++ b/fs/cifs/cifsrdma.h @@ -215,5 +215,7 @@ struct cifs_rdma_info* cifs_create_rdma_session( // SMBDirect interface for carrying upper layer CIFS I/O int cifs_rdma_read( struct cifs_rdma_info *rdma, char *buf, unsigned int to_read); +int cifs_rdma_read_page( + struct cifs_rdma_info *rdma, struct page *page, unsigned int to_read); int cifs_rdma_write(struct cifs_rdma_info *rdma, struct smb_rqst *rqst); #endif -- 2.7.4
next prev parent reply other threads:[~2017-08-02 20:10 UTC|newest] Thread overview: 139+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-08-02 20:10 [[PATCH v1] 00/37] Implement SMBD protocol: Series 1 Long Li 2017-08-02 20:10 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 01/37] [CIFS] SMBD: Add parsing for new rdma mount option Long Li [not found] ` <1501704648-20159-2-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 19:10 ` Tom Talpey 2017-08-14 19:10 ` Tom Talpey [not found] ` <CY4PR21MB01823BD35679AE110E9008B8A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 22:53 ` Long Li 2017-08-14 22:53 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 02/37] [CIFS] SMBD: Add structure for SMBD transport Long Li 2017-08-08 6:58 ` Stefan Metzmacher [not found] ` <9632c208-d6a5-2c47-b583-274d046d97bd-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org> 2017-08-12 8:32 ` Long Li 2017-08-12 8:32 ` Long Li [not found] ` <MWHPR21MB019089DF6B0B68C5C2F4FE56CE8E0-saRRjQKJ25M/hL2NnenhuM1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-12 18:49 ` Christoph Hellwig 2017-08-12 18:49 ` Christoph Hellwig 2017-08-14 13:41 ` Stefan Metzmacher 2017-08-14 13:41 ` Stefan Metzmacher [not found] ` <61ab1564-d699-e8f2-631e-67a6c28b678b-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org> 2017-08-14 18:10 ` Long Li 2017-08-14 18:10 ` Long Li [not found] ` <1501704648-20159-3-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:10 ` Christoph Hellwig 2017-08-13 10:10 ` Christoph Hellwig 2017-08-02 20:10 ` [[PATCH v1] 03/37] [CIFS] SMBD: Add logging functions for debug Long Li 2017-08-02 20:10 ` [[PATCH v1] 04/37] [CIFS] SMBD: Define per-channel SMBD transport parameters and default values Long Li [not found] ` <1501704648-20159-5-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:11 ` Christoph Hellwig 2017-08-13 10:11 ` Christoph Hellwig 2017-08-14 19:28 ` Tom Talpey [not found] ` <CY4PR21MB0182A8FC1B6900BD6EBA96B0A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 22:57 ` Long Li 2017-08-14 22:57 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 05/37] [CIFS] SMBD: Implement API for upper layer to create SMBD transport and establish RDMA connection Long Li 2017-08-14 19:54 ` Tom Talpey 2017-08-30 2:35 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 06/37] [CIFS] SMBD: Add definition and cache for SMBD response Long Li 2017-08-02 20:10 ` [[PATCH v1] 08/37] [CIFS] SMBD: Define packet format for SMBD data transfer message Long Li [not found] ` <1501704648-20159-9-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:15 ` Christoph Hellwig 2017-08-13 10:15 ` Christoph Hellwig [not found] ` <20170813101510.GC17287-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2017-08-14 10:24 ` Jeff Layton 2017-08-14 10:24 ` Jeff Layton 2017-08-02 20:10 ` [[PATCH v1] 09/37] [CIFS] SMBD: Add SMBD request and cache Long Li 2017-08-02 20:10 ` [[PATCH v1] 10/37] [CIFS] SMBD: Introduce wait queue when sending SMBD request Long Li 2017-08-02 20:10 ` [[PATCH v1] 12/37] [CIFS] SMBD: Handle send completion from CQ Long Li 2017-08-13 10:19 ` Christoph Hellwig 2017-08-14 18:16 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 13/37] [CIFS] SMBD: Implement SMBD protocol negotiation Long Li [not found] ` <1501704648-20159-14-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:22 ` Christoph Hellwig 2017-08-13 10:22 ` Christoph Hellwig 2017-08-02 20:10 ` [[PATCH v1] 14/37] [CIFS] SMBD: Post a SMBD data transfer message with page payload Long Li [not found] ` <1501704648-20159-15-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 20:23 ` Tom Talpey 2017-08-14 20:23 ` Tom Talpey [not found] ` <CY4PR21MB01822E48269CAD772EE1B3A1A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 22:58 ` Long Li 2017-08-14 22:58 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 15/37] [CIFS] SMBD: Post a SMBD data transfer message with data payload Long Li [not found] ` <1501704648-20159-16-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:23 ` Christoph Hellwig 2017-08-13 10:23 ` Christoph Hellwig 2017-08-30 2:17 ` Long Li 2017-08-30 8:51 ` Christoph Hellwig 2017-08-30 18:17 ` Long Li 2017-08-14 20:26 ` Tom Talpey 2017-08-14 20:26 ` Tom Talpey 2017-08-02 20:10 ` [[PATCH v1] 16/37] [CIFS] SMBD: Post a SMBD message with no payload Long Li [not found] ` <1501704648-20159-17-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-13 10:24 ` Christoph Hellwig 2017-08-13 10:24 ` Christoph Hellwig [not found] ` <20170813102412.GH17287-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2017-08-14 18:20 ` Long Li 2017-08-14 18:20 ` Long Li 2017-08-14 19:00 ` Tom Talpey 2017-08-14 22:51 ` Long Li [not found] ` <CY4PR21MB0182E3DB8E034407509E3205CE8C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:12 ` Tom Talpey 2017-08-14 23:12 ` Tom Talpey 2017-08-02 20:10 ` [[PATCH v1] 17/37] [CIFS] SMBD: Track status for transport Long Li 2017-08-02 20:10 ` [[PATCH v1] 19/37] [CIFS] SMBD: Manage credits on SMBD client and server Long Li [not found] ` <1501704648-20159-20-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 20:47 ` Tom Talpey 2017-08-14 20:47 ` Tom Talpey [not found] ` <CY4PR21MB01823211DE659BEAA7932309A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:03 ` Long Li 2017-08-14 23:03 ` Long Li [not found] ` <1501704648-20159-1-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-02 20:10 ` [[PATCH v1] 07/37] [CIFS] SMBD: Implement receive buffer for handling SMBD response Long Li 2017-08-02 20:10 ` Long Li [not found] ` <1501704648-20159-8-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 20:09 ` Tom Talpey 2017-08-14 20:09 ` Tom Talpey 2017-08-19 23:41 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 11/37] [CIFS] SMBD: Post a receive request Long Li 2017-08-02 20:10 ` Long Li 2017-08-13 10:18 ` Christoph Hellwig 2017-08-02 20:10 ` [[PATCH v1] 18/37] [CIFS] SMBD: Implement API for upper layer to send data Long Li 2017-08-02 20:10 ` Long Li [not found] ` <1501704648-20159-19-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 20:44 ` Tom Talpey 2017-08-14 20:44 ` Tom Talpey [not found] ` <CY4PR21MB01827F735F570CCAECD5AD8BA08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-19 23:41 ` Long Li 2017-08-19 23:41 ` Long Li 2017-08-30 2:30 ` Long Li 2017-08-30 2:30 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 20/37] [CIFS] SMBD: Implement reassembly queue for receiving data Long Li 2017-08-02 20:10 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 21/37] [CIFS] SMBD: Implement API for upper layer to receive data Long Li 2017-08-02 20:10 ` Long Li [not found] ` <1501704648-20159-22-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 20:57 ` Tom Talpey 2017-08-14 20:57 ` Tom Talpey [not found] ` <CY4PR21MB0182E84B76541E0EE6FCAF4EA08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:24 ` Long Li 2017-08-14 23:24 ` Long Li 2017-08-14 23:35 ` Tom Talpey 2017-08-02 20:10 ` Long Li [this message] 2017-08-02 20:10 ` [[PATCH v1] 22/37] [CIFS] SMBD: Implement API for upper layer to receive data to page Long Li 2017-08-14 20:59 ` Tom Talpey 2017-08-02 20:10 ` [[PATCH v1] 30/37] [CIFS] SMBD: Add SMBDirect transport to Makefile Long Li 2017-08-02 20:10 ` Long Li [not found] ` <1501704648-20159-31-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 21:20 ` Tom Talpey 2017-08-14 21:20 ` Tom Talpey 2017-08-14 23:30 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 23/37] [CIFS] SMBD: Implement API for upper layer to reconnect transport Long Li [not found] ` <1501704648-20159-24-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 21:02 ` Tom Talpey 2017-08-14 21:02 ` Tom Talpey [not found] ` <CY4PR21MB0182025BB8A39FB3F7291F94A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:37 ` Long Li 2017-08-14 23:37 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 24/37] [CIFS] SMBD: Support for SMBD keep alive protocol Long Li 2017-08-14 21:06 ` Tom Talpey [not found] ` <CY4PR21MB0182CBEB4F76488B2FB9480FA08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:27 ` Long Li 2017-08-14 23:27 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 25/37] [CIFS] SMBD: Support SMBD idle connection timer Long Li [not found] ` <1501704648-20159-26-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> 2017-08-14 21:12 ` Tom Talpey 2017-08-14 21:12 ` Tom Talpey [not found] ` <CY4PR21MB018266B47622680566B48575A08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:29 ` Long Li 2017-08-14 23:29 ` Long Li [not found] ` <CY4PR21MB01829CD26D97DF63CAB08666CE8C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-14 23:42 ` Tom Talpey 2017-08-14 23:42 ` Tom Talpey [not found] ` <CY4PR21MB01829585183A42669B962B4AA08C0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org> 2017-08-15 0:10 ` Long Li 2017-08-15 0:10 ` Long Li 2017-08-02 20:10 ` [[PATCH v1] 26/37] [CIFS] SMBD: Send an immediate packet when it's needed Long Li 2017-08-14 21:15 ` Tom Talpey 2017-08-02 20:10 ` [[PATCH v1] 27/37] [CIFS] SMBD: Destroy transport when RDMA channel is disconnected Long Li 2017-08-02 20:10 ` [[PATCH v1] 28/37] [CIFS] SMBD: Implement API for upper layer to destroy the transport Long Li 2017-08-02 20:10 ` [[PATCH v1] 29/37] [CIFS] SMBD: Disconnect RDMA connection on QP errors Long Li 2017-08-02 20:10 ` [[PATCH v1] 31/37] [CIFS] Add SMBD transport to SMB session context Long Li 2017-08-02 20:10 ` [[PATCH v1] 32/37] [CIFS] Add SMBD debug couters to CIFS debug exports Long Li 2017-08-02 20:10 ` [[PATCH v1] 33/37] [CIFS] Connect to SMBD transport when specified in mount option Long Li 2017-08-02 20:10 ` [[PATCH v1] 34/37] [CIFS] Reconnect to SMBD transport when it's used Long Li 2017-08-02 20:10 ` [[PATCH v1] 35/37] [CIFS] Destroy SMBD transport on exit Long Li 2017-08-02 20:10 ` [[PATCH v1] 36/37] [CIFS] Read from SMBD transport when it's used Long Li 2017-08-02 20:10 ` [[PATCH v1] 37/37] [CIFS] Write to " Long Li 2017-08-13 10:27 ` [[PATCH v1] 00/37] Implement SMBD protocol: Series 1 Christoph Hellwig [not found] ` <20170813102735.GI17287-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2017-08-13 10:31 ` Christoph Hellwig 2017-08-13 10:31 ` Christoph Hellwig 2017-08-14 17:04 ` Long Li 2017-08-14 17:04 ` Long Li
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1501704648-20159-23-git-send-email-longli@exchange.microsoft.com \ --to=longli-lp/cvzeovyzijjesp9taqjz3qxmflfmx@public.gmane.org \ --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \ --cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org \ --cc=sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.