Statistics
| Branch: | Tag: | Revision:

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 :