Jurij Smakov wrote: > I was able to trace this problem down to the enable_swap call in the > storage_device/label/do_option script of partman-partitioning udeb. As I > understand, the device on which the operations are performed is passed > to parted_server automatically, based on the current working directory. > The call to enable_swap in the above script actually changes the working > directory while rescanning the partitions, and "forgets" to restore it to > the correct original value on exit. As a result, on a system with more > than one disk the subsequent operations may be performed on the disk > different from the one they are actually meant for, leading to erratic > behavior. A simple patch seems to take care of the problem: Nice detective work. Since this is a pretty bad behavior of enable_swap I think it's best to fix it there, with this patch: Index: definitions.sh =================================================================== --- definitions.sh (revision 24301) +++ definitions.sh (working copy) @@ -575,6 +575,7 @@ enable_swap () { local swaps dev num id size type fs path name method + local startdir="$(pwd)" # do swapon only when we will be able to swapoff afterwards [ -f /proc/swaps ] || return 0 swaps='' @@ -595,6 +596,7 @@ for path in $swaps; do swapon $path || true done + cd "$startdir" } disable_swap () { I have only one drive in my sparc, so I cannot really test this, but I assume it'll work. I've uploaded partman with this patch. FWIW, all other scripts that call enable_swap don't seem to care what the pwd is changed to, except for partman-auto/autopartition which probably also has a problem on sparc. -- see shy jo
Attachment:
signature.asc
Description: Digital signature