From: Tom Talpey <ttalpey-0li6OtcxBFHby3iVrkZq2A@public.gmane.org> To: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>, Steve French <sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>, "linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" <linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, "samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org" <samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org>, "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> Subject: RE: [[PATCH v1] 21/37] [CIFS] SMBD: Implement API for upper layer to receive data Date: Mon, 14 Aug 2017 20:57:10 +0000 [thread overview] Message-ID: <CY4PR21MB0182E84B76541E0EE6FCAF4EA08C0@CY4PR21MB0182.namprd21.prod.outlook.com> (raw) In-Reply-To: <1501704648-20159-22-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org> > -----Original Message----- > From: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-cifs- > owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On Behalf Of Long Li > Sent: Wednesday, August 2, 2017 4:11 PM > 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] 21/37] [CIFS] SMBD: Implement API for upper layer to > receive data > > /* > + * Read data from receive reassembly queue > + * All the incoming data packets are placed in reassembly queue > + * buf: the buffer to read data into > + * size: the length of data to read > + * return value: actual data read > + */ > +int cifs_rdma_read(struct cifs_rdma_info *info, char *buf, unsigned int size) > +{ >... > + spin_lock_irqsave(&info->reassembly_queue_lock, flags); > + log_cifs_read("size=%d info->reassembly_data_length=%d\n", size, > + atomic_read(&info->reassembly_data_length)); > + if (atomic_read(&info->reassembly_data_length) >= size) { If the reassembly queue is protected by a lock, why is an atomic_read() of its length needed? > + // this is for reading rfc1002 length > + if (response->first_segment && size==4) { > + unsigned int rfc1002_len = > + data_length + remaining_data_length; > + *((__be32*)buf) = cpu_to_be32(rfc1002_len); > + data_read = 4; > + response->first_segment = false; > + log_cifs_read("returning rfc1002 length %d\n", > + rfc1002_len); > + goto read_rfc1002_done; > + } I am totally confused. What does RFC1002 framing have to do with receiving an SMB Direct packet??? > + > + to_copy = min_t(int, data_length - offset, to_read); > + memcpy( > + buf + data_read, > + (char*)data_transfer + data_offset + offset, > + to_copy); Is it really necessary to perform all these data copies, especially under the reassembly_queue spinlock? This seems quite inefficient. Can the receive buffers not be loaned out and chained logically? Tom.
WARNING: multiple messages have this Message-ID (diff)
From: Tom Talpey <ttalpey@microsoft.com> To: Long Li <longli@microsoft.com>, Steve French <sfrench@samba.org>, "linux-cifs@vger.kernel.org" <linux-cifs@vger.kernel.org>, "samba-technical@lists.samba.org" <samba-technical@lists.samba.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org> Subject: RE: [[PATCH v1] 21/37] [CIFS] SMBD: Implement API for upper layer to receive data Date: Mon, 14 Aug 2017 20:57:10 +0000 [thread overview] Message-ID: <CY4PR21MB0182E84B76541E0EE6FCAF4EA08C0@CY4PR21MB0182.namprd21.prod.outlook.com> (raw) In-Reply-To: <1501704648-20159-22-git-send-email-longli@exchange.microsoft.com> > -----Original Message----- > From: linux-cifs-owner@vger.kernel.org [mailto:linux-cifs- > owner@vger.kernel.org] On Behalf Of Long Li > Sent: Wednesday, August 2, 2017 4:11 PM > 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] 21/37] [CIFS] SMBD: Implement API for upper layer to > receive data > > /* > + * Read data from receive reassembly queue > + * All the incoming data packets are placed in reassembly queue > + * buf: the buffer to read data into > + * size: the length of data to read > + * return value: actual data read > + */ > +int cifs_rdma_read(struct cifs_rdma_info *info, char *buf, unsigned int size) > +{ >... > + spin_lock_irqsave(&info->reassembly_queue_lock, flags); > + log_cifs_read("size=%d info->reassembly_data_length=%d\n", size, > + atomic_read(&info->reassembly_data_length)); > + if (atomic_read(&info->reassembly_data_length) >= size) { If the reassembly queue is protected by a lock, why is an atomic_read() of its length needed? > + // this is for reading rfc1002 length > + if (response->first_segment && size==4) { > + unsigned int rfc1002_len = > + data_length + remaining_data_length; > + *((__be32*)buf) = cpu_to_be32(rfc1002_len); > + data_read = 4; > + response->first_segment = false; > + log_cifs_read("returning rfc1002 length %d\n", > + rfc1002_len); > + goto read_rfc1002_done; > + } I am totally confused. What does RFC1002 framing have to do with receiving an SMB Direct packet??? > + > + to_copy = min_t(int, data_length - offset, to_read); > + memcpy( > + buf + data_read, > + (char*)data_transfer + data_offset + offset, > + to_copy); Is it really necessary to perform all these data copies, especially under the reassembly_queue spinlock? This seems quite inefficient. Can the receive buffers not be loaned out and chained logically? Tom.
next prev parent reply other threads:[~2017-08-14 20:57 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 [this message] 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 ` [[PATCH v1] 22/37] [CIFS] SMBD: Implement API for upper layer to receive data to page Long Li 2017-08-02 20:10 ` 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=CY4PR21MB0182E84B76541E0EE6FCAF4EA08C0@CY4PR21MB0182.namprd21.prod.outlook.com \ --to=ttalpey-0li6otcxbfhby3ivrkzq2a@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.