From: Jan Kara Subject: Re: [PATCH 3/4] common: Add function for selecting from different output files Date: Wed, 18 Nov 2015 16:37:14 +0100 Message-ID: <20151118153714.GH6097@quack.suse.cz> References: <1446654698-23577-1-git-send-email-jack@suse.com> <1446654698-23577-4-git-send-email-jack@suse.com> <20151116212924.GL14311@dastard> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jan Kara , fstests@vger.kernel.org, linux-ext4@vger.kernel.org To: Dave Chinner Return-path: Content-Disposition: inline In-Reply-To: <20151116212924.GL14311@dastard> Sender: fstests-owner@vger.kernel.org List-Id: linux-ext4.vger.kernel.org On Tue 17-11-15 08:29:24, Dave Chinner wrote: > On Wed, Nov 04, 2015 at 05:31:37PM +0100, Jan Kara wrote: > > Add function for selection of different output files. The idea is that > > in config file ($seq.cfg) there are several lines like: > > > > feat1,feat2: suffix > > > > The function is passed a feature string (or uses MOUNT_OPTIONS if no > > argument is passed) and selects output file with a suffix for which all > > features are present in the feature string. If there is no matching > > line, output with 'default' suffix is selected. > > > > Signed-off-by: Jan Kara > > Looks like a good idea, but probably needs to be integrated into > _link_out_file(), which already does platform based output file > linking... OK, will do. > > --- > > common/rc | 41 +++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 41 insertions(+) > > > > diff --git a/common/rc b/common/rc > > index adf1edf64d8d..543780c92c59 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -3142,6 +3142,47 @@ get_block_size() > > echo `stat -f -c %S $1` > > } > > > > +_select_output() > > +{ > > + if [ $# -eq 0 ]; then > > + FEATURES=${MOUNT_OPTIONS##"-o "} > > + else > > + FEATURES=$1 > > + fi > > + > > + export FEATURES > > + seqfull=$SRC_DIR/$seqnum > > + perl -e ' > > + my %feathash; > > + my $feature, $result, $suffix, $opts; > > + > > + foreach $feature (split(/,/, $ENV{"FEATURES"})) { > > + $feathash{$feature} = 1; > > + } > > + $result = "default"; > > + while (<>) { > > + my $found = 1; > > + > > + chomp; > > + ($opts, $suffix) = split(/ *: */); > > + foreach my $opt (split(/,/, $opts)) { > > + if (!exists($feathash{$opt})) { > > + $found = 0; > > + last; > > + } > > + } > > + if ($found == 1) { > > + $result = $suffix; > > + last; > > + } > > + } > > + print $result > > + ' <$seqfull.cfg | { > > + read SUFFIX > > + ln -fs $seq.out.$SUFFIX $seqfull.out > > + } > > +} > > I'd much prefer the perl code simply returns the appropriately > matched suffix and then the shell code does the linking of the > output file. That way other things that the test harness is aware of > can also be taken into account. Well, the perl code does return (print) the selected suffix. But I guess you dislike the piping into a shell block where the linking happens. I wanted to save on some shell escaping but it actually won't be that bad. I'll remove the pipe. Honza -- Jan Kara SUSE Labs, CR