diff mbox

[RFC] split struct ib_send_wr

Message ID 20150806162438.GA27608@infradead.org (mailing list archive)
State Superseded
Headers show

Commit Message

Christoph Hellwig Aug. 6, 2015, 4:24 p.m. UTC
I've pushed out a new version.  Updates:

 - the ib_recv_wr change Bart notices has been fixed.
 - iser and isert have been converted
 - the handling of the embedded WR in the qib software queue entry
   has been fixed.

Which means we're basically done now and the patch could use
broader testing.

The full patch will be too much for the list again, so here is the
git commit:

http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71

ib_vers.h diff below:

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Sagi Grimberg Aug. 6, 2015, 4:46 p.m. UTC | #1
On 8/6/2015 7:24 PM, Christoph Hellwig wrote:
> I've pushed out a new version.  Updates:
>
>   - the ib_recv_wr change Bart notices has been fixed.
>   - iser and isert have been converted

Thanks Christoph!

>   - the handling of the embedded WR in the qib software queue entry
>     has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.

pulling it now...

>
> The full patch will be too much for the list again, so here is the
> git commit:
>
> http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71
>
> ib_vers.h diff below:
>
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 0940051..2f2efdd 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -1100,54 +1100,94 @@ struct ib_send_wr {
>   		__be32		imm_data;
>   		u32		invalidate_rkey;
>   	} ex;
> -	union {
> -		struct {
> -			u64	remote_addr;
> -			u32	rkey;
> -		} rdma;
> -		struct {
> -			u64	remote_addr;
> -			u64	compare_add;
> -			u64	swap;
> -			u64	compare_add_mask;
> -			u64	swap_mask;
> -			u32	rkey;
> -		} atomic;
> -		struct {
> -			struct ib_ah *ah;
> -			void   *header;
> -			int     hlen;
> -			int     mss;
> -			u32	remote_qpn;
> -			u32	remote_qkey;
> -			u16	pkey_index; /* valid for GSI only */
> -			u8	port_num;   /* valid for DR SMPs on switch only */
> -		} ud;
> -		struct {
> -			u64				iova_start;
> -			struct ib_fast_reg_page_list   *page_list;
> -			unsigned int			page_shift;
> -			unsigned int			page_list_len;
> -			u32				length;
> -			int				access_flags;
> -			u32				rkey;
> -		} fast_reg;
> -		struct {
> -			struct ib_mw            *mw;
> -			/* The new rkey for the memory window. */
> -			u32                      rkey;
> -			struct ib_mw_bind_info   bind_info;
> -		} bind_mw;
> -		struct {
> -			struct ib_sig_attrs    *sig_attrs;
> -			struct ib_mr	       *sig_mr;
> -			int			access_flags;
> -			struct ib_sge	       *prot;
> -		} sig_handover;
> -	} wr;
>   	u32			xrc_remote_srq_num;	/* XRC TGT QPs only */

I agree that this is a shame to keep in here for everyone to carry...
The only driver I've seen supporting XRC is mlx5 with no consumers.

If people are reluctant to remove it, you can put it in ib_xrc_send_wr
or something...
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Wise Aug. 6, 2015, 5:04 p.m. UTC | #2
On 8/6/2015 11:24 AM, Christoph Hellwig wrote:
> I've pushed out a new version.  Updates:
>
>   - the ib_recv_wr change Bart notices has been fixed.
>   - iser and isert have been converted
>   - the handling of the embedded WR in the qib software queue entry
>     has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.
>
> The full patch will be too much for the list again, so here is the
> git commit:
>
> http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71
>

Hey Christoph,

You missed amso1100 (and probably ipath) that have been moved to 
drivers/staging...

   CC [M]  drivers/staging/amso1100/c2_qp.o
drivers/staging/amso1100/c2_qp.c: In function âc2_post_sendâ:
drivers/staging/amso1100/c2_qp.c:863: error: âstruct ib_send_wrâ has no 
member named âwrâ

I'll disable them from my config so I can test your code on cxgb4, but I 
wanted to let you know...

Steve.


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 6, 2015, 5:31 p.m. UTC | #3
On Thu, Aug 06, 2015 at 12:04:32PM -0500, Steve Wise wrote:
> You missed amso1100 (and probably ipath) that have been moved to
> drivers/staging...

Driver/staging isn't considered in tree for global API change
perspective, so I didn't bother with all these staging drivers.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Parav Pandit Aug. 6, 2015, 5:38 p.m. UTC | #4
Do you see value in dividing ib_ud _wr into ib_ud_wr and ib_ud_gsi_wr
to save 4 bytes?

On Thu, Aug 6, 2015 at 9:54 PM, Christoph Hellwig <hch@infradead.org> wrote:
> I've pushed out a new version.  Updates:
>
>  - the ib_recv_wr change Bart notices has been fixed.
>  - iser and isert have been converted
>  - the handling of the embedded WR in the qib software queue entry
>    has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.
>
> The full patch will be too much for the list again, so here is the
> git commit:
>
> http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71
>
> ib_vers.h diff below:
>
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 0940051..2f2efdd 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -1100,54 +1100,94 @@ struct ib_send_wr {
>                 __be32          imm_data;
>                 u32             invalidate_rkey;
>         } ex;
> -       union {
> -               struct {
> -                       u64     remote_addr;
> -                       u32     rkey;
> -               } rdma;
> -               struct {
> -                       u64     remote_addr;
> -                       u64     compare_add;
> -                       u64     swap;
> -                       u64     compare_add_mask;
> -                       u64     swap_mask;
> -                       u32     rkey;
> -               } atomic;
> -               struct {
> -                       struct ib_ah *ah;
> -                       void   *header;
> -                       int     hlen;
> -                       int     mss;
> -                       u32     remote_qpn;
> -                       u32     remote_qkey;
> -                       u16     pkey_index; /* valid for GSI only */
> -                       u8      port_num;   /* valid for DR SMPs on switch only */
> -               } ud;
> -               struct {
> -                       u64                             iova_start;
> -                       struct ib_fast_reg_page_list   *page_list;
> -                       unsigned int                    page_shift;
> -                       unsigned int                    page_list_len;
> -                       u32                             length;
> -                       int                             access_flags;
> -                       u32                             rkey;
> -               } fast_reg;
> -               struct {
> -                       struct ib_mw            *mw;
> -                       /* The new rkey for the memory window. */
> -                       u32                      rkey;
> -                       struct ib_mw_bind_info   bind_info;
> -               } bind_mw;
> -               struct {
> -                       struct ib_sig_attrs    *sig_attrs;
> -                       struct ib_mr           *sig_mr;
> -                       int                     access_flags;
> -                       struct ib_sge          *prot;
> -               } sig_handover;
> -       } wr;
>         u32                     xrc_remote_srq_num;     /* XRC TGT QPs only */
>  };
>
> +struct ib_rdma_wr {
> +       struct ib_send_wr       wr;
> +       u64                     remote_addr;
> +       u32                     rkey;
> +};
> +
> +static inline struct ib_rdma_wr *rdma_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_rdma_wr, wr);
> +}
> +
> +struct ib_atomic_wr {
> +       struct ib_send_wr       wr;
> +       u64                     remote_addr;
> +       u64                     compare_add;
> +       u64                     swap;
> +       u64                     compare_add_mask;
> +       u64                     swap_mask;
> +       u32                     rkey;
> +};
> +
> +static inline struct ib_atomic_wr *atomic_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_atomic_wr, wr);
> +}
> +
> +struct ib_ud_wr {
> +       struct ib_send_wr       wr;
> +       struct ib_ah            *ah;
> +       void                    *header;
> +       int                     hlen;
> +       int                     mss;
> +       u32                     remote_qpn;
> +       u32                     remote_qkey;
> +       u16                     pkey_index; /* valid for GSI only */
> +       u8                      port_num;   /* valid for DR SMPs on switch only */
> +};
> +
> +static inline struct ib_ud_wr *ud_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_ud_wr, wr);
> +}
> +
> +struct ib_fast_reg_wr {
> +       struct ib_send_wr       wr;
> +       u64                     iova_start;
> +       struct ib_fast_reg_page_list *page_list;
> +       unsigned int            page_shift;
> +       unsigned int            page_list_len;
> +       u32                     length;
> +       int                     access_flags;
> +       u32                     rkey;
> +};
> +
> +static inline struct ib_fast_reg_wr *fast_reg_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_fast_reg_wr, wr);
> +}
> +
> +struct ib_bind_mw_wr {
> +       struct ib_send_wr       wr;
> +       struct ib_mw            *mw;
> +       /* The new rkey for the memory window. */
> +       u32                     rkey;
> +       struct ib_mw_bind_info  bind_info;
> +};
> +
> +static inline struct ib_bind_mw_wr *bind_mw_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_bind_mw_wr, wr);
> +}
> +
> +struct ib_sig_handover_wr {
> +       struct ib_send_wr       wr;
> +       struct ib_sig_attrs    *sig_attrs;
> +       struct ib_mr           *sig_mr;
> +       int                     access_flags;
> +       struct ib_sge          *prot;
> +};
> +
> +static inline struct ib_sig_handover_wr *sig_handover_wr(struct ib_send_wr *wr)
> +{
> +       return container_of(wr, struct ib_sig_handover_wr, wr);
> +}
> +
>  struct ib_recv_wr {
>         struct ib_recv_wr      *next;
>         u64                     wr_id;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Wise Aug. 6, 2015, 5:44 p.m. UTC | #5
> -----Original Message-----
> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-owner@vger.kernel.org] On Behalf Of Christoph Hellwig
> Sent: Thursday, August 06, 2015 12:32 PM
> To: Steve Wise
> Cc: Christoph Hellwig; linux-rdma@vger.kernel.org; Sagi Grimberg
> Subject: Re: [RFC] split struct ib_send_wr
> 
> On Thu, Aug 06, 2015 at 12:04:32PM -0500, Steve Wise wrote:
> > You missed amso1100 (and probably ipath) that have been moved to
> > drivers/staging...
> 
> Driver/staging isn't considered in tree for global API change
> perspective, so I didn't bother with all these staging drivers.

The kbuild test bot will probably catch this. 

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chuck Lever III Aug. 6, 2015, 5:58 p.m. UTC | #6
On Aug 6, 2015, at 1:44 PM, Steve Wise <swise@opengridcomputing.com> wrote:

> 
> 
>> -----Original Message-----
>> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-owner@vger.kernel.org] On Behalf Of Christoph Hellwig
>> Sent: Thursday, August 06, 2015 12:32 PM
>> To: Steve Wise
>> Cc: Christoph Hellwig; linux-rdma@vger.kernel.org; Sagi Grimberg
>> Subject: Re: [RFC] split struct ib_send_wr
>> 
>> On Thu, Aug 06, 2015 at 12:04:32PM -0500, Steve Wise wrote:
>>> You missed amso1100 (and probably ipath) that have been moved to
>>> drivers/staging...
>> 
>> Driver/staging isn't considered in tree for global API change
>> perspective, so I didn't bother with all these staging drivers.
> 
> The kbuild test bot will probably catch this.

Wondering if this means we'll have to drop ib_reg_phys_mr()
removal until Lustre gets around to removing their call sites
from the staging tree.


--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 7, 2015, 6:35 a.m. UTC | #7
On Thu, Aug 06, 2015 at 11:08:45PM +0530, Parav Pandit wrote:
> Do you see value in dividing ib_ud _wr into ib_ud_wr and ib_ud_gsi_wr
> to save 4 bytes?

For now I just wanted to split along the lines of the existing unions.
From looking at the various drivers splitting the GSI path might not be
a bad idea, but it's not a priority for me.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 7, 2015, 6:36 a.m. UTC | #8
On Thu, Aug 06, 2015 at 12:44:42PM -0500, Steve Wise wrote:
> > Driver/staging isn't considered in tree for global API change
> > perspective, so I didn't bother with all these staging drivers.
> 
> The kbuild test bot will probably catch this. 

It already did catch it for my tree, which is expected.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 7, 2015, 6:36 a.m. UTC | #9
On Thu, Aug 06, 2015 at 01:58:45PM -0400, Chuck Lever wrote:
> Wondering if this means we'll have to drop ib_reg_phys_mr()
> removal until Lustre gets around to removing their call sites
> from the staging tree.

Why?  Just because the buildbot catches it?

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 7, 2015, 7:05 a.m. UTC | #10
On Thu, Aug 06, 2015 at 07:46:44PM +0300, Sagi Grimberg wrote:
> I agree that this is a shame to keep in here for everyone to carry...
> The only driver I've seen supporting XRC is mlx5 with no consumers.
> 
> If people are reluctant to remove it, you can put it in ib_xrc_send_wr
> or something...

If'll send a patch to remove it, and then we can introduce
ib_xrc_send_wr once users show up.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chuck Lever III Aug. 7, 2015, 2:17 p.m. UTC | #11
On Aug 7, 2015, at 2:36 AM, Christoph Hellwig <hch@infradead.org> wrote:

> On Thu, Aug 06, 2015 at 01:58:45PM -0400, Chuck Lever wrote:
>> Wondering if this means we'll have to drop ib_reg_phys_mr()
>> removal until Lustre gets around to removing their call sites
>> from the staging tree.
> 
> Why?  Just because the buildbot catches it?

If bot barking doesn't bother anyone, then I'll keep the removal patch.
For some such a complaint might be grounds for rejecting the patch.


--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 7, 2015, 2:19 p.m. UTC | #12
On Fri, Aug 07, 2015 at 10:17:18AM -0400, Chuck Lever wrote:
> If bot barking doesn't bother anyone, then I'll keep the removal patch.
> For some such a complaint might be grounds for rejecting the patch.

If it's (a) in tree proper and (b) not one of the rare false positives I
would consider it a reason for rejection as well.  But this is the
staging tree we're talking about.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Wise Aug. 7, 2015, 6:56 p.m. UTC | #13
On 8/6/2015 11:24 AM, Christoph Hellwig wrote:
> I've pushed out a new version.  Updates:
>
>   - the ib_recv_wr change Bart notices has been fixed.
>   - iser and isert have been converted
>   - the handling of the embedded WR in the qib software queue entry
>     has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.
>
> The full patch will be too much for the list again, so here is the
> git commit:
>
> http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71
>

This tests ok over iwarp/cxgb4 using NFSRDMA and user mode RDMA apps.

Tested-by: Steve Wise <swise@opengridcomputing.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bart Van Assche Aug. 10, 2015, 11:44 p.m. UTC | #14
On 08/06/2015 09:24 AM, Christoph Hellwig wrote:
> I've pushed out a new version.  Updates:
>
>   - the ib_recv_wr change Bart notices has been fixed.
>   - iser and isert have been converted
>   - the handling of the embedded WR in the qib software queue entry
>     has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.
>
> The full patch will be too much for the list again, so here is the
> git commit:
>
> http://git.infradead.org/users/hch/scsi.git/commitdiff/a0027ed00fc3ae2686d8a843a724b50597115a71
>
> ib_vers.h diff below:
 > [ ... ]

For the SRP initiator and target changes:

Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sagi Grimberg Aug. 12, 2015, 5:24 p.m. UTC | #15
On 8/6/2015 7:24 PM, Christoph Hellwig wrote:
> I've pushed out a new version.  Updates:
>
>   - the ib_recv_wr change Bart notices has been fixed.
>   - iser and isert have been converted
>   - the handling of the embedded WR in the qib software queue entry
>     has been fixed.
>
> Which means we're basically done now and the patch could use
> broader testing.

This went very smooth with iser, isert and ipoib...

You can add:

Tested-by: Sagi Grimberg <sagig@mellanox.com>

Just a nit that I've noticed, in mlx4 set_fmr_seg params are not
aligned to the parenthesis (maybe in other locations too but I haven't
noticed such...)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Doug Ledford Aug. 13, 2015, 1:45 a.m. UTC | #16
On 08/07/2015 10:19 AM, Christoph Hellwig wrote:
> On Fri, Aug 07, 2015 at 10:17:18AM -0400, Chuck Lever wrote:
>> If bot barking doesn't bother anyone, then I'll keep the removal patch.
>> For some such a complaint might be grounds for rejecting the patch.
> 
> If it's (a) in tree proper and (b) not one of the rare false positives I
> would consider it a reason for rejection as well.  But this is the
> staging tree we're talking about.

I want to put my $.02 in on this.  The staging tree has meant different
things over time.  In particular, it didn't used to be a place where "to
be removed" drivers went to hang out for a few releases before finally
being removed entirely.  I suspect this policy of not touching staging
drivers with tree wide API changes pre-dates the policy of using staging
as an intermediate step in removal.  It would seem to me that saying we
are going to remove a driver in 4.6 and moving it to staging for that
purpose, and then immediately breaking it so it doesn't compile, is not
compatible with the goals of orderly device driver removal (namely:
alerting people to the upcoming change, waiting a reasonable period of
time for objections/feedback, and then removing the driver if no one
brings forth a case for it to stay in the kernel).  It effectively
becomes an immediate removal.  For that reason, I can't say that I agree
with this policy of skipping staging drivers for API updates, at least
as it applies to drivers that were in the tree proper and are in staging
now as part of their orderly removal process.

I can't say as I really agree with the policy for drivers coming in
through staging either unless the authors of the driver are allowing it
to languish and not pursuing their TODO list.

In any case, I don't expect to have stuff from the RDMA core in staging
for an extended amount of time.  But right now there is, and for the way
I'm using the staging area, *I* care if your patch breaks the drivers
that are there.
Chuck Lever III Aug. 13, 2015, 2:24 a.m. UTC | #17
> On Aug 12, 2015, at 6:45 PM, Doug Ledford <dledford@redhat.com> wrote:
> 
>> On 08/07/2015 10:19 AM, Christoph Hellwig wrote:
>>> On Fri, Aug 07, 2015 at 10:17:18AM -0400, Chuck Lever wrote:
>>> If bot barking doesn't bother anyone, then I'll keep the removal patch.
>>> For some such a complaint might be grounds for rejecting the patch.
>> 
>> If it's (a) in tree proper and (b) not one of the rare false positives I
>> would consider it a reason for rejection as well.  But this is the
>> staging tree we're talking about.
> 
> I want to put my $.02 in on this.  The staging tree has meant different
> things over time.  In particular, it didn't used to be a place where "to
> be removed" drivers went to hang out for a few releases before finally
> being removed entirely.  I suspect this policy of not touching staging
> drivers with tree wide API changes pre-dates the policy of using staging
> as an intermediate step in removal.  It would seem to me that saying we
> are going to remove a driver in 4.6 and moving it to staging for that
> purpose, and then immediately breaking it so it doesn't compile, is not
> compatible with the goals of orderly device driver removal (namely:
> alerting people to the upcoming change, waiting a reasonable period of
> time for objections/feedback, and then removing the driver if no one
> brings forth a case for it to stay in the kernel).  It effectively
> becomes an immediate removal.  For that reason, I can't say that I agree
> with this policy of skipping staging drivers for API updates, at least
> as it applies to drivers that were in the tree proper and are in staging
> now as part of their orderly removal process.
> 
> I can't say as I really agree with the policy for drivers coming in
> through staging either unless the authors of the driver are allowing it
> to languish and not pursuing their TODO list.
> 
> In any case, I don't expect to have stuff from the RDMA core in staging
> for an extended amount of time.  But right now there is, and for the way
> I'm using the staging area, *I* care if your patch breaks the drivers
> that are there.

That makes sense, but you already Acked the change that breaks Lustre, and it's going in through the NFS tree. Are you changing that to a NAK?--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 13, 2015, 5:54 a.m. UTC | #18
On Wed, Aug 12, 2015 at 07:24:44PM -0700, Chuck Lever wrote:
> That makes sense, but you already Acked the change that breaks Lustre,
> and it's going in through the NFS tree. Are you changing that to a NAK?

It seems like Doug was mostly concened about to be removed drivers.
I defintively refuse to fix Lustre for anything I tough because it's
such a giant mess with uses just about every major subsystem in
an incorrect way.

Doug:  was your mail a request to fix up the two de-staged drivers?
I'm happy to do that if you're fine with the patch in general.  amso1100
should be trivial anyway, while ipath is a mess, just like the new intel
driver with the third copy of the soft ib stack.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Doug Ledford Aug. 13, 2015, 1:07 p.m. UTC | #19
On 08/13/2015 01:54 AM, Christoph Hellwig wrote:
> On Wed, Aug 12, 2015 at 07:24:44PM -0700, Chuck Lever wrote:
>> That makes sense, but you already Acked the change that breaks Lustre,
>> and it's going in through the NFS tree. Are you changing that to a NAK?

No.  Lustre fits in my "languishing in the staging tree" category.

> It seems like Doug was mostly concened about to be removed drivers.
> I defintively refuse to fix Lustre for anything I tough because it's
> such a giant mess with uses just about every major subsystem in
> an incorrect way.
> 
> Doug:  was your mail a request to fix up the two de-staged drivers?
> I'm happy to do that if you're fine with the patch in general.  amso1100
> should be trivial anyway, while ipath is a mess, just like the new intel
> driver with the third copy of the soft ib stack.

Correct.
Christoph Hellwig Aug. 13, 2015, 3:38 p.m. UTC | #20
On Wed, Aug 12, 2015 at 08:24:49PM +0300, Sagi Grimberg wrote:
> Just a nit that I've noticed, in mlx4 set_fmr_seg params are not
> aligned to the parenthesis (maybe in other locations too but I haven't
> noticed such...)

This is just using a normal two tab indent for continued function
parameters..
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 13, 2015, 4:04 p.m. UTC | #21
On Thu, Aug 13, 2015 at 09:07:14AM -0400, Doug Ledford wrote:
> > Doug:  was your mail a request to fix up the two de-staged drivers?
> > I'm happy to do that if you're fine with the patch in general.  amso1100
> > should be trivial anyway, while ipath is a mess, just like the new intel
> > driver with the third copy of the soft ib stack.
> 
> Correct.

http://git.infradead.org/users/hch/rdma.git/commitdiff/efb2b0f21645b9caabcce955481ab6966e52ad90

contains the updates for ipath and amso1100, as well as the reviewed-by
and tested-by tags.

Note that for now I've skipped the new intel hfi1 driver as updating
two of the soft ib codebases already was tiresome enough.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chuck Lever III Aug. 13, 2015, 4:46 p.m. UTC | #22
On Aug 13, 2015, at 9:04 AM, Christoph Hellwig <hch@infradead.org> wrote:

> On Thu, Aug 13, 2015 at 09:07:14AM -0400, Doug Ledford wrote:
>>> Doug:  was your mail a request to fix up the two de-staged drivers?
>>> I'm happy to do that if you're fine with the patch in general.  amso1100
>>> should be trivial anyway, while ipath is a mess, just like the new intel
>>> driver with the third copy of the soft ib stack.
>> 
>> Correct.
> 
> http://git.infradead.org/users/hch/rdma.git/commitdiff/efb2b0f21645b9caabcce955481ab6966e52ad90
> 
> contains the updates for ipath and amso1100, as well as the reviewed-by
> and tested-by tags.
> 
> Note that for now I've skipped the new intel hfi1 driver as updating
> two of the soft ib codebases already was tiresome enough.

This looks like a straightforward mechanical change. For the
hunks under net/sunrpc/xprtrdma/ :

Reviewed-by: Chuck Lever <chuck.lever@oracle.com>

--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jason Gunthorpe Aug. 13, 2015, 5:22 p.m. UTC | #23
On Thu, Aug 13, 2015 at 09:04:39AM -0700, Christoph Hellwig wrote:
> On Thu, Aug 13, 2015 at 09:07:14AM -0400, Doug Ledford wrote:
> > > Doug:  was your mail a request to fix up the two de-staged drivers?
> > > I'm happy to do that if you're fine with the patch in general.  amso1100
> > > should be trivial anyway, while ipath is a mess, just like the new intel
> > > driver with the third copy of the soft ib stack.
> > 
> > Correct.
> 
> http://git.infradead.org/users/hch/rdma.git/commitdiff/efb2b0f21645b9caabcce955481ab6966e52ad90
> 
> contains the updates for ipath and amso1100, as well as the reviewed-by
> and tested-by tags.

The uverbs change needs to drop/move the original kmalloc:

		next = kmalloc(ALIGN(sizeof *next, sizeof (struct ib_sge)) +
			       user_wr->num_sge * sizeof (struct ib_sge),
			       GFP_KERNEL);

It looks like it is leaking that allocation right now. Every path
replaces next with the result of alloc_mr..

Noticed a couple of trailing whitespaces too..

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 13, 2015, 5:53 p.m. UTC | #24
On Thu, Aug 13, 2015 at 11:22:34AM -0600, Jason Gunthorpe wrote:
> The uverbs change needs to drop/move the original kmalloc:
> 
> 		next = kmalloc(ALIGN(sizeof *next, sizeof (struct ib_sge)) +
> 			       user_wr->num_sge * sizeof (struct ib_sge),
> 			       GFP_KERNEL);
> 
> It looks like it is leaking that allocation right now. Every path
> replaces next with the result of alloc_mr..

Thanks.  It should be come and indeed was in my first version.  Not
sure how it sneaked in during a rebase.

> Noticed a couple of trailing whitespaces too..

checkpatch found two of them, which I've fixed now.

New version at:

http://git.infradead.org/users/hch/rdma.git/commitdiff/5d7e6fa563dae32d4b6f63e29e3795717a545f11

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jason Gunthorpe Aug. 13, 2015, 6:01 p.m. UTC | #25
On Thu, Aug 13, 2015 at 10:53:54AM -0700, Christoph Hellwig wrote:
> http://git.infradead.org/users/hch/rdma.git/commitdiff/5d7e6fa563dae32d4b6f63e29e3795717a545f11

For the core bits:

Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Hellwig Aug. 17, 2015, 7:20 a.m. UTC | #26
On Thu, Aug 13, 2015 at 09:04:39AM -0700, Christoph Hellwig wrote:
> > > I'm happy to do that if you're fine with the patch in general.  amso1100
> > > should be trivial anyway, while ipath is a mess, just like the new intel
> > > driver with the third copy of the soft ib stack.
> > 
> > Correct.
> 
> http://git.infradead.org/users/hch/rdma.git/commitdiff/efb2b0f21645b9caabcce955481ab6966e52ad90
> 
> contains the updates for ipath and amso1100, as well as the reviewed-by
> and tested-by tags.
> 
> Note that for now I've skipped the new intel hfi1 driver as updating
> two of the soft ib codebases already was tiresome enough.

Doug, is this good enough for merging?

http://git.infradead.org/users/hch/rdma.git/shortlog/refs/heads/wr-cleanup

is my always uptodate branch, it has collected all the reviews and
tested-by tag I got on the list.

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 0940051..2f2efdd 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1100,54 +1100,94 @@  struct ib_send_wr {
 		__be32		imm_data;
 		u32		invalidate_rkey;
 	} ex;
-	union {
-		struct {
-			u64	remote_addr;
-			u32	rkey;
-		} rdma;
-		struct {
-			u64	remote_addr;
-			u64	compare_add;
-			u64	swap;
-			u64	compare_add_mask;
-			u64	swap_mask;
-			u32	rkey;
-		} atomic;
-		struct {
-			struct ib_ah *ah;
-			void   *header;
-			int     hlen;
-			int     mss;
-			u32	remote_qpn;
-			u32	remote_qkey;
-			u16	pkey_index; /* valid for GSI only */
-			u8	port_num;   /* valid for DR SMPs on switch only */
-		} ud;
-		struct {
-			u64				iova_start;
-			struct ib_fast_reg_page_list   *page_list;
-			unsigned int			page_shift;
-			unsigned int			page_list_len;
-			u32				length;
-			int				access_flags;
-			u32				rkey;
-		} fast_reg;
-		struct {
-			struct ib_mw            *mw;
-			/* The new rkey for the memory window. */
-			u32                      rkey;
-			struct ib_mw_bind_info   bind_info;
-		} bind_mw;
-		struct {
-			struct ib_sig_attrs    *sig_attrs;
-			struct ib_mr	       *sig_mr;
-			int			access_flags;
-			struct ib_sge	       *prot;
-		} sig_handover;
-	} wr;
 	u32			xrc_remote_srq_num;	/* XRC TGT QPs only */
 };
 
+struct ib_rdma_wr {
+	struct ib_send_wr	wr;
+	u64			remote_addr;
+	u32			rkey;
+};
+
+static inline struct ib_rdma_wr *rdma_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_rdma_wr, wr);
+}
+
+struct ib_atomic_wr {
+	struct ib_send_wr	wr;
+	u64			remote_addr;
+	u64			compare_add;
+	u64			swap;
+	u64			compare_add_mask;
+	u64			swap_mask;
+	u32			rkey;
+};
+
+static inline struct ib_atomic_wr *atomic_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_atomic_wr, wr);
+}
+
+struct ib_ud_wr {
+	struct ib_send_wr	wr;
+	struct ib_ah		*ah;
+	void			*header;
+	int			hlen;
+	int			mss;
+	u32			remote_qpn;
+	u32			remote_qkey;
+	u16			pkey_index; /* valid for GSI only */
+	u8			port_num;   /* valid for DR SMPs on switch only */
+};
+
+static inline struct ib_ud_wr *ud_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_ud_wr, wr);
+}
+
+struct ib_fast_reg_wr {
+	struct ib_send_wr	wr;
+	u64			iova_start;
+	struct ib_fast_reg_page_list *page_list;
+	unsigned int		page_shift;
+	unsigned int		page_list_len;
+	u32			length;
+	int			access_flags;
+	u32			rkey;
+};
+
+static inline struct ib_fast_reg_wr *fast_reg_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_fast_reg_wr, wr);
+}
+
+struct ib_bind_mw_wr {
+	struct ib_send_wr	wr;
+	struct ib_mw		*mw;
+	/* The new rkey for the memory window. */
+	u32			rkey;
+	struct ib_mw_bind_info	bind_info;
+};
+
+static inline struct ib_bind_mw_wr *bind_mw_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_bind_mw_wr, wr);
+}
+
+struct ib_sig_handover_wr {
+	struct ib_send_wr	wr;
+	struct ib_sig_attrs    *sig_attrs;
+	struct ib_mr	       *sig_mr;
+	int			access_flags;
+	struct ib_sge	       *prot;
+};
+
+static inline struct ib_sig_handover_wr *sig_handover_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_sig_handover_wr, wr);
+}
+
 struct ib_recv_wr {
 	struct ib_recv_wr      *next;
 	u64			wr_id;