tag 488687 + patch
reassign 488687 partman-base
thanks
On Mon, Jun 30, 2008 at 06:32:30PM +0200, Daniel Baumann wrote:
> I can reproduce it on a couple of completely different machines with
> always the same result. However, the last one I did had the following
> partitioning layout:
>
> /dev/hda1 /boot ext3
> /dev/hda5 crypted random key
> /dev/hda6 crypted passphrase
> /dev/hda7 crypted passphrase
>
> /dev/hdb1 crypted passphrase
>
> as soon as you press the 'Configure encrypted volumes', d-i starts
> creating the *first* and the *last* encrypted partitions, im my case
> these are hda5_crypt and hdb1_crypt. those in between are skipped.
> Running a 'Configure encrypted volumes' again, doesn't help much as it
> messes arround again with the previous configured partitions and wants
> to reformat them again and again.
The problem lies in the fact that:
* crypto_setup() changes the current directory to the partman
directory for the device on which is located the encrypted
partition,
* crypto_setup() calls setup_cryptdev(),
* setup_cryptdev() calls partman_lock_unit(),
* partman_lock_unit() goes through all devices (and partitions),
changing the current directory.
The attached patch changes partman_lock_unit() and partman_unlock_unit()
to restore the current directory once their job is done. I am not
commiting this patch directly as I doubt it to be the best way to do
this.
One could argue that a pair of parenthesis could be put around the call
to partman_lock_unit() in setup_cryptdev(); please reassign the bug back
to partman-crypto if that feels more desirable.
Cheers,
--
Jérémy Bobbio .''`.
lunar@debian.org : :Ⓐ : # apt-get install anarchism
`. `'`
`-
diff --git a/packages/partman/partman-base/lib/base.sh b/packages/partman/partman-base/lib/base.sh
index 3fb29d3..67450e9 100644
--- a/packages/partman/partman-base/lib/base.sh
+++ b/packages/partman/partman-base/lib/base.sh
@@ -903,10 +903,11 @@ disable_swap () {
# Lock a device or partition against further modifications
partman_lock_unit() {
- local device message dev testdev
+ local device message cwd dev testdev
device="$1"
message="$2"
+ cwd="$(pwd)"
for dev in $DEVICES/*; do
[ -d "$dev" ] || continue
cd $dev
@@ -916,6 +917,7 @@ partman_lock_unit() {
testdev=$(mapdevfs $(cat device))
if [ "$device" = "$testdev" ]; then
echo "$message" > locked
+ cd "$cwd"
return 0
fi
fi
@@ -930,13 +932,15 @@ partman_lock_unit() {
done
close_dialog
done
+ cd "$cwd"
}
# Unlock a device or partition to allow further modifications
partman_unlock_unit() {
- local device dev testdev
+ local device cwd dev testdev
device="$1"
+ cwd="$(pwd)"
for dev in $DEVICES/*; do
[ -d "$dev" ] || continue
cd $dev
@@ -946,6 +950,7 @@ partman_unlock_unit() {
testdev=$(mapdevfs $(cat device))
if [ "$device" = "$testdev" ]; then
rm -f locked
+ cd "$cwd"
return 0
fi
fi
@@ -960,6 +965,7 @@ partman_unlock_unit() {
done
close_dialog
done
+ cd "$cwd"
}
log '*******************************************************'
Attachment:
signature.asc
Description: Digital signature