root / snf-image-helper / tasks / 10FixPartitionTable.in @ 5e8ed5da
History | View | Annotate | Download (1.3 kB)
1 | 42f09a19 | Nikos Skalkotos | #! /bin/bash |
---|---|---|---|
2 | 42f09a19 | Nikos Skalkotos | |
3 | 42f09a19 | Nikos Skalkotos | ### BEGIN TASK INFO |
4 | 42f09a19 | Nikos Skalkotos | # Provides: FixPartitionTable |
5 | 42f09a19 | Nikos Skalkotos | # RunBefore: FilesystemResizeUnmounted |
6 | 42f09a19 | Nikos Skalkotos | # Short-Description: Resize filesystem to use all the available space |
7 | 42f09a19 | Nikos Skalkotos | ### END TASK INFO |
8 | 42f09a19 | Nikos Skalkotos | |
9 | 42f09a19 | Nikos Skalkotos | set -e |
10 | 42f09a19 | Nikos Skalkotos | . "@commondir@/common.sh" |
11 | 42f09a19 | Nikos Skalkotos | |
12 | 42f09a19 | Nikos Skalkotos | if [ ! -b "$SNF_IMAGE_DEV" ]; then |
13 | 42f09a19 | Nikos Skalkotos | log_error "Device file:\`${SNF_IMAGE_DEV}' is not a block device" |
14 | 42f09a19 | Nikos Skalkotos | fi |
15 | 42f09a19 | Nikos Skalkotos | |
16 | 42f09a19 | Nikos Skalkotos | if [ $(get_partition_count "$SNF_IMAGE_DEV") -eq 0 ]; then |
17 | 42f09a19 | Nikos Skalkotos | log_error "Device: \`${SNF_IMAGE_DEV}' does not contain any partition" |
18 | 42f09a19 | Nikos Skalkotos | fi |
19 | 42f09a19 | Nikos Skalkotos | |
20 | 42f09a19 | Nikos Skalkotos | retval=$(get_last_partition "$SNF_IMAGE_DEV") |
21 | 42f09a19 | Nikos Skalkotos | |
22 | 42f09a19 | Nikos Skalkotos | id=$(echo $retval | cut -d: -f1) |
23 | f6e23601 | Nikos Skalkotos | pstart=$(echo $retval | cut -d: -f2) |
24 | f6e23601 | Nikos Skalkotos | pend=$(echo $retval | cut -d: -f3) |
25 | f6e23601 | Nikos Skalkotos | ptype=$(echo $retval | cut -d: -f5) |
26 | 42f09a19 | Nikos Skalkotos | |
27 | 42f09a19 | Nikos Skalkotos | if [ $id -gt 4 ]; then |
28 | 42f09a19 | Nikos Skalkotos | log_error "We don't support logical volumes" |
29 | 42f09a19 | Nikos Skalkotos | fi |
30 | 42f09a19 | Nikos Skalkotos | |
31 | 42f09a19 | Nikos Skalkotos | if [ x"$ptype" = "x" ]; then |
32 | 42f09a19 | Nikos Skalkotos | # Don't know how to handle this |
33 | f6e23601 | Nikos Skalkotos | warn "Last partition with id: \`$id' is empty or has unknown filesystem" |
34 | f6e23601 | Nikos Skalkotos | warn "I won't resize the partition" |
35 | 42f09a19 | Nikos Skalkotos | exit 0 |
36 | 42f09a19 | Nikos Skalkotos | fi |
37 | 42f09a19 | Nikos Skalkotos | |
38 | 42f09a19 | Nikos Skalkotos | new_pend=$(get_last_free_sector "$SNF_IMAGE_DEV") |
39 | 42f09a19 | Nikos Skalkotos | |
40 | 38552c68 | Nikos Skalkotos | if [ -z "$new_pend" ] ; then |
41 | 38552c68 | Nikos Skalkotos | # Nothing to do |
42 | 38552c68 | Nikos Skalkotos | exit 0 |
43 | 38552c68 | Nikos Skalkotos | fi |
44 | 38552c68 | Nikos Skalkotos | |
45 | 38552c68 | Nikos Skalkotos | # Extend the partition |
46 | 42f09a19 | Nikos Skalkotos | |
47 | f6e23601 | Nikos Skalkotos | $PARTED -s -m "$SNF_IMAGE_DEV" rm "$id" |
48 | 42f09a19 | Nikos Skalkotos | $PARTED -s -m "$SNF_IMAGE_DEV" mkpart primary "$ptype" "$pstart" "$new_pend" |
49 | 42f09a19 | Nikos Skalkotos | |
50 | 38552c68 | Nikos Skalkotos | # Inform the kernel about the changes |
51 | 42f09a19 | Nikos Skalkotos | partprobe "$SNF_IMAGE_DEV" |
52 | 42f09a19 | Nikos Skalkotos | |
53 | 42f09a19 | Nikos Skalkotos | exit 0 |
54 | 42f09a19 | Nikos Skalkotos | |
55 | 42f09a19 | Nikos Skalkotos | # vim: set sta sts=4 shiftwidth=4 sw=4 et ai : |