* Race condition? /tmp/net.ifaces and pre-pivot
@ 2009-07-23 21:37 Warren Togami
[not found] ` <4A68D828.40506-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Warren Togami @ 2009-07-23 21:37 UTC (permalink / raw)
To: initramfs
I am running into an odd issue that is supposedto be impossible.
pre-pivot/20write-ifcfg.sh is often being run but fails to write
net.*.ifcfg files because /tmp/net.ifaces does not exist at that moment.
The mount was otherwise successful, and rdbreak before switch_root
sees that /tmp/net.ifaces exists.
With plain "root=dhcp" with a NFS rootfs, it seems to never happen.
However with "root=dhcp bridge", perhaps 25-75% of the time it is
failing to write ifcfg files.
Some kind of race going on? An inspection of the code seems to me that
/tmp/net.ifaces should have already been created prior to pre-pivot?
Warren Togami
wtogami-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Race condition? /tmp/net.ifaces and pre-pivot
[not found] ` <4A68D828.40506-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2009-07-24 3:22 ` Warren Togami
[not found] ` <4A6928EE.6090707-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-08-07 7:35 ` Seewer Philippe
1 sibling, 1 reply; 4+ messages in thread
From: Warren Togami @ 2009-07-24 3:22 UTC (permalink / raw)
To: initramfs
On 07/23/2009 05:37 PM, Warren Togami wrote:
> I am running into an odd issue that is supposedto be impossible.
>
> pre-pivot/20write-ifcfg.sh is often being run but fails to write
> net.*.ifcfg files because /tmp/net.ifaces does not exist at that moment.
> The mount was otherwise successful, and rdbreak before switch_root sees
> that /tmp/net.ifaces exists.
>
> With plain "root=dhcp" with a NFS rootfs, it seems to never happen.
> However with "root=dhcp bridge", perhaps 25-75% of the time it is
> failing to write ifcfg files.
>
> Some kind of race going on? An inspection of the code seems to me that
> /tmp/net.ifaces should have already been created prior to pre-pivot?
>
<dillow> warren: if you don't have any ip= lines on the command line,
/tmp/net.ifaces gets created by netroot after the handler successfully
completes
<dillow> warren: I think that races with the check loop in init
<dillow> warren: single processor box?
<dillow> warren: it looks like you could get scheduled away from netroot
and the init command loop could notice that root is mounted and make it
to the pre-pivot hook during a single quantum
<dillow> warren: as a test, you could move the line '[ ! -f
/tmp/net.ifaces ] && echo $netif > /tmp/net.ifaces' in netroot in front
of the handler call
<dillow> warren: that should work around your issue. I don't think it is
a long term fix, though -- the multiple NIC case would need some work to
be clean
<dillow> warren: this would only affect NFS, as the other devices would
create /dev/root and exit that way to the mount loop
<dillow> so they wouldn't sail through the mount loop due to the
existence of $NEWROOT/proc
<warren> dillow: single processor qemu VM
<warren> dillow: so this race was happening before, only we didn't
notice it since we weren't relying on anything
<warren> dillow: any suggestions of a substitution that wont break dash?
<dillow> warren: I think it got introduced with the initqueue stuff or a
combination of that and changing the loops
Harald, any ideas?
Warren Togami
wtogami-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Race condition? /tmp/net.ifaces and pre-pivot
[not found] ` <4A6928EE.6090707-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2009-07-24 7:21 ` Harald Hoyer
0 siblings, 0 replies; 4+ messages in thread
From: Harald Hoyer @ 2009-07-24 7:21 UTC (permalink / raw)
To: Warren Togami; +Cc: initramfs
On 07/24/2009 05:22 AM, Warren Togami wrote:
> On 07/23/2009 05:37 PM, Warren Togami wrote:
>> I am running into an odd issue that is supposedto be impossible.
>>
>> pre-pivot/20write-ifcfg.sh is often being run but fails to write
>> net.*.ifcfg files because /tmp/net.ifaces does not exist at that moment.
>> The mount was otherwise successful, and rdbreak before switch_root sees
>> that /tmp/net.ifaces exists.
>>
>> With plain "root=dhcp" with a NFS rootfs, it seems to never happen.
>> However with "root=dhcp bridge", perhaps 25-75% of the time it is
>> failing to write ifcfg files.
>>
>> Some kind of race going on? An inspection of the code seems to me that
>> /tmp/net.ifaces should have already been created prior to pre-pivot?
>>
>
> <dillow> warren: if you don't have any ip= lines on the command line,
> /tmp/net.ifaces gets created by netroot after the handler successfully
> completes
> <dillow> warren: I think that races with the check loop in init
> <dillow> warren: single processor box?
> <dillow> warren: it looks like you could get scheduled away from netroot
> and the init command loop could notice that root is mounted and make it
> to the pre-pivot hook during a single quantum
> <dillow> warren: as a test, you could move the line '[ ! -f
> /tmp/net.ifaces ] && echo $netif > /tmp/net.ifaces' in netroot in front
> of the handler call
> <dillow> warren: that should work around your issue. I don't think it is
> a long term fix, though -- the multiple NIC case would need some work to
> be clean
> <dillow> warren: this would only affect NFS, as the other devices would
> create /dev/root and exit that way to the mount loop
> <dillow> so they wouldn't sail through the mount loop due to the
> existence of $NEWROOT/proc
> <warren> dillow: single processor qemu VM
> <warren> dillow: so this race was happening before, only we didn't
> notice it since we weren't relying on anything
> <warren> dillow: any suggestions of a substitution that wont break dash?
> <dillow> warren: I think it got introduced with the initqueue stuff or a
> combination of that and changing the loops
>
> Harald, any ideas?
if you rely on a udev event to complete the solution is to place a
udevadm settle
before doing anything
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Race condition? /tmp/net.ifaces and pre-pivot
[not found] ` <4A68D828.40506-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-07-24 3:22 ` Warren Togami
@ 2009-08-07 7:35 ` Seewer Philippe
1 sibling, 0 replies; 4+ messages in thread
From: Seewer Philippe @ 2009-08-07 7:35 UTC (permalink / raw)
To: Warren Togami; +Cc: initramfs
Warren Togami wrote:
> I am running into an odd issue that is supposedto be impossible.
>
> pre-pivot/20write-ifcfg.sh is often being run but fails to write
> net.*.ifcfg files because /tmp/net.ifaces does not exist at that moment.
> The mount was otherwise successful, and rdbreak before switch_root sees
> that /tmp/net.ifaces exists.
>
> With plain "root=dhcp" with a NFS rootfs, it seems to never happen.
> However with "root=dhcp bridge", perhaps 25-75% of the time it is
> failing to write ifcfg files.
>
> Some kind of race going on? An inspection of the code seems to me that
> /tmp/net.ifaces should have already been created prior to pre-pivot?
This is not entirely unexpected due to the asynchronousness of
udev-events and the new initqueue/mount-loop.
The correct solution would be to move the whole call of netroot to the
initqueue, which we'll have to do anyway when we start handling
interface timeouts with arp.
>
> Warren Togami
> wtogami-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
> --
> To unsubscribe from this list: send the line "unsubscribe initramfs" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-08-07 7:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-23 21:37 Race condition? /tmp/net.ifaces and pre-pivot Warren Togami
[not found] ` <4A68D828.40506-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-07-24 3:22 ` Warren Togami
[not found] ` <4A6928EE.6090707-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-07-24 7:21 ` Harald Hoyer
2009-08-07 7:35 ` Seewer Philippe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.