Bug 76831 - function halt_get_remaining() in 'halt' script not entirely correct
function halt_get_remaining() in 'halt' script not entirely correct
Product: Red Hat Linux
Classification: Retired
Component: initscripts (Show other bugs)
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Bill Nottingham
Brock Organ
Depends On:
  Show dependency treegraph
Reported: 2002-10-27 14:33 EST by Michal Jaegermann
Modified: 2014-03-16 22:32 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2003-01-14 00:02:54 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Michal Jaegermann 2002-10-27 14:33:39 EST
Description of Problem:

The problem is that if a 'tmpfs' file system will be mounted following
suggestions from /usr/src/linux-2.4/Documentation/filesystems/tmpfs.txt,
i.e. 'mount -t tmpfs tmpfs /some/where', then the first field shown by
/proc/mounts will be not "none" and this file system will be printed
twice by the first and third invocations of awk.  Here is a corrected
function which, BTW, is calling awk only once:

halt_get_remaining() {
    awk '$2 ~ /^\/$|^\/proc|^\/dev/{next}
    $3 == "tmpfs" {print $2 ; next}
    /(^#|loopfs|autofs|devfs|^none|^\/dev\/root)/ {next}
    {print $2}' /proc/mounts

and here is an alternative implemented only in shell

halt_get_remaining() {
    local mpnt fs type rest all
    while read mpnt fs type rest ; do
        case "$fs" in
            /|/proc*|/dev*) continue ;;
        if [ "$type"  = tmpfs ] ; then
            echo $fs
        all="$mpnt $fs $type"
        case "$all" in
            \#*|*loopfs*|*autofs*|*devfs*|*tmpfs*|none*|/dev/root*) continue ;;
        echo $fs
    done < /proc/mounts

Checks for /dev/root and comment lines are likely superflous, but...
Also likely one check for "$all" can be replaced by separate, simpler, checks
for "$mpnt" and "$type" but this changes somewhat semantics of the original.

The other thing is that if procfs happens to be mounted also in some other
place but /proc, which happens, we likely want to print that as well so
this should really be
    $3 == "tmpfs" || $3 == "procfs {print $2 ; next}
and a similar obvious change in a shell version.
Comment 1 Michal Jaegermann 2002-10-27 14:41:30 EST
Er.. '$3 == "tmpfs" || $3 == "proc" {print $2 ; next}' in the above
(don't type on-line!) but otherwise like it should be.
Comment 2 Bill Nottingham 2003-01-14 00:02:54 EST
Added in 7.03-1.

Note You need to log in before you can comment on or make changes to this bug.