diff options
Diffstat (limited to 'zarb-ml/mageia-dev/2012-February/011935.html')
-rw-r--r-- | zarb-ml/mageia-dev/2012-February/011935.html | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/zarb-ml/mageia-dev/2012-February/011935.html b/zarb-ml/mageia-dev/2012-February/011935.html new file mode 100644 index 000000000..a02b5f89f --- /dev/null +++ b/zarb-ml/mageia-dev/2012-February/011935.html @@ -0,0 +1,172 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> + <HEAD> + <TITLE> [Mageia-dev] Issues with dracut + </TITLE> + <LINK REL="Index" HREF="index.html" > + <LINK REL="made" HREF="mailto:mageia-dev%40mageia.org?Subject=Re%3A%20%5BMageia-dev%5D%20Issues%20with%20dracut&In-Reply-To=%3C4F3A8393.8010901%40colin.guthr.ie%3E"> + <META NAME="robots" CONTENT="index,nofollow"> + <META http-equiv="Content-Type" content="text/html; charset=us-ascii"> + <LINK REL="Previous" HREF="011709.html"> + <LINK REL="Next" HREF="011704.html"> + </HEAD> + <BODY BGCOLOR="#ffffff"> + <H1>[Mageia-dev] Issues with dracut</H1> + <B>Colin Guthrie</B> + <A HREF="mailto:mageia-dev%40mageia.org?Subject=Re%3A%20%5BMageia-dev%5D%20Issues%20with%20dracut&In-Reply-To=%3C4F3A8393.8010901%40colin.guthr.ie%3E" + TITLE="[Mageia-dev] Issues with dracut">mageia at colin.guthr.ie + </A><BR> + <I>Tue Feb 14 16:53:55 CET 2012</I> + <P><UL> + <LI>Previous message: <A HREF="011709.html">[Mageia-dev] Issues with dracut +</A></li> + <LI>Next message: <A HREF="011704.html">[Mageia-dev] stardict 3.0.3 +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#11935">[ date ]</a> + <a href="thread.html#11935">[ thread ]</a> + <a href="subject.html#11935">[ subject ]</a> + <a href="author.html#11935">[ author ]</a> + </LI> + </UL> + <HR> +<!--beginarticle--> +<PRE>'Twas brillig, and Colin Guthrie at 03/02/12 16:00 did gyre and gimble: +><i> 'Twas brillig, and David W. Hodgins at 03/02/12 08:04 did gyre and gimble: +</I>>><i> On Tue, 17 Jan 2012 07:22:30 -0500, Colin Guthrie +</I>>><i> <<A HREF="https://www.mageia.org/mailman/listinfo/mageia-dev">mageia at colin.guthr.ie</A>> wrote: +</I>>><i> +</I>>>><i> Are things working OK for you now with dracut or is it still busted? +</I>>><i> +</I>>><i> Just to clarify why I think the problem is happening on single +</I>>><i> core systems. +</I>>><i> +</I>>><i> On a multi-core system, the bash and udevd processes will be +</I>>><i> running on different cores. +</I>>><i> When the script executes the udev settle command, it continues +</I>>><i> to execute, so the loop checking to see if udev is done finds +</I>>><i> it isn't, so it then looks for/runs the initqueue jobs. +</I>>><i> +</I>>><i> On a single core system, the bash script waits for the settle +</I>>><i> command to finish, so then finds it's done, and exits without +</I>>><i> even trying to run the initqueue jobs. +</I>>><i> +</I>>><i> The patch in my prior message is effectively changing the script +</I>>><i> from "udev done or jobs done" to "udev done and jobs done". +</I>><i> +</I>><i> Hmm, actually thinking about this more, I'm not 100% sure I agree with +</I>><i> this argument. The number of cores should be irrelevant here as the +</I>><i> program itself should be dealing with things synchronously anyway. +</I>><i> +</I>><i> I'm wondering if it's more of an issue relating to the fact that it's +</I>><i> not specifically waiting for the LVM device to be ready. I guess your / +</I>><i> is either not on LVM or is in a different Volume Group? In my tests it +</I>><i> worked, but perhaps the dual core machine is simply that bit faster (and +</I>><i> it's speed, not #cores that is important)? +</I>><i> +</I>><i> In the file parse-lvm.sh, it does a for loop and has a wait_for_dev +</I>><i> call. This function will put stuff into the initqueue that should +</I>><i> prevent the exiting of the loop until that device exists... +</I>><i> +</I>><i> for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv +</I>><i> rd_LVM_LV=); do +</I>><i> wait_for_dev "/dev/$dev" +</I>><i> done +</I>><i> +</I>><i> Now according to the man page, these options are only meant to be used +</I>><i> to restrict what devices are activated so they shouldn't be needed per-se. +</I>><i> +</I>><i> But it brings an important point... there does not appear to be any +</I>><i> "wait_for_dev" calls for the usrmount module So nothing is going to be +</I>><i> waiting for the device to exist. If it takes a little while to come up +</I>><i> it could lead to your error. +</I>><i> +</I>><i> And herein we have chicken and egg... we don't know where /usr is (i.e. +</I>><i> which /dev/foo) until we mount / (as we have to read /etc/fstab). But +</I>><i> by the time we've mounted /, we've already exited this loop and thus +</I>><i> cannot re-enter the loop to wait for more devices. +</I>><i> +</I>><i> Tricky, and certainly something I'll discuss with Harald this weekend. +</I>><i> He does have a separate branch that deals with usr mounting in a more +</I>><i> holistic way (i.e. it handles /usr/bin being a separate mount if that +</I>><i> floats your boat!), but I've not looked at this for a while to see if +</I>><i> he's progressed any with it. +</I>><i> +</I>><i> All in all, it's perhaps just the fact that the first call to udevadm +</I>><i> settle is skipped due to there being nothing in your initqueue/finished/ +</I>><i> folder? You can check via passing rd.break=initqueue and looking in the +</I>><i> folder. +</I>><i> +</I>><i> If so, then all that should be needed to get this into shape is to put a +</I>><i> dummy file in there as part of the 98usrmount module, have that file +</I>><i> delete itself and return and error code, thus causing check_finished() +</I>><i> to return non zero and thus the call to udevsettle will be reached. +</I>><i> +</I>><i> +</I>><i> If this is NOT the issue, then it should just be a timing thing plain +</I>><i> and simple. To confirm, this you should simply be able to pass +</I>><i> rd.break=pre-pivot to the command line, wait a little while and then +</I>><i> just type exit to continue the boot process. This extra time should be +</I>><i> sufficient for udev to "see" the LVM stuff and for the mount command to +</I>><i> succeed (I hope!) +</I>><i> +</I>><i> Sorry for the long reply. You will likely have to poke in the dracut +</I>><i> code to understand everything I'm saying, but it looks like you're doing +</I>><i> that happily already :D +</I> + +OK, so I sadly didn't get a chance to speak to Harald in Brussels (only +saw him briefly during a talk so couldn't go through my list of issues +:<i>)) but think my comments above were correct. +</I> +To summarise, a problem would occur if / was on ext4 and /usr was on +LVM. The LVM would never get activated. If / was on LVM too (but a +different VG to /usr) then all would be fine. + +I think this is the scenario you had issues with. + +Looking at the new code in dracut 015, I think it writes out the +variables I mentioned above (rd.lvm.vg) into a cmdline.d folder and thus +the LVM for /usr should now get activated. + +In short, can you test the new dracut version just submitted? + +Cheers + +Col + + +-- + +Colin Guthrie +colin(at)mageia.org +<A HREF="http://colin.guthr.ie/">http://colin.guthr.ie/</A> + +Day Job: + Tribalogic Limited <A HREF="http://www.tribalogic.net/">http://www.tribalogic.net/</A> +Open Source: + Mageia Contributor <A HREF="http://www.mageia.org/">http://www.mageia.org/</A> + PulseAudio Hacker <A HREF="http://www.pulseaudio.org/">http://www.pulseaudio.org/</A> + Trac Hacker <A HREF="http://trac.edgewall.org/">http://trac.edgewall.org/</A> +</PRE> + +<!--endarticle--> + <HR> + <P><UL> + <!--threads--> + <LI>Previous message: <A HREF="011709.html">[Mageia-dev] Issues with dracut +</A></li> + <LI>Next message: <A HREF="011704.html">[Mageia-dev] stardict 3.0.3 +</A></li> + <LI> <B>Messages sorted by:</B> + <a href="date.html#11935">[ date ]</a> + <a href="thread.html#11935">[ thread ]</a> + <a href="subject.html#11935">[ subject ]</a> + <a href="author.html#11935">[ author ]</a> + </LI> + </UL> + +<hr> +<a href="https://www.mageia.org/mailman/listinfo/mageia-dev">More information about the Mageia-dev +mailing list</a><br> +</body></html> |