Ignore:
Timestamp:
2010-06-29T12:07:45+02:00 (6 years ago)
Author:
cshore
Message:

block-mount: Fixed mount deadlocks due to buggy use of locks in /lib/functions/block.sh

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/block-mount/files/block.sh

    r19877 r21987  
    119119        [ -n "$device" ] || return 0 
    120120 
    121         local fstabnew="$(mktemp -t '.fstab.XXXXXXXX')" 
     121        local fstabnew 
    122122         
    123123        mkdir -p /var/lock 
    124         lock /var/lock/fstab.lck 
    125         cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" >>"$fstabnew" 
    126         [ "$enabled" -eq 1 ] && echo "$device   none    swap    sw      0       0" >> "$fstabnew" 
    127         cat "$fstabnew" >/tmp/fstab 
    128         lock -u /var/lock/fstab.lck 
    129         rm -f $fstabnew 
     124        lock -w /var/lock/fstab.lck && { 
     125                lock /var/lock/fstab.lck 
     126                fstabnew="$(mktemp -t '.fstab.XXXXXXXX')" 
     127                cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" >>"$fstabnew" 
     128                [ "$enabled" -eq 1 ] && echo "$device   none    swap    sw      0       0" >> "$fstabnew" 
     129                cat "$fstabnew" >/tmp/fstab 
     130                rm -f $fstabnew 
     131                lock -u /var/lock/fstab.lck 
     132        } 
    130133} 
    131134 
     
    141144        [ -n "$device" ] || return 0 
    142145 
    143         local fstabnew="$(mktemp -t '.fstab.XXXXXXXX')" 
     146        local fstabnew 
    144147         
    145148        mkdir -p /var/lock 
    146         lock /var/lock/fstab.lck 
    147         cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" | grep -v "$target" >>"$fstabnew" 
    148         echo "$device   $target $fstype $options        0       0" >>"$fstabnew" 
    149         cat "$fstabnew" >/tmp/fstab              
    150         lock -u /var/lock/fstab.lck 
    151         rm -f $fstabnew 
     149        lock -w /var/lock/fstab.lck && { 
     150                lock /var/lock/fstab.lck 
     151                fstabnew="$(mktemp -t '.fstab.XXXXXXXX')" 
     152                cat /tmp/fstab | grep -E -v "^$device[[:blank:]]" | grep -v "$target" >>"$fstabnew" 
     153                echo "$device   $target $fstype $options        0       0" >>"$fstabnew" 
     154                cat "$fstabnew" >/tmp/fstab              
     155                rm -f $fstabnew 
     156                lock -u /var/lock/fstab.lck 
     157        } 
    152158} 
    153159 
Note: See TracChangeset for help on using the changeset viewer.