Re: r228700 can't dhclient em0

2011-12-23 Thread Bjoern A. Zeeb

On 23. Dec 2011, at 01:40 , Doug Barton wrote:

 On 12/21/2011 23:20, Gleb Smirnoff wrote:
 On Wed, Dec 21, 2011 at 12:35:23PM -0800, Doug Barton wrote:
 
 D So does that mean that if I upgrade to the latest HEAD from a system
 D built before the ifconfig changes that when I reboot my network will
 D come up?
 
 Yes, older infconfig will work in head  r228571 || head  r228768.
 
 I just tried with r228122 and got the same result. dhclient errors out
 with can't find em0 although 'ifconfig em0' does produce results.

Which is due to getifaddrs() most likely; please go back and read up the other
half of the thread; I am working on this.

/bz

-- 
Bjoern A. Zeeb You have to have visions!
 Stop bit received. Insert coin for new address family.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-23 Thread Doug Barton
On 12/23/2011 01:14, Bjoern A. Zeeb wrote:
 
 On 23. Dec 2011, at 01:40 , Doug Barton wrote:
 
 On 12/21/2011 23:20, Gleb Smirnoff wrote:
 On Wed, Dec 21, 2011 at 12:35:23PM -0800, Doug Barton wrote:

 D So does that mean that if I upgrade to the latest HEAD from a system
 D built before the ifconfig changes that when I reboot my network will
 D come up?

 Yes, older infconfig will work in head  r228571 || head  r228768.

 I just tried with r228122 and got the same result. dhclient errors out
 with can't find em0 although 'ifconfig em0' does produce results.
 
 Which is due to getifaddrs() most likely; please go back and read up the other
 half of the thread;

I read the whole thread. It's my thread after all. :)  I was taking Gleb
at his word when he answered my question with yes.

 I am working on this.

Excellent. ETA? Normally I wouldn't be worried about updating, but I
want to try the newly updated code to recognize music CDs. If it works I
would like to encourage re@ to include it in the new release since I
think it will save our users a lot of pain.


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-22 Thread Doug Barton
On 12/21/2011 23:20, Gleb Smirnoff wrote:
 I'm afraid, if we would try to document every kernel-userland API/ABI
 change in head/ in the UPDATING, then the file will grow extremely quickly,
 and still many issues will be forgotten to be added there.

That doesn't mean we shouldn't do our best to make sure that they are
documented. This is particularly true regarding changes that will affect
the network on reboot.

In any case, thanks for the info, and for your hard work. :)


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-22 Thread Doug Barton
On 12/21/2011 23:20, Gleb Smirnoff wrote:
 On Wed, Dec 21, 2011 at 12:35:23PM -0800, Doug Barton wrote:

 D So does that mean that if I upgrade to the latest HEAD from a system
 D built before the ifconfig changes that when I reboot my network will
 D come up?
 
 Yes, older infconfig will work in head  r228571 || head  r228768.

I just tried with r228122 and got the same result. dhclient errors out
with can't find em0 although 'ifconfig em0' does produce results.

I'm also not sure what you meant by head  r228768 above, since we're
only up to r228824 in total so far. Maybe your time machine works better
than mine? :)


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-22 Thread Gleb Smirnoff
On Thu, Dec 22, 2011 at 05:40:03PM -0800, Doug Barton wrote:
D  D So does that mean that if I upgrade to the latest HEAD from a system
D  D built before the ifconfig changes that when I reboot my network will
D  D come up?
D  
D  Yes, older infconfig will work in head  r228571 || head  r228768.
D 
D I just tried with r228122 and got the same result. dhclient errors out
D with can't find em0 although 'ifconfig em0' does produce results.

The dhclient issue you faced isn't related to my new CARP commit either
my SIOCAIFADDR work. I'm sorry that we flooded your email thread with
the discussion. The breakage from r228571 looks like:

# ifconfig em0 10.0.0.1
ioctl (SIOCAIFADDR): Invalid argument
#

The breakage from r228313 looks like:

  Starting dhclient.
  ifconfig: ioctl (SIOCAIFADDR): File exists

D I'm also not sure what you meant by head  r228768 above, since we're
D only up to r228824 in total so far. Maybe your time machine works better
D than mine? :)

I don't see any problem. r228824  r228768, isn't it?

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-22 Thread Doug Barton
On 12/22/2011 23:22, Gleb Smirnoff wrote:
 On Thu, Dec 22, 2011 at 05:40:03PM -0800, Doug Barton wrote:
 D  D So does that mean that if I upgrade to the latest HEAD from a system
 D  D built before the ifconfig changes that when I reboot my network will
 D  D come up?
 D  
 D  Yes, older infconfig will work in head  r228571 || head  r228768.
 D 
 D I just tried with r228122 and got the same result. dhclient errors out
 D with can't find em0 although 'ifconfig em0' does produce results.
 
 The dhclient issue you faced isn't related to my new CARP commit either
 my SIOCAIFADDR work. I'm sorry that we flooded your email thread with
 the discussion. The breakage from r228571 looks like:
 
 # ifconfig em0 10.0.0.1
 ioctl (SIOCAIFADDR): Invalid argument
 #
 
 The breakage from r228313 looks like:
 
   Starting dhclient.
   ifconfig: ioctl (SIOCAIFADDR): File exists

OK, thanks.

 D I'm also not sure what you meant by head  r228768 above, since we're
 D only up to r228824 in total so far. Maybe your time machine works better
 D than mine? :)
 
 I don't see any problem. r228824  r228768, isn't it?

D'oh ... I don't know how I missed that, moving too fast, pulled in too
many directions, etc.


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-21 Thread Gleb Smirnoff
  Brooks,

On Tue, Dec 20, 2011 at 07:52:41PM -0600, Brooks Davis wrote:
B While this is the documented path, it's not actually been required
B except in edge cases for ages (the last I can remember is a.out-elf).
B It's been long enough that I don't think we can really make people do
B it except for a short period of time in HEAD.  I believe it's
B unacceptable for a release to release upgrade.

I have provided API compatibility in r228768. I have tested it with an
ifconfig binary taken from 9.0 installation. I hope, this change
would satisfy you, and you won't say that We almost certainly need to
back r228571 out.

The in_control() and in6_control() are getting more and more hairy :(
I'd eager to remove the shim in the 11.x timeline.



Since subject mentions dhclient, I must notice that the dhclient-script
always relied on a bug in in_control(). The bug was fixed here:

http://svnweb.freebsd.org/base?view=revisionamp;revision=228313

Later the dhclient-script was fixed:

http://svnweb.freebsd.org/base?view=revisionamp;revision=228463

So, if we are claiming for an undocumented but important feature
that new kernel being capable to configure network with world from
a previous major release, then I should merge r228463 right now
to stable/9, and not merge r228313.

If I don't merge r228463 before 9.0-RELEASE is out, then in
2 years, 10.x-RELEASE kernel won't bring network up via DHCP with
world from 9.0-RELEASE. Thus, should I now either bribe re@ to push
r228463 prior to release, either back out the bugfix: r228463.

Also, backing out r228463 would require backing out a larger
work: r228455.

Hey, this policy greatly discourages hacking on bugs and new
features... :(

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-21 Thread Brooks Davis
On Wed, Dec 21, 2011 at 04:55:40PM +0400, Gleb Smirnoff wrote:
   Brooks,
 
 On Tue, Dec 20, 2011 at 07:52:41PM -0600, Brooks Davis wrote:
 B While this is the documented path, it's not actually been required
 B except in edge cases for ages (the last I can remember is a.out-elf).
 B It's been long enough that I don't think we can really make people do
 B it except for a short period of time in HEAD.  I believe it's
 B unacceptable for a release to release upgrade.
 
 I have provided API compatibility in r228768. I have tested it with an
 ifconfig binary taken from 9.0 installation. I hope, this change
 would satisfy you, and you won't say that We almost certainly need to
 back r228571 out.

Thank you!  I spoke too strongly there.  I was worried that we would 
end up in an untenable situation, but you appear to have resolved it.

 The in_control() and in6_control() are getting more and more hairy :(
 I'd eager to remove the shim in the 11.x timeline.



 Since subject mentions dhclient, I must notice that the dhclient-script
 always relied on a bug in in_control(). The bug was fixed here:
 
 http://svnweb.freebsd.org/base?view=revisionamp;revision=228313
 
 Later the dhclient-script was fixed:
 
 http://svnweb.freebsd.org/base?view=revisionamp;revision=228463
 
 So, if we are claiming for an undocumented but important feature
 that new kernel being capable to configure network with world from
 a previous major release, then I should merge r228463 right now
 to stable/9, and not merge r228313.
 
 If I don't merge r228463 before 9.0-RELEASE is out, then in
 2 years, 10.x-RELEASE kernel won't bring network up via DHCP with
 world from 9.0-RELEASE. Thus, should I now either bribe re@ to push
 r228463 prior to release, either back out the bugfix: r228463.

You and bz have convinced me that for the configuration tools tools this
change breaks, that it should be OK to have only supported 9.x releases
(or possibly even only the last 9.x release) be able to upgrade without
extra effort.  I took too strong a position to start out.

 Also, backing out r228463 would require backing out a larger
 work: r228455.
 
 Hey, this policy greatly discourages hacking on bugs and new
 features... :(

I hope we're approaching a more acceptable position...  I don't want to
discourage fixing bugs or adding features and more than having to deal
with users inevitably does.

-- Brooks


pgpNKlBWWf6s2.pgp
Description: PGP signature


Re: r228700 can't dhclient em0

2011-12-21 Thread Doug Barton
On 12/21/2011 4:55 AM, Gleb Smirnoff wrote:
   Brooks,
 
 On Tue, Dec 20, 2011 at 07:52:41PM -0600, Brooks Davis wrote:
 B While this is the documented path, it's not actually been required
 B except in edge cases for ages (the last I can remember is a.out-elf).
 B It's been long enough that I don't think we can really make people do
 B it except for a short period of time in HEAD.  I believe it's
 B unacceptable for a release to release upgrade.
 
 I have provided API compatibility in r228768. I have tested it with an
 ifconfig binary taken from 9.0 installation.

So does that mean that if I upgrade to the latest HEAD from a system
built before the ifconfig changes that when I reboot my network will
come up?

 I hope, this change
 would satisfy you, and you won't say that We almost certainly need to
 back r228571 out.

I think Brooks raised some really good points about backward
compatibility, but it sounds to me like you've addressed them. In any
case, my original concern was limited to Do we need an UPDATING entry? :)

 The in_control() and in6_control() are getting more and more hairy :(
 I'd eager to remove the shim in the 11.x timeline.
 
 
 
 Since subject mentions dhclient, I must notice that the dhclient-script
 always relied on a bug in in_control(). The bug was fixed here:
 
 http://svnweb.freebsd.org/base?view=revisionamp;revision=228313
 
 Later the dhclient-script was fixed:
 
 http://svnweb.freebsd.org/base?view=revisionamp;revision=228463

Right, I saw those go by, which is why I tried not to jump too hard on
ifconfig is broken since I wasn't sure which change was causing my
problem. It sounds like you're saying that perhaps I still won't be able
to get the network up after booting a new kernel without also installing
part of the new world? Perhaps an UPDATING entry is needed after all?

 Hey, this policy greatly discourages hacking on bugs and new
 features... :(

Learning how to innovate while providing backwards compatibility is a
valuable skill. Think of this as an opportunity. :)


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-21 Thread Jilles Tjoelker
On Tue, Dec 20, 2011 at 11:23:54PM +0400, Gleb Smirnoff wrote:
 Considering r228571: we need to specify vhid as additional address
 attribute in atomic manner, via one ioctl(). Address can't be first
 configured, and then made redundant, that would lead it to being
 static for a short period, sending gratutious ARP announcement, etc.

 An assumption that we are not allowed to change ABI for our own tools
 strongly discourages bringing in new features :(

Consider changing to a more flexible ABI that does not need to be broken
for new features. Examples are nmount(2)'s name-value pairs and GEOM's
XML topology descriptions.

This is initially more work and has poorer performance, but it may well
be worth it.

Process information reserves space in structures for future extension;
this is less flexible but performs better (which matters somewhat).

Another consideration is compatibility for 32-bit applications on 64-bit
kernels; a good ABI design will minimize the amount of code needed to
support that.

-- 
Jilles Tjoelker
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-21 Thread Gleb Smirnoff
On Wed, Dec 21, 2011 at 12:35:23PM -0800, Doug Barton wrote:
D  On Tue, Dec 20, 2011 at 07:52:41PM -0600, Brooks Davis wrote:
D  B While this is the documented path, it's not actually been required
D  B except in edge cases for ages (the last I can remember is a.out-elf).
D  B It's been long enough that I don't think we can really make people do
D  B it except for a short period of time in HEAD.  I believe it's
D  B unacceptable for a release to release upgrade.
D  
D  I have provided API compatibility in r228768. I have tested it with an
D  ifconfig binary taken from 9.0 installation.
D 
D So does that mean that if I upgrade to the latest HEAD from a system
D built before the ifconfig changes that when I reboot my network will
D come up?

Yes, older infconfig will work in head  r228571 || head  r228768.

D I think Brooks raised some really good points about backward
D compatibility, but it sounds to me like you've addressed them. In any
D case, my original concern was limited to Do we need an UPDATING entry? :)

r228571 put an updating entry.

D  Since subject mentions dhclient, I must notice that the dhclient-script
D  always relied on a bug in in_control(). The bug was fixed here:
D  
D  http://svnweb.freebsd.org/base?view=revisionamp;revision=228313
D  
D  Later the dhclient-script was fixed:
D  
D  http://svnweb.freebsd.org/base?view=revisionamp;revision=228463
D 
D Right, I saw those go by, which is why I tried not to jump too hard on
D ifconfig is broken since I wasn't sure which change was causing my
D problem. It sounds like you're saying that perhaps I still won't be able
D to get the network up after booting a new kernel without also installing
D part of the new world? Perhaps an UPDATING entry is needed after all?

On the second thought, I understand that r228313 breaks the dhclient-script
only for people running two DHCP interfaces. If one obtains default route,
then second can't run dhclient.

I'm afraid, if we would try to document every kernel-userland API/ABI
change in head/ in the UPDATING, then the file will grow extremely quickly,
and still many issues will be forgotten to be added there.

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Doug Barton
On 12/19/2011 05:24, Dimitry Andric wrote:
 On 2011-12-19 10:17, Doug Barton wrote:
 I updated to r228700 from 228122 and dhclient exits immediately saying
 that em0 doesn't exist. However ifconfig seems to disagree:


 em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu
 1500

 options=4219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO

  ether 00:24:e8:30:10:9b
  nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
  media: Ethernet autoselect (100baseTXfull-duplex)
  status: active
 lo0: flags=8049UP,LOOPBACK,RUNNING,MULTICAST  metric 0 mtu 16384
  options=3RXCSUM,TXCSUM
  nd6 options=21PERFORMNUD,AUTO_LINKLOCAL


 Interestingly, some of the options are different in that version, vs.
 the working version:

 em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu
 1500
 
 options=219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC

 ether 00:24:e8:30:10:9b
 inet 172.17.198.245 netmask 0x broadcast 172.17.255.255
 nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
 media: Ethernet autoselect (100baseTXfull-duplex)
 status: active
 
 I saw this too, when my kernel and userland were out of sync (e.g. just
 after installing a new kernel, and before installworld).  I suspect it
 is caused by the changes in r228571, which cause old ifconfig and
 dhclient to not recognize any interfaces.  I'm not 100% sure though...

I tried replacing both ifconfig and dhclient with the versions that were
built along with the new kernel, and that didn't work.

The traditional (and documented) upgrade process for many years has been
to boot the new kernel, make sure it's Ok, then update world. Obviously
something different is needed this time, so it needs an UPDATING entry
(assuming that all this is not just a bug).


Doug

-- 

[^L]

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price.  :)  http://SupersetSolutions.com/

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Dimitry Andric

On 2011-12-20 09:38, Doug Barton wrote:
...

I tried replacing both ifconfig and dhclient with the versions that were
built along with the new kernel, and that didn't work.


Looking at the changes in r228571, it seems they also affect libc, so
installing that is probably also needed.  Since all my test systems are
already upgraded to post-r228571, can somebody please confirm it works
after doing:

make -C $srcdir/lib/libc install
make -C $srcdir/sbin/dhclient install
make -C $srcdir/sbin/ifconfig install



The traditional (and documented) upgrade process for many years has been
to boot the new kernel, make sure it's Ok, then update world. Obviously
something different is needed this time, so it needs an UPDATING entry
(assuming that all this is not just a bug).


Well, if there *is* any method of getting your network working before
installworld, it should be added to UPDATING... :)
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Brooks Davis
On Tue, Dec 20, 2011 at 04:43:21PM +0100, Dimitry Andric wrote:
 On 2011-12-20 09:38, Doug Barton wrote:
 ...
  I tried replacing both ifconfig and dhclient with the versions that were
  built along with the new kernel, and that didn't work.
 
 Looking at the changes in r228571, it seems they also affect libc, so
 installing that is probably also needed.  Since all my test systems are
 already upgraded to post-r228571, can somebody please confirm it works
 after doing:
 
 make -C $srcdir/lib/libc install
 make -C $srcdir/sbin/dhclient install
 make -C $srcdir/sbin/ifconfig install

We almost certainly need to back r228571 out.  This is not an acceptable
upgrade path that would be acceptable historically.  Specially, we have
effectively promised users that an X.Y world will work on an X+1.0
kernel for most of history.  There are obvious exceptions to this, but
we have never allowed ifconfig to be one of them (I broke it many years
ago with my first attempt to add if_epoch to if_data and had to back
that out).

-- Brooks


pgpHMjvu8huYI.pgp
Description: PGP signature


Re: r228700 can't dhclient em0

2011-12-20 Thread Bjoern A. Zeeb
On 20. Dec 2011, at 16:51 , Brooks Davis wrote:

 On Tue, Dec 20, 2011 at 04:43:21PM +0100, Dimitry Andric wrote:
 On 2011-12-20 09:38, Doug Barton wrote:
 ...
 I tried replacing both ifconfig and dhclient with the versions that were
 built along with the new kernel, and that didn't work.
 
 Looking at the changes in r228571, it seems they also affect libc, so
 installing that is probably also needed.  Since all my test systems are
 already upgraded to post-r228571, can somebody please confirm it works
 after doing:
 
 make -C $srcdir/lib/libc install
 make -C $srcdir/sbin/dhclient install
 make -C $srcdir/sbin/ifconfig install
 

Depends on what you are trying to achieve.  There is more software affected.

 We almost certainly need to back r228571 out.  This is not an acceptable
 upgrade path that would be acceptable historically.  Specially, we have
 effectively promised users that an X.Y world will work on an X+1.0

I am not sure we supported that but X.latest to X+1.Y maybe?

 kernel for most of history.  There are obvious exceptions to this, but
 we have never allowed ifconfig to be one of them (I broke it many years
 ago with my first attempt to add if_epoch to if_data and had to back
 that out).

There is a couple of issues here.

The one that's on me is struct ifa_msghdr / getifaddrs() and the problem here
is that software incl. getifaddrs() doesn't use the in structs embedded lengths
in first place.  In if_data only a spare was reused, so no changes there.
That's certainly something we can and should fix in 9 before 10.0 will happen.
If that was the problem back then, it's certainly a pity it wasn't fixed as
we wouldn't have that problem these days then.  It would allow appending more
stuff.

For the appended int to ifaliasreq, in_aliasreq, in6_aliasreq I haven't
looked at the actual problem in the upgrade paths.  I guess it's not much
outside of ifconfig and probably ppp at least for the in_ in6_ variants.

Backing r228571 out completely will be harder with every change glebius commits
on top.  So if we think it'll be needed we should stop those commits now and
think first.

Just breaking carp and backing out the user space API parts is only a usable
path with a plan B on how to fix carp as well in the same go really.

Ingoring 9.0 - 10-CURRENT or an update on HEAD (neither of which is not a
normal user upgrade path an supported) I am still wondering how much of that
can be mitigated and if it might make sense to ponder that direction (also
for further future changes for sure to happen) to not be stuck forever?
I fear we'll see/want to do more of these kinds as more people look at the
if/ll layer...

/bz

-- 
Bjoern A. Zeeb You have to have visions!
 Stop bit received. Insert coin for new address 
family.___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Gleb Smirnoff
  Doug,

On Tue, Dec 20, 2011 at 12:38:53AM -0800, Doug Barton wrote:
D  I saw this too, when my kernel and userland were out of sync (e.g. just
D  after installing a new kernel, and before installworld).  I suspect it
D  is caused by the changes in r228571, which cause old ifconfig and
D  dhclient to not recognize any interfaces.  I'm not 100% sure though...
D 
D I tried replacing both ifconfig and dhclient with the versions that were
D built along with the new kernel, and that didn't work.

This shouldn't happen. If you did 'make buildworld buildkernel', then
your world in objdir would have binaries compiled with includes from
source tree, not from /usr/include, thus compatible with new kernel.

'make buildworld buildkernel' always produces compatible kernel and
worlds.

However, if you did 'cd /usr/src/sbin/ifconfig  make all install' then
that didn't work, since used headers from /usr/include.

D The traditional (and documented) upgrade process for many years has been
D to boot the new kernel, make sure it's Ok, then update world. Obviously
D something different is needed this time, so it needs an UPDATING entry
D (assuming that all this is not just a bug).

The documented one says 'Reboot into single user mode' and then install
new world. This path was not broken, since single user mode doesn't
imply network support.

The undocumented brave way 'make installkernel installworld  reboot'
works also, without any problems.

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Gleb Smirnoff
  Brooks,

On Tue, Dec 20, 2011 at 10:51:34AM -0600, Brooks Davis wrote:
B We almost certainly need to back r228571 out.  This is not an acceptable
B upgrade path that would be acceptable historically.  Specially, we have
B effectively promised users that an X.Y world will work on an X+1.0
B kernel for most of history.  There are obvious exceptions to this, but
B we have never allowed ifconfig to be one of them (I broke it many years
B ago with my first attempt to add if_epoch to if_data and had to back
B that out).

Pardon, where did we promise that? The applications in jail should work,
but not kernel configuration tools. The network facilities like ipfw
and pf has changed their ABI numerous times, making a new kernel
with older world inaccessible via network after boot.

Considering r228571: we need to specify vhid as additional address
attribute in atomic manner, via one ioctl(). Address can't be first
configured, and then made redundant, that would lead it to being
static for a short period, sending gratutious ARP announcement, etc.

An assumption that we are not allowed to change ABI for our own tools
strongly discourages bringing in new features :(

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Gleb Smirnoff
T An assumption that we are not allowed to change ABI for our own tools
T strongly discourages bringing in new features :(

P.S. Quoting documentation: The old world might not run correctly on the new 
kernel, so you must install the new world immediately upon installing the new 
kernel.

http://www.freebsd.org/doc/en/books/handbook/makeworld.html

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Brooks Davis
On Tue, Dec 20, 2011 at 06:48:40PM +, Bjoern A. Zeeb wrote:
 On 20. Dec 2011, at 16:51 , Brooks Davis wrote:
 
  On Tue, Dec 20, 2011 at 04:43:21PM +0100, Dimitry Andric wrote:
  On 2011-12-20 09:38, Doug Barton wrote:
  ...
  I tried replacing both ifconfig and dhclient with the versions that were
  built along with the new kernel, and that didn't work.
  
  Looking at the changes in r228571, it seems they also affect libc, so
  installing that is probably also needed.  Since all my test systems are
  already upgraded to post-r228571, can somebody please confirm it works
  after doing:
  
  make -C $srcdir/lib/libc install
  make -C $srcdir/sbin/dhclient install
  make -C $srcdir/sbin/ifconfig install
  
 
 Depends on what you are trying to achieve.  There is more software affected.
 
  We almost certainly need to back r228571 out.  This is not an acceptable
  upgrade path that would be acceptable historically.  Specially, we have
  effectively promised users that an X.Y world will work on an X+1.0
 
 I am not sure we supported that but X.latest to X+1.Y maybe?

That's the guarantee we've advertised, but the breakage we've supported
has mostly been for more narrowly focused tools that grovel around in
KVM space.  We've usually allowed an old world to work with only a few
shims (ps for instance).  Adding a new ifconfig to the list would be an
expansion there.

I also worry about the problem that once you've installed world there is
no easy way back.

  kernel for most of history.  There are obvious exceptions to this, but
  we have never allowed ifconfig to be one of them (I broke it many years
  ago with my first attempt to add if_epoch to if_data and had to back
  that out).
 
 There is a couple of issues here.
 
 The one that's on me is struct ifa_msghdr / getifaddrs() and the problem here
 is that software incl. getifaddrs() doesn't use the in structs embedded 
 lengths
 in first place.  In if_data only a spare was reused, so no changes there.
 That's certainly something we can and should fix in 9 before 10.0 will happen.
 If that was the problem back then, it's certainly a pity it wasn't fixed as
 we wouldn't have that problem these days then.  It would allow appending more
 stuff.

It would nice to fix, but allowing append to if_data means reving the
routing socket API.  I looked at it a bit and then gave up because there
were too many consumers (many out of tree), pretty much all of which
ignore the version number.  I didn't have time to rev the whole API
which is probably where the bar is for breaking the API.

 For the appended int to ifaliasreq, in_aliasreq, in6_aliasreq I haven't
 looked at the actual problem in the upgrade paths.  I guess it's not much
 outside of ifconfig and probably ppp at least for the in_ in6_ variants.

Those many have few enough consumers that we can come up with a
reasonable path forward.

 Backing r228571 out completely will be harder with every change glebius 
 commits
 on top.  So if we think it'll be needed we should stop those commits now and
 think first.
 
 Just breaking carp and backing out the user space API parts is only a usable
 path with a plan B on how to fix carp as well in the same go really.
 
 Ingoring 9.0 - 10-CURRENT or an update on HEAD (neither of which is not a
 normal user upgrade path an supported) I am still wondering how much of that
 can be mitigated and if it might make sense to ponder that direction (also
 for further future changes for sure to happen) to not be stuck forever?
 I fear we'll see/want to do more of these kinds as more people look at the
 if/ll layer...

If we can identify all the changed interfaces and we can teach 9-STABLE
to deal with them then this change is probably OK and we just need to
do the appropriate libc and ifconfig spackling and merge it.  We can't
let this slide too long though because the current state requires an
installkernel+installworld for all intents and purposes and that means
that if the kernel is broken you are dead in the water.

I agree we could really use some sort of way forward that increases our
abilty to make these sorts of changes.

- Brooks

 /bz
 
 -- 
 Bjoern A. Zeeb You have to have visions!
  Stop bit received. Insert coin for new address family.
 


pgp3SB4aWm9NV.pgp
Description: PGP signature


Re: r228700 can't dhclient em0

2011-12-20 Thread Gleb Smirnoff
On Tue, Dec 20, 2011 at 01:30:34PM -0600, Brooks Davis wrote:
B I also worry about the problem that once you've installed world there is
B no easy way back.

When working on the patch for last months I did numerous 'make installkernel
installworld' switching between a patched sources and unpatched, and everything
goes fine.

B If we can identify all the changed interfaces and we can teach 9-STABLE
B to deal with them then this change is probably OK and we just need to
B do the appropriate libc and ifconfig spackling and merge it.  We can't
B let this slide too long though because the current state requires an
B installkernel+installworld for all intents and purposes and that means
B that if the kernel is broken you are dead in the water.
B 
B I agree we could really use some sort of way forward that increases our
B abilty to make these sorts of changes.

Why 9-STABLE? This change isn't going to be merged.

-- 
Totus tuus, Glebius.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Bjoern A. Zeeb

On 20. Dec 2011, at 19:35 , Gleb Smirnoff wrote:

 On Tue, Dec 20, 2011 at 01:30:34PM -0600, Brooks Davis wrote:
 B I also worry about the problem that once you've installed world there is
 B no easy way back.
 
 When working on the patch for last months I did numerous 'make installkernel
 installworld' switching between a patched sources and unpatched, and 
 everything
 goes fine.

Yeah for the time being but we are talking about a 4-5 year timeframe.


 B If we can identify all the changed interfaces and we can teach 9-STABLE
 B to deal with them then this change is probably OK and we just need to
 B do the appropriate libc and ifconfig spackling and merge it.  We can't
 B let this slide too long though because the current state requires an
 B installkernel+installworld for all intents and purposes and that means
 B that if the kernel is broken you are dead in the water.
 B 
 B I agree we could really use some sort of way forward that increases our
 B abilty to make these sorts of changes.
 
 Why 9-STABLE? This change isn't going to be merged.

Because we'd need to make sure that fixes go backward to work with the
new stuff for the update path - the fixes, not your change.

/bz

-- 
Bjoern A. Zeeb You have to have visions!
 Stop bit received. Insert coin for new address family.

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-20 Thread Brooks Davis
On Tue, Dec 20, 2011 at 11:15:20PM +0400, Gleb Smirnoff wrote:
   Doug,
 
 On Tue, Dec 20, 2011 at 12:38:53AM -0800, Doug Barton wrote:
 D  I saw this too, when my kernel and userland were out of sync (e.g. just
 D  after installing a new kernel, and before installworld).  I suspect it
 D  is caused by the changes in r228571, which cause old ifconfig and
 D  dhclient to not recognize any interfaces.  I'm not 100% sure though...
 D 
 D I tried replacing both ifconfig and dhclient with the versions that were
 D built along with the new kernel, and that didn't work.
 
 This shouldn't happen. If you did 'make buildworld buildkernel', then
 your world in objdir would have binaries compiled with includes from
 source tree, not from /usr/include, thus compatible with new kernel.
 
 'make buildworld buildkernel' always produces compatible kernel and
 worlds.
 
 However, if you did 'cd /usr/src/sbin/ifconfig  make all install' then
 that didn't work, since used headers from /usr/include.
 
 D The traditional (and documented) upgrade process for many years has been
 D to boot the new kernel, make sure it's Ok, then update world. Obviously
 D something different is needed this time, so it needs an UPDATING entry
 D (assuming that all this is not just a bug).
 
 The documented one says 'Reboot into single user mode' and then install
 new world. This path was not broken, since single user mode doesn't
 imply network support.

While this is the documented path, it's not actually been required
except in edge cases for ages (the last I can remember is a.out-elf).
It's been long enough that I don't think we can really make people do
it except for a short period of time in HEAD.  I believe it's
unacceptable for a release to release upgrade.

 The undocumented brave way 'make installkernel installworld  reboot'
 works also, without any problems.

At least until someone screws up something else and you now can't use
kernel.old either.  This is somewhat ok for HEAD users, but I think we
should try harder to avoid this sort of situation.

-- Brooks


pgp309HM5Uyj4.pgp
Description: PGP signature


Re: r228700 can't dhclient em0

2011-12-20 Thread Brooks Davis
On Tue, Dec 20, 2011 at 11:23:54PM +0400, Gleb Smirnoff wrote:
   Brooks,
 
 On Tue, Dec 20, 2011 at 10:51:34AM -0600, Brooks Davis wrote:
 B We almost certainly need to back r228571 out.  This is not an acceptable
 B upgrade path that would be acceptable historically.  Specially, we have
 B effectively promised users that an X.Y world will work on an X+1.0
 B kernel for most of history.  There are obvious exceptions to this, but
 B we have never allowed ifconfig to be one of them (I broke it many years
 B ago with my first attempt to add if_epoch to if_data and had to back
 B that out).
 
 Pardon, where did we promise that? The applications in jail should work,
 but not kernel configuration tools. The network facilities like ipfw
 and pf has changed their ABI numerous times, making a new kernel
 with older world inaccessible via network after boot.

We've not promised it in writing, but by not breaking it for many years
we're created an effective promise IMO.

 Considering r228571: we need to specify vhid as additional address
 attribute in atomic manner, via one ioctl(). Address can't be first
 configured, and then made redundant, that would lead it to being
 static for a short period, sending gratutious ARP announcement, etc.
 
 An assumption that we are not allowed to change ABI for our own tools
 strongly discourages bringing in new features :(

I'm not saying we can't change the ABI.  I am saying that we should
make sure we can support a remote, console-less upgrade from what ever
9.x branches are practical to 10.0 in the average case.  We've set the
expectation that this will work and IMO it's a reasonable expectation.  
We've violated it in a few cases such as the emX-igbX fiasco, but by
and large most users have been able to do this.  I guess I'm ok with
dealing with this in HEAD, but I'm not OK with it for all upgrades from
9.x.

-- Brooks


pgpQrFZn3sdT9.pgp
Description: PGP signature


Re: r228700 can't dhclient em0

2011-12-19 Thread Dimitry Andric

On 2011-12-19 10:17, Doug Barton wrote:

I updated to r228700 from 228122 and dhclient exits immediately saying
that em0 doesn't exist. However ifconfig seems to disagree:


em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu 1500

options=4219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO
 ether 00:24:e8:30:10:9b
 nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
 media: Ethernet autoselect (100baseTXfull-duplex)
 status: active
lo0: flags=8049UP,LOOPBACK,RUNNING,MULTICAST  metric 0 mtu 16384
 options=3RXCSUM,TXCSUM
 nd6 options=21PERFORMNUD,AUTO_LINKLOCAL


Interestingly, some of the options are different in that version, vs.
the working version:

em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu 1500

options=219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC
ether 00:24:e8:30:10:9b
inet 172.17.198.245 netmask 0x broadcast 172.17.255.255
nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
media: Ethernet autoselect (100baseTXfull-duplex)
status: active


I saw this too, when my kernel and userland were out of sync (e.g. just
after installing a new kernel, and before installworld).  I suspect it
is caused by the changes in r228571, which cause old ifconfig and
dhclient to not recognize any interfaces.  I'm not 100% sure though...
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-19 Thread Garrett Cooper
On Dec 19, 2011, at 5:24 AM, Dimitry Andric d...@freebsd.org wrote:

 On 2011-12-19 10:17, Doug Barton wrote:
 I updated to r228700 from 228122 and dhclient exits immediately saying
 that em0 doesn't exist. However ifconfig seems to disagree:
 
 
 em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu 1500
 
 options=4219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO
 ether 00:24:e8:30:10:9b
 nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
 media: Ethernet autoselect (100baseTXfull-duplex)
 status: active
 lo0: flags=8049UP,LOOPBACK,RUNNING,MULTICAST  metric 0 mtu 16384
 options=3RXCSUM,TXCSUM
 nd6 options=21PERFORMNUD,AUTO_LINKLOCAL
 
 
 Interestingly, some of the options are different in that version, vs.
 the working version:
 
 em0: flags=8843UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST  metric 0 mtu 1500

 options=219bRXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC
ether 00:24:e8:30:10:9b
inet 172.17.198.245 netmask 0x broadcast 172.17.255.255
nd6 options=29PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL
media: Ethernet autoselect (100baseTXfull-duplex)
status: active
 
 I saw this too, when my kernel and userland were out of sync (e.g. just
 after installing a new kernel, and before installworld).  I suspect it
 is caused by the changes in r228571, which cause old ifconfig and
 dhclient to not recognize any interfaces.  I'm not 100% sure though.

This makes sense because the structs that describe addresses changed recently.
-Garrett___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: r228700 can't dhclient em0

2011-12-19 Thread Dimitry Andric

On 2011-12-19 17:36, Garrett Cooper wrote:

On Dec 19, 2011, at 5:24 AM, Dimitry Andricd...@freebsd.org  wrote:

On 2011-12-19 10:17, Doug Barton wrote:

I updated to r228700 from 228122 and dhclient exits immediately saying
that em0 doesn't exist. However ifconfig seems to disagree:

...

I saw this too, when my kernel and userland were out of sync (e.g. just
after installing a new kernel, and before installworld).  I suspect it
is caused by the changes in r228571, which cause old ifconfig and
dhclient to not recognize any interfaces.  I'm not 100% sure though.

This makes sense because the structs that describe addresses changed recently.


It may make sense, but it is very annoying when you want to installworld
over NFS, or have any other network access before or during
installation. :(
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org