From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753546AbdCHOeR (ORCPT ); Wed, 8 Mar 2017 09:34:17 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:19120 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752039AbdCHOeO (ORCPT ); Wed, 8 Mar 2017 09:34:14 -0500 Subject: Re: [PATCH 6/7] xen/9pfs: receive responses To: Stefano Stabellini References: <1488830488-18506-1-git-send-email-sstabellini@kernel.org> <1488830488-18506-6-git-send-email-sstabellini@kernel.org> Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, Stefano Stabellini , jgross@suse.com, Eric Van Hensbergen , Ron Minnich , Latchesar Ionkov , v9fs-developer@lists.sourceforge.net From: Boris Ostrovsky Message-ID: Date: Wed, 8 Mar 2017 09:33:22 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Source-IP: aserv0022.oracle.com [141.146.126.234] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > >>> + >>> + if (xen_9pfs_queued(prod, cons, XEN_9PFS_RING_SIZE) < sizeof(h)) { >>> + notify_remote_via_irq(ring->irq); >>> + return; >>> + } >>> + >>> + masked_prod = xen_9pfs_mask(prod, XEN_9PFS_RING_SIZE); >>> + masked_cons = xen_9pfs_mask(cons, XEN_9PFS_RING_SIZE); >>> + >>> + xen_9pfs_read_packet(ring->ring.in, >>> + masked_prod, &masked_cons, >>> + XEN_9PFS_RING_SIZE, &h, sizeof(h)); >>> + >>> + req = p9_tag_lookup(priv->client, h.tag); >>> + if (!req || req->status != REQ_STATUS_SENT) { >>> + dev_warn(&priv->dev->dev, "Wrong req tag=%x\n", h.tag); >>> + cons += h.size; >>> + mb(); >>> + ring->intf->in_cons = cons; >>> + continue; >> >> I don't know what xen_9pfs_read_packet() does so perhaps it's done there >> but shouldn't the pointers be updated regardless of the 'if' condition? > This is the error path - the index is increased immediately. In the > non-error case, we do that right after the next read_packet call, few > lines below. > > >>> + } >>> + >>> + memcpy(req->rc, &h, sizeof(h)); >>> + req->rc->offset = 0; >>> + >>> + masked_cons = xen_9pfs_mask(cons, XEN_9PFS_RING_SIZE); >>> + xen_9pfs_read_packet(ring->ring.in, >>> + masked_prod, &masked_cons, >>> + XEN_9PFS_RING_SIZE, req->rc->sdata, h.size); >>> + >>> + mb(); >>> + cons += h.size; >>> + ring->intf->in_cons = cons; > Here ^ > So the second read is reading again from the same pointer in the ring, but this time it gets the whole packet, including the header. The first read was just poking at the header. Right? If that's correct, can you add a comment somewhere? (unless this is obvious to everyone else but me.) -boris From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: [PATCH 6/7] xen/9pfs: receive responses Date: Wed, 8 Mar 2017 09:33:22 -0500 Message-ID: References: <1488830488-18506-1-git-send-email-sstabellini@kernel.org> <1488830488-18506-6-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1clcde-0002WC-W9 for xen-devel@lists.xenproject.org; Wed, 08 Mar 2017 14:32:27 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: jgross@suse.com, Latchesar Ionkov , Eric Van Hensbergen , linux-kernel@vger.kernel.org, Stefano Stabellini , v9fs-developer@lists.sourceforge.net, Ron Minnich , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org Cj4KPj4+ICsKPj4+ICsJCWlmICh4ZW5fOXBmc19xdWV1ZWQocHJvZCwgY29ucywgWEVOXzlQRlNf UklOR19TSVpFKSA8IHNpemVvZihoKSkgewo+Pj4gKwkJCW5vdGlmeV9yZW1vdGVfdmlhX2lycShy aW5nLT5pcnEpOwo+Pj4gKwkJCXJldHVybjsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCW1hc2tlZF9w cm9kID0geGVuXzlwZnNfbWFzayhwcm9kLCBYRU5fOVBGU19SSU5HX1NJWkUpOwo+Pj4gKwkJbWFz a2VkX2NvbnMgPSB4ZW5fOXBmc19tYXNrKGNvbnMsIFhFTl85UEZTX1JJTkdfU0laRSk7Cj4+PiAr Cj4+PiArCQl4ZW5fOXBmc19yZWFkX3BhY2tldChyaW5nLT5yaW5nLmluLAo+Pj4gKwkJCQltYXNr ZWRfcHJvZCwgJm1hc2tlZF9jb25zLAo+Pj4gKwkJCQlYRU5fOVBGU19SSU5HX1NJWkUsICZoLCBz aXplb2YoaCkpOwo+Pj4gKwo+Pj4gKwkJcmVxID0gcDlfdGFnX2xvb2t1cChwcml2LT5jbGllbnQs IGgudGFnKTsKPj4+ICsJCWlmICghcmVxIHx8IHJlcS0+c3RhdHVzICE9IFJFUV9TVEFUVVNfU0VO VCkgewo+Pj4gKwkJCWRldl93YXJuKCZwcml2LT5kZXYtPmRldiwgIldyb25nIHJlcSB0YWc9JXhc biIsIGgudGFnKTsKPj4+ICsJCQljb25zICs9IGguc2l6ZTsKPj4+ICsJCQltYigpOwo+Pj4gKwkJ CXJpbmctPmludGYtPmluX2NvbnMgPSBjb25zOwo+Pj4gKwkJCWNvbnRpbnVlOwo+Pgo+PiBJIGRv bid0IGtub3cgd2hhdCB4ZW5fOXBmc19yZWFkX3BhY2tldCgpIGRvZXMgc28gcGVyaGFwcyBpdCdz IGRvbmUgdGhlcmUKPj4gYnV0IHNob3VsZG4ndCB0aGUgcG9pbnRlcnMgYmUgdXBkYXRlZCByZWdh cmRsZXNzIG9mIHRoZSAnaWYnIGNvbmRpdGlvbj8KPiBUaGlzIGlzIHRoZSBlcnJvciBwYXRoIC0g dGhlIGluZGV4IGlzIGluY3JlYXNlZCBpbW1lZGlhdGVseS4gSW4gdGhlCj4gbm9uLWVycm9yIGNh c2UsIHdlIGRvIHRoYXQgcmlnaHQgYWZ0ZXIgdGhlIG5leHQgcmVhZF9wYWNrZXQgY2FsbCwgZmV3 Cj4gbGluZXMgYmVsb3cuCj4KPgo+Pj4gKwkJfQo+Pj4gKwo+Pj4gKwkJbWVtY3B5KHJlcS0+cmMs ICZoLCBzaXplb2YoaCkpOwo+Pj4gKwkJcmVxLT5yYy0+b2Zmc2V0ID0gMDsKPj4+ICsKPj4+ICsJ CW1hc2tlZF9jb25zID0geGVuXzlwZnNfbWFzayhjb25zLCBYRU5fOVBGU19SSU5HX1NJWkUpOwo+ Pj4gKwkJeGVuXzlwZnNfcmVhZF9wYWNrZXQocmluZy0+cmluZy5pbiwKPj4+ICsJCQkJbWFza2Vk X3Byb2QsICZtYXNrZWRfY29ucywKPj4+ICsJCQkJWEVOXzlQRlNfUklOR19TSVpFLCByZXEtPnJj LT5zZGF0YSwgaC5zaXplKTsKPj4+ICsKPj4+ICsJCW1iKCk7Cj4+PiArCQljb25zICs9IGguc2l6 ZTsKPj4+ICsJCXJpbmctPmludGYtPmluX2NvbnMgPSBjb25zOwo+ICAgICAgICAgICAgICAgICAg ICBIZXJlIF4KPgoKClNvIHRoZSBzZWNvbmQgcmVhZCBpcyByZWFkaW5nIGFnYWluIGZyb20gdGhl IHNhbWUgcG9pbnRlciBpbiB0aGUgcmluZywKYnV0IHRoaXMgdGltZSBpdCBnZXRzIHRoZSB3aG9s ZSBwYWNrZXQsIGluY2x1ZGluZyB0aGUgaGVhZGVyLiBUaGUgZmlyc3QKcmVhZCB3YXMganVzdCBw b2tpbmcgYXQgdGhlIGhlYWRlci4gUmlnaHQ/CgpJZiB0aGF0J3MgY29ycmVjdCwgY2FuIHlvdSBh ZGQgYSBjb21tZW50IHNvbWV3aGVyZT8gKHVubGVzcyB0aGlzIGlzCm9idmlvdXMgdG8gZXZlcnlv bmUgZWxzZSBidXQgbWUuKQoKLWJvcmlzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK