From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Reinecke Subject: check_finished() syntax weirdness Date: Tue, 13 May 2014 11:44:50 +0200 Message-ID: <5371E992.1080802@suse.de> Mime-Version: 1.0 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Sender: initramfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="iso-8859-1"; format="flowed" To: Harald Hoyer Cc: initramfs Hi all, I'm trying to figure out why my initqueue scripts are never called. Eg 95fcoe is just installing an initqueue job, which should call 'fcoe-up' on the interface. However, this script is never called, irrespective of any 'fcoe=3D'=20 parameters. Looking a dracut-initqueue.sh, we have this: while :; do check_finished && break udevadm settle --exit-if-exists=3D$hookdir/initqueue/work check_finished && break if [ -f $hookdir/initqueue/work ]; then rm -f -- "$hookdir/initqueue/work" fi for job in $hookdir/initqueue/*.sh; do [ -e "$job" ] || break job=3D$job . $job check_finished && break 2 done udevadm settle --timeout=3D0 >/dev/null 2>&1 || continue =2E.. and check_finished is: check_finished() { local f for f in $hookdir/initqueue/finished/*.sh; do [ "$f" =3D "$hookdir/initqueue/finished/*.sh" ] && return 0 { [ -e "$f" ] && ( . "$f" ) ; } || return 1 done return 0 } IE if no scripts are present in the 'finished' queue,=20 'check_finished' will return '0', causing the main initqueue to=20 short-circuit and the actual initqueue jobs will never be executed. Is this the intended outcome? IE are all jobs for the initqueue are _required_ to supply a=20 'finished' job? I would have thought it to be a bit more permissive, ie do a 'return 1' if no finish j0bs have been found ... Cheers, Hannes --=20 Dr. Hannes Reinecke zSeries & Storage hare-l3A5Bk7waGM@public.gmane.org +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg GF: J. Hawn, J. Guild, F. Imend=F6rffer, HRB 16746 (AG N=FCrnberg)