Test for NULL files problem.
[xfstests-dev.git] / common.config
1 ##/bin/sh
2 #
3 # Copyright (c) 2000-2003,2006 Silicon Graphics, Inc.  All Rights Reserved.
4 #
5 # setup and check for config parameters, and in particular
6 #
7 # TEST_DIR              - scratch test directory that is in an already
8 #                         mounted XFS file system, needs to be be world
9 #                         writeable
10 # TEST_DEV              - device for file system containing TEST_DIR
11 # SCRATCH_DEV           - device you can make a scratch file system on
12 # SCRATCH_MNT           - mount point for scratch file system
13 #
14 # and optionally:
15 # SCRATCH_LOGDEV        - scratch log device for external log testing
16 # SCRATCH_RTDEV         - scratch rt dev
17 # TEST_LOGDEV           - test log device for external log testing
18 # TEST_RTDEV            - test rt dev
19 # TAPE_DEV              - the tape device for the xfsdump tests
20 # RMT_TAPE_DEV          - the remote tape device for the xfsdump tests
21 # RMT_IRIXTAPE_DEV      - the IRIX remote tape device for the xfsdump tests
22 # RMT_TAPE_USER         - remote user for tape device
23 #
24 # - These can be added to known_hosts() below or a separate local
25 #   configuration file can be used (using the HOST_OPTIONS variable).
26 # - This script is shared by the stress test system and the auto-qa
27 #   system (includes both regression test and benchmark components).
28 # - TEST_DEV & TEST_DIR must be assigned.
29 # - this script shouldn't make any assertions about filesystem
30 #   validity or mountedness.
31 #
32
33 # Warning: don't put freeware before /usr/bsd on IRIX coz you'll
34 #          get the wrong hostname and set your system name to -s  :)
35 [ -d /usr/bsd ] && PATH=$PATH:/usr/bsd
36 [ -d /usr/freeware/bin ] && PATH=$PATH:/usr/freeware/bin
37 PATH=".:$PATH"
38
39 HOST=`hostname -s`
40 HOSTOS=`uname -s`
41 [ "$HOSTOS" = "IRIX64" ] && HOSTOS="IRIX"
42
43 MODULAR=0               # using XFS as a module or not
44 BOOT="/boot"            # install target for kernels
45 export EXTRA=${EXTRA:=xfs-qa}
46
47 # general parameters (mainly for auto-qa)
48 SOAK_PROC=3             # -p option to fsstress
49 SOAK_STRESS=10000       # -n option to fsstress
50 SOAK_PASSES=-1          # count of repetitions of fsstress (while soaking)
51 EMAIL=root@localhost    # where auto-qa will send its status messages
52 export HOST_OPTIONS=${HOST_OPTIONS:=local.config}
53 export CHECK_OPTIONS=${CHECK_OPTIONS:="-g auto"}
54 export BENCH_PASSES=${BENCH_PASSES:=5}
55 export XFS_MKFS_OPTIONS=${XFS_MKFS_OPTIONS:=-bsize=4096}
56
57 export PWD=`pwd`
58 #export DEBUG=${DEBUG:=...} # arbitrary CFLAGS really.
59 export MALLOCLIB=${MALLOCLIB:=/usr/lib/libefence.a}
60 export LOCAL_CONFIGURE_OPTIONS=${LOCAL_CONFIGURE_OPTIONS:=--enable-readline=yes}
61
62 # $1 = prog to look for, $2* = default pathnames if not found in $PATH
63 set_prog_path()
64 {
65     p=`which $1 2> /dev/null`
66     if [ -n "$p" -a -x "$p" ]
67     then
68         echo $p
69         return 0
70     fi
71     p=$1
72
73     shift
74     for f
75     do
76         if [ -x $f ]
77         then
78             echo $f
79             return 0
80         fi
81     done
82
83     echo ""
84     return 1
85 }
86
87 _fatal()
88 {
89     echo "$*"
90     status=1
91     exit 1
92 }
93
94 export MKFS_PROG="`set_prog_path mkfs`"
95 [ "$MKFS_PROG" = "" ] && _fatal "mkfs not found"
96
97 export MOUNT_PROG="`set_prog_path mount`"
98 [ "$MOUNT_PROG" = "" ] && _fatal "mount not found"
99
100 export UMOUNT_PROG="`set_prog_path umount`"
101 [ "$UMOUNT_PROG" = "" ] && _fatal "umount not found"
102
103 export FSSTRESS_PROG="`set_prog_path fsstress $PWD/ltp/fsstress`"
104 [ "$FSSTRESS_PROG" = "" ] && _fatal "fsstress not found"
105
106 export NSLOOKUP_PROG="`set_prog_path nslookup`"
107 [ "$NSLOOKUP_PROG" = "" ] && _fatal "nslookup not found"
108
109 export PERL_PROG="`set_prog_path perl`"
110 [ "$PERL_PROG" = "" ] && _fatal "perl not found"
111
112 export AWK_PROG="`set_prog_path awk`"
113 [ "$AWK_PROG" = "" ] && _fatal "awk not found"
114
115 export SED_PROG="`set_prog_path sed`"
116 [ "$SED_PROG" = "" ] && _fatal "sed not found"
117
118 export PS_ALL_FLAGS="-ef"
119
120 export DF_PROG="`set_prog_path df`"
121 [ "$DF_PROG" = "" ] && _fatal "df not found"
122 [ "$HOSTOS" = "Linux" ] && export DF_PROG="$DF_PROG -T"
123
124 export XFS_LOGPRINT_PROG="`set_prog_path xfs_logprint`"
125 export XFS_REPAIR_PROG="`set_prog_path xfs_repair`"
126 export XFS_CHECK_PROG="`set_prog_path xfs_check`"
127 export XFS_DB_PROG="`set_prog_path xfs_db`"
128 export XFS_GROWFS_PROG=`set_prog_path xfs_growfs`
129 export XFS_IO_PROG="`set_prog_path xfs_io`"
130
131 case "$HOSTOS" in
132     IRIX*)
133            export MKFS_XFS_PROG="`set_prog_path mkfs_xfs`"
134            export MKFS_UDF_PROG="`set_prog_path mkfs_udf`"
135            export XFS_FSR_PROG="`set_prog_path /usr/etc/fsr_xfs`"
136            export MKFS_NFS_PROG="false"
137            ;;
138     Linux)
139            export MKFS_XFS_PROG="`set_prog_path mkfs.xfs`"
140            export MKFS_UDF_PROG="`set_prog_path mkudffs`"
141            export XFS_FSR_PROG="`set_prog_path xfs_fsr`"
142            export MKFS_NFS_PROG="false"
143            ;;
144 esac
145
146 known_hosts()
147 {
148         case "$HOST"
149         in
150             sheila)
151                 #dedicated qa machine (has some values already set)
152                 [ -z "$MODULAR" ] && MODULAR=1
153                 EMAIL="nathans@larry"
154                 [ -z "$SCRATCH_MNT" ] && SCRATCH_MNT=/mnt/scratch
155                 [ -z "$SCRATCH_DEV" ] && SCRATCH_DEV=/dev/hdb1
156                 [ -z "$TEST_DIR" ] && TEST_DIR=/mnt/test
157                 [ -z "$TEST_DEV" ] && TEST_DEV=/dev/hdb2
158                 [ -z "$TEST_LOGDEV" ] && TEST_LOGDEV=/dev/hdb3
159                 [ -z "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=/dev/hdb5
160                 ;;
161             break)
162                 MODULAR=1
163                 EMAIL="nathans@larry"
164                 SCRATCH_MNT=/mnt/scratch
165                 #SCRATCH_DEV=/dev/sda6
166                 SCRATCH_DEV=budgie:/mnt/scratch
167                 TEST_DIR=/mnt/test
168                 #TEST_DEV=/dev/sda5
169                 TEST_DEV=budgie:/mnt/test
170                 ;;
171             bruce)
172                 MODULAR=0
173                 EMAIL="nathans@larry"
174                 SCRATCH_MNT=/mnt/scratch
175                 SCRATCH_DEV=/dev/sdb5
176                 SCRATCH_RTDEV=/dev/sdc1
177                 SCRATCH_LOGDEV=/dev/ram0
178                 TEST_DIR=/mnt/test
179                 TEST_DEV=/dev/sdc3
180                 TEST_RTDEV=/dev/sdb6
181                 TEST_LOGDEV=/dev/ram1
182                 #TAPE_DEV=/dev/st0
183                 #RMT_TAPE_DEV=bruce:/dev/st0
184                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
185                 #RMT_TAPE_USER=guest
186                 ;;
187             frodo)
188                 MODULAR=0
189                 EMAIL="nathans@larry"
190                 TEST_DEV=/dev/hda6
191                 TEST_DIR=/mnt/test
192                 SCRATCH_DEV=/dev/hda7
193                 SCRATCH_MNT=/mnt/scratch
194                 SCRATCH_LOGDEV=/dev/hda9
195                 ;;
196             goldfish)
197                 MODULAR=0
198                 TEST_DEV=/dev/hdc1
199                 TEST_DIR=/mnt/xfs0
200                 SCRATCH_DEV=/dev/hdc2
201                 SCRATCH_MNT=/mnt/xfs1
202                 SCRATCH_LOGDEV=/dev/hdc3
203                 ;;
204             burst)
205                 TEST_DIR=/xfs
206                 TEST_DEV=/dev/hda3
207                 SCRATCH_DEV=/dev/hda7
208                 SCRATCH_MNT=/scratch
209                 ;;
210             lumpy)
211                 TEST_DEV=/dev/sdc5
212                 TEST_DIR=/mnt/scratch_0
213                 SCRATCH_DEV=/dev/sdc7
214                 SCRATCH_MNT=/mnt/scratch_2
215                 ;;
216             bongo)
217                 TEST_DEV=/dev/hda8
218                 TEST_DIR=/xfs1
219                 SCRATCH_DEV=/dev/hda9
220                 SCRATCH_MNT=/xfs2
221                 SCRATCH_LOGDEV=/dev/hda10
222                 SCRATCH_RTDEV=/dev/hda11
223                 ;;
224             surly)
225                 TEST_DEV=/dev/hda9
226                 TEST_DIR=/mnt/xfs1
227                 SCRATCH_DEV=/dev/hda8
228                 SCRATCH_MNT=/mnt/xfs0
229                 SCRATCH_LOGDEV=/dev/hda10
230                 TAPE_DEV=/dev/st0
231                 RMT_TAPE_DEV=fuzzy:/dev/st0
232                 RMT_IRIXTAPE_DEV=blub:/dev/tape
233                 RMT_TAPE_USER=guest
234                 ;;
235             permit)
236                 TEST_DEV=/dev/sdc1
237                 TEST_DIR=/mnt/xfs0
238                 SCRATCH_DEV=/dev/sdd1
239                 SCRATCH_MNT=/mnt/xfs1
240                 ;;
241             indra)
242                 TEST_DEV=/dev/sdb1
243                 TEST_DIR=/mnt/xfs0
244                 SCRATCH_DEV=/dev/sdb2
245                 SCRATCH_MNT=/mnt/xfs1
246                 ;;
247             usermode)
248                 TEST_DEV=/dev/ubd/1
249                 TEST_DIR=/mnt/test
250                 SCRATCH_DEV=/dev/ubd/2
251                 SCRATCH_MNT=/mnt/scratch
252                 SCRATCH_RTDEV=/dev/ubd/3
253                 SCRATCH_LOGDEV=/dev/ubd/4
254                 ;;
255             lite)
256                 TEST_DEV=/dev/sda1
257                 TEST_DIR=/mnt/sda1
258                 SCRATCH_DEV=/dev/sda2
259                 SCRATCH_MNT=/mnt/sda2
260                 SCRATCH_LOGDEV=/dev/sda3
261                 SCRATCH_RTDEV=/dev/sda4
262                 ;;
263             dmfnt2)
264                 TEST_DEV=/dev/sda6
265                 TEST_DIR=/mnt/test
266                 SCRATCH_DEV=/dev/sdc6
267                 SCRATCH_MNT=/mnt/scratch
268                 TAPE_DEV=/dev/st0
269                 RMT_TAPE_DEV=longhorn:/dev/tape
270                 # RMT_IRIXTAPE_DEV=longhorn:/dev/tape
271                 RMT_TAPE_USER=guest
272                 ;;
273             lab343)
274                 MODULAR=0
275                 EMAIL="hch@sgi.com"
276                 TEST_DEV=/dev/sdb1
277                 SCRATCH_DEV=/dev/sdb2
278                 SCRATCH_LOGDEV=/dev/sdb5
279                 SCRATCH_RTDEV=/dev/sdb6
280                 TEST_DIR=/qa/test
281                 SCRATCH_MNT=/qa/scratch
282                 ;;
283             dribble)
284                 #dedicated qa machine
285                 MODULAR=0
286                 EMAIL="ddiss@sgi.com"
287                 TEST_DIR=/mnt/test
288                 TEST_DEV=/dev/dsk/dks0d2s0
289                 SCRATCH_MNT=/mnt/scratch
290                 SCRATCH_DEV=/dev/dsk/dks0d2s6
291                 #TAPE_DEV=/dev/tape
292                 #RMT_TAPE_DEV=icy:/dev/st0
293                 #RMT_TAPE_USER=guest
294                 ;;
295              giro)
296                 MODULAR=0
297                 EMAIL="ddiss@sgi.com"
298                 TEST_DIR=/mnt/test
299                 TEST_DEV=/dev/dsk/dks0d2s0
300                 SCRATCH_MNT=/mnt/scratch
301                 SCRATCH_DEV=/dev/dsk/dks0d2s6
302                 #TAPE_DEV=/dev/tape
303                 #RMT_TAPE_DEV=icy:/dev/st0
304                 #RMT_TAPE_USER=guest
305                 ;;
306             cxfsirix1)
307                 EMAIL="ajones@sgi.com"
308                 TEST_DIR=/mnt/xfs_test0
309                 TEST_DEV=/dev/cxvm/xfs_test0
310                 SCRATCH_MNT=/mnt/xfs_test1
311                 SCRATCH_DEV=/dev/cxvm/xfs_test1
312                 ;;
313             hammer)
314                 EMAIL="bnaujok@sgi.com"
315                 TEST_DIR=/mnt/xfs1
316                 TEST_DEV=/dev/sda5
317                 SCRATCH_MNT=/mnt/xfs2
318                 SCRATCH_DEV=/dev/sda6
319                 ;;
320             emu)
321                 MODULAR=0
322                 EMAIL="vapo@sgi.com"
323                 TEST_DIR=/mnt/test
324                 TEST_DEV=/dev/sdb1
325                 SCRATCH_MNT=/mnt/scratch1
326                 SCRATCH_DEV=/dev/sdb2
327                 ;;
328             inferno)
329                 #dedicated qa machine (has some values already set)
330                 [ -z "$MODULAR" ] && MODULAR=1
331                 EMAIL="ajones@sgi.com"
332                 [ -z "$TEST_DIR" ] && TEST_DIR=/mnt/test
333                 [ -z "$TEST_DEV" ] && TEST_DEV=/dev/sdb1
334                 [ -z "$TEST_LOGDEV" ] && TEST_LOGDEV=/dev/ram0
335                 [ -z "$SCRATCH_MNT" ] && SCRATCH_MNT=/mnt/scratch
336                 [ -z "$SCRATCH_DEV" ] && SCRATCH_DEV=/dev/sdb2
337                 [ -z "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=/dev/ram1
338                 #[ -z "$SCRATCH_RTDEV" ] && SCRATCH_RTDEV=/dev/sdb5
339                 [ -z "$TAPE_DEV" ] && TAPE_DEV=/dev/st0
340                 ;;
341             hellfire)
342                 MODULAR=1
343                 EMAIL="ajones@sgi.com"
344                 TEST_DIR=/mnt/test
345                 TEST_DEV=/dev/sda3
346                 TEST_LOGDEV=/dev/sda5
347                 SCRATCH_MNT=/mnt/scratch
348                 SCRATCH_DEV=/dev/sda4
349                 SCRATCH_LOGDEV=/dev/sda6
350                 #SCRATCH_RTDEV=/dev/sda7
351                 TAPE_DEV=/dev/st0
352                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
353                 #RMT_TAPE_DEV=icy:/dev/st0
354                 #RMT_TAPE_USER=guest
355                 ;;
356             rooster)
357                 MODULAR=1
358                 EMAIL="ajones@sgi.com"
359                 TEST_DIR=/mnt/test
360                 TEST_DEV=/dev/sdb1
361                 SCRATCH_MNT=/mnt/scratch
362                 SCRATCH_DEV=/dev/sdb2
363                 TAPE_DEV=/dev/st0
364                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
365                 #RMT_TAPE_DEV=icy:/dev/st0
366                 #RMT_TAPE_USER=guest
367                 ;;
368             rosella)
369                 MODULAR=1
370                 EMAIL="ajones@sgi.com"
371                 TEST_DIR=/mnt/test
372                 TEST_DEV=/dev/sdb1
373                 SCRATCH_MNT=/mnt/scratch
374                 SCRATCH_DEV=/dev/sdb3
375                 TAPE_DEV=/dev/st0
376                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
377                 #RMT_TAPE_DEV=icy:/dev/st0
378                 #RMT_TAPE_USER=guest
379                 ;;
380             crackle)
381                 #irix-crackle
382                 TEST_DIR=/mnt/xfs
383                 SCRATCH_MNT=/mnt/xfs2
384                 TEST_DEV=/dev/dsk/dks0d1s3
385                 SCRATCH_DEV=/dev/dsk/dks0d1s4
386                 ;;
387             tinkle)
388                 #irix-patchbox-tinkle
389                 TEST_DEV=/dev/dsk/dks0d2s0
390                 TEST_DIR=/mnt/xfs_test
391                 SCRATCH_DEV=/dev/dsk/dks0d2s1
392                 SCRATCH_MNT=/mnt/xfs_scratch
393                 ;;
394             cocky)
395                 MODULAR=1
396                 EMAIL="ajones@sgi.com"
397                 TEST_DIR=/mnt/test
398                 TEST_DEV=/dev/sdb1
399                 TEST_LOGDEV=/dev/sdb3
400                 SCRATCH_MNT=/mnt/scratch
401                 SCRATCH_DEV=/dev/sdb2
402                 SCRATCH_LOGDEV=/dev/sdb4
403                 #SCRATCH_RTDEV=/dev/sdb5
404                 TAPE_DEV=/dev/st0
405                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
406                 #RMT_TAPE_DEV=icy:/dev/st0
407                 #RMT_TAPE_USER=guest
408                 ;;
409             porky)
410                 #dedicated qa machine (has some values already set)
411                 [ -z "$MODULAR" ] && MODULAR=1
412                 EMAIL="ajones@sgi.com"
413                 [ -z "$TEST_DIR" ] && TEST_DIR=/mnt/test
414                 [ -z "$TEST_DEV" ] && TEST_DEV=/dev/sdb1
415                 [ -z "$TEST_LOGDEV" ] && TEST_LOGDEV=/dev/sdb3
416                 [ -z "$SCRATCH_MNT" ] && SCRATCH_MNT=/mnt/scratch
417                 [ -z "$SCRATCH_DEV" ] && SCRATCH_DEV=/dev/sdb2
418                 [ -z "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=/dev/sdb4
419                 #[ -z "$SCRATCH_RTDEV" ] && SCRATCH_RTDEV=/dev/sdb7
420                 #[ -z "$TAPE_DEV" ] && TAPE_DEV=/dev/st0
421                 ;;
422             puffy)
423                 MODULAR=1
424                 EMAIL="tes@sgi.com"
425                 TEST_DIR=/mnt/test
426                 TEST_DEV=/dev/sda7
427                 SCRATCH_MNT=/mnt/scratch
428                 SCRATCH_DEV=/dev/sda8
429                 TAPE_DEV=/dev/st0
430                 ;;
431             galah)
432                 MODULAR=1
433                 EMAIL="ddiss@sgi.com"
434                 TEST_DIR=/mnt/data
435                 TEST_DEV=/dev/sdb1
436                 SCRATCH_MNT=/mnt/scratch
437                 SCRATCH_DEV=/dev/sda6
438                 #RMT_IRIXTAPE_DEV=snort:/dev/tape
439                 #RMT_TAPE_DEV=icy:/dev/st0
440                 #RMT_TAPE_USER=guest
441                 ;;
442              screamer)
443                 #dedicated qa machine (has some values already set)
444                 [ -z "$MODULAR" ] && MODULAR=1
445                 EMAIL="ddiss@sgi.com"
446                 [ -z "$TEST_DIR" ] && TEST_DIR=/mnt/test
447                 [ -z "$TEST_DEV" ] && TEST_DEV=/dev/sdb1
448                 #[ -z "$TEST_LOGDEV" ] && TEST_LOGDEV=/dev/sdb3
449                 [ -z "$SCRATCH_MNT" ] && SCRATCH_MNT=/mnt/scratch
450                 [ -z "$SCRATCH_DEV" ] && SCRATCH_DEV=/dev/sdb2
451                 #[ -z "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=/dev/sdb4
452                 #[ -z "$SCRATCH_RTDEV" ] && SCRATCH_RTDEV=/dev/sdb5
453                 ;;
454              linux-chatz)
455                 #vmware on pc-chatz
456                 MODULAR=1
457                 EMAIL="chatz@sgi.com"
458                 USE_EXTERNAL=yes
459                 TEST_DIR="/mnt/data"
460                 TEST_DEV=/dev/sdd
461                 TEST_LOGDEV=/dev/sdb
462                 SCRATCH_MNT=/mnt/scratch
463                 SCRATCH_DEV=/dev/sdg
464                 SCRATCH_LOGDEV=/mnt/sde
465                 ;;
466              chapter11)
467                 [ -z "$MODULAR" ] && MODULAR=1
468                 EMAIL="ddiss@sgi.com"
469                 [ -z "$TEST_DIR" ] && TEST_DIR=/mnt/test
470                 [ -z "$TEST_DEV" ] && TEST_DEV=/dev/sdb6
471                 [ -z "$SCRATCH_MNT" ] && SCRATCH_MNT=/mnt/scratch
472                 [ -z "$SCRATCH_DEV" ] && SCRATCH_DEV=/dev/sdb7
473                 ;;
474              dassi)
475                 MODULAR=0
476                 EMAIL="ddiss@sgi.com"
477                 TEST_DIR=/mnt/test
478                 TEST_DEV=/dev/dsk/dks0d2s0
479                 SCRATCH_MNT=/mnt/scratch
480                 SCRATCH_DEV=/dev/dsk/dks0d2s6
481                 ;;
482              *)
483                 echo "Error: need to define parameters for host $HOST"
484                 exit 1
485                 ;;
486         esac
487 }
488
489 if [ -f "$HOST_OPTIONS" ]; then
490     . "$HOST_OPTIONS"
491 else
492     known_hosts
493 fi
494
495 echo $TEST_DEV | grep -q ":" > /dev/null 2>&1
496 if [ ! -b "$TEST_DEV" -a "$?" != "0" ]
497 then
498     echo "common.config: Error: \$TEST_DEV ($TEST_DEV) is not a block device or a NFS filesystem"
499     exit 1
500 fi
501
502 if [ ! -d "$TEST_DIR" ]
503 then
504     echo "common.config: Error: \$TEST_DIR ($TEST_DIR) is not a directory"
505     exit 1
506 fi
507
508 echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1
509 if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ]
510 then
511     echo "common.config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) is not a block device or a NFS filesystem"
512     exit 1
513 fi
514
515 if [ ! -z "$SCRATCH_MNT" -a ! -d "$SCRATCH_MNT" ]
516 then
517     echo "common.config: Error: \$SCRATCH_MNT ($SCRATCH_MNT) is not a directory"
518     exit 1
519 fi
520
521 _readlink()
522 {
523     if [ $# -ne 1 ]
524     then
525         echo "Usage: _readlink filename" 1>&2
526         exit 1
527     fi
528
529     perl -e "\$in=\"$1\";" -e '
530         $lnk = readlink($in);
531         if ($lnk =~ m!^/.*!) {
532           print "$lnk\n";
533         }
534         else {
535           chomp($dir = `dirname $in`);
536           print "$dir/$lnk\n";
537         }'
538 }
539
540 # if devfs is running expand the full /dev/.. pathname - this is what will be
541 # returned by utilities such as mount
542 [ -L "$TEST_DEV" ] && TEST_DEV=`_readlink $TEST_DEV`
543 [ -L "$SCRATCH_DEV" ] && SCRATCH_DEV=`_readlink $SCRATCH_DEV`
544 [ -L "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=`_readlink $SCRATCH_LOGDEV`
545 [ -L "$SCRATCH_RTDEV" ] && SCRATCH_RTDEV=`_readlink $SCRATCH_LOGDEV`
546
547 # make sure this script returns success
548 /bin/true