Hello,
On Wed, 30 Jul 2014, Alex Gartrell wrote:
> Thanks for your review!
>
> I've made most of the changes that you've asked for, just a couple
> quick questions before I submit v2.
>
>
> > This feature looks good to me.
> >
> > Such change should go first in net-next tree, after the change
> > for skb->encapsulation (net tree). So, probably, after some -rc
> > we can add this patchset.
> >
>
> SGTM
>
> > So, to summarize our plan:
> >
> > - we have sockopt and netlink interface
> >
> > - IPv6 is supported only on netlink interface
> >
> > - the sockopt structs can not be changed, eg.
> > struct ip_vs_dest_user in include/uapi/linux/ip_vs.h.
> >
> > - ipvsadm should allow different family (svc and dest) only for TUN
> > method
> >
> > - we can also encode somehow the tunnel mode in sync message, eg.
> > around the STYPE_F_INET6 value. May be this octet can become
> > tunnel/header type. This can be done later in another patchset.
> >
> > Comments for your patchset:
> >
> > Patch 1:
> > - please fix the dest->af = udest.af in __ip_vs_update_dest(),
> > so that this patch can compile and as result this fix will
> > disappear from patch 2:
> > - dest->af = udest.af;
> > + dest->af = udest->af;
>
> Ah, embarrassing. I thought I checked that this all compiled. Will do.
>
> > - __ip_vs_get_dest_entries() needs to skip dests with
> > dest->af != svc->af, we can not exports such dests to
> > sockopt users
>
> Yeah seems reasonable, I'll include a short comment as well
>
> > - too long comments, use scripts/checkpatch.pl
> > --strict /tmp/p1.diff
>
> Another amateur move. Thanks for the epointer
>
> > - everything else looks ok
> >
> > Patch 2:
> > - avoid error from patch 1 in __ip_vs_update_dest
> >
> > - errors from scripts/checkpatch.pl --strict /tmp/p2.diff
> >
> > Patch 3:
> > - in the "Destination %u/%s:%u still in trash, " message
> > we should use dest->af, not dest_af.
> >
> > Patch 4:
> > - we have to introduce u16 cp->daf, just below cp->protocol
>
> yeah makes sense
>
> > - as result, cp->af is for caddr and vaddr, cp->daf is for
> > cp->daddr, this is needed because sync protocol can create connections
> > with cp->dest = NULL, cp binds to dest later
>
> Agree that we should just create daf, but if we keep heterogeneous pools
> and sync distinct can we still run into this? (Just curious)
I think, in patch 7 ip_vs_bind_xmit and ip_vs_bind_xmit_v6
will simply crash when sync is used, without heterogeneous pools,
due to cp->dest dereference. So, it happens for synced conns.
> > - ip_vs_ftp.c uses ip_vs_conn_new, now it does not compile
>
> It appears that these are all IPv4 only, so I'll just use AF_INET and add a
> comment.
Yes, ip_vs_ftp still supports v4 only.
> > - Another file net/netfilter/xt_ipvs.c depends on IPVS
> > definitions but I think this patchset does not break it
> >
>
> Yeah, this still builds
>
> > Patch 5:
> > - note that dest address can not be changed, so if you see
> > reason this patch to exist the check in __ip_vs_update_dest
> > should be: if (add && udest->af != svc->af)
> >
>
> Well that definitely simplifies things. My plan is to add a
> BUG_ON(!add && udest->af != dest->af) -- more as documentation than
> anything.
The af,addr,port are the key we use to search dest,
it is silly to duplicate them as parameters just to support
such dest change, I think it can not happen.
> > - errors from scripts/checkpatch.pl --strict /tmp/p5.diff
> >
> > Patch 6:
> > - comment and code do not match
>
> What do you mean? This just removes a temporary "return -EINVAL" to keep
> the code sane.
This patch (6) changes only ip_vs_new_dest() but talks
about "sync" and "switch statement" ...
> > Patch 7:
> > - patch looks based on skb_checksum_help patch, the plan
> > is to base it after the offload change we are about to
> > send soon
>
> Yeah, nothing significant about that, I was planning to rebase it the patch
> when it lands.
I'll wait for comments about GSO for 1-2 days and will send
official patch.
> > - ip_vs_bind_xmit*: sync protocol does not guarantee that
> > cp->dest exists in all cases, we can not use cp->dest->af
> > because cp->dest can be NULL, we have to use cp->daf (from
> > patch 4)
>
> Fixed this
>
> >
> > - for ip_vs_prepare_tunneled_skb():
> > - usage of 'version' can be changed to 'af'
>
> I'm a little bit confused by this. In this case, we aren't passing in af.
> Since the caller doesn't really know (or care) what the type of the packet
> is it made sense to figure it out from the ipheader version. Do you mean
> that there's another function I should use to grab the address family from
> the skb or is it possible to get it from somewhere else?
We can use cp->af, cp->dest can be NULL (synced conn)
> > - __ip_vs_get_out_rt_v6 and __ip_vs_get_out_rt should
> > be changed to account header from both families for MTU check,
> > these checks happen for IP_VS_RT_MODE_TUNNEL
> >
>
> Yes this looks fairly significant. Unless you'll object I'll introduce
> this as a separate patch.
But in the same patchset, right?
> > - errors from scripts/checkpatch.pl --strict /tmp/p7.diff
> >
> > - looking at cp, set_tcp_state() can not know what family is used for
> > cp->daddr, we have to use cp->daf. We have to check the
> > cp->af usage everywhere.
> >
> > - I didn't fixed ip_vs_core.c logs yet
> >
> > I'm attaching some patches for your patchset. If it is
> > difficult for you to maintain them in the patchset, we can post
> > them later after your patchset, as separate patchset. For now you
> > can use them as reference. Or may be they should be inserted
> > at some point in your patchset, so that your patchset looks
> > correct if applied up to some patch.
>
> I'll add them to my patch set. Thank you for doing them!
Ok, thanks!
> > Let me know if you plan ipvsadm changes based on the
> > ipvsadm tree:
> >
>
> I have made the appropriate changes for this. It's a relatively
> straightforward patch. I can submit it at any time.
ok
Regards
--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|