]> git.proxmox.com Git - mirror_spl-debian.git/blob - debian/spl-modules-_KVERS_.postinst.in
Merge tag 'upstream/0.6.5.8'
[mirror_spl-debian.git] / debian / spl-modules-_KVERS_.postinst.in
1 #!/bin/sh
2 set -e
3 # The hostname and hostid of the last system to access a ZFS pool are stored in
4 # the ZFS pool itself. A pool is foreign if, during `zpool import`, the
5 # current hostname and hostid are different than the stored values thereof.
6 #
7 # The hostid on Solaris is intrinsic, but is not on Linux (see #595790), so the
8 # spl kernel module invokes /usr/bin/hostid from the userland in its initialization
9 # routine.
10 #
11 # /usr/bin/hostid will return the 4 first bytes of the file /etc/hostid.
12 # If this file is not present or contains less than 4 bytes, then /usr/bin/hostid
13 # will return the bytes of the IP address of $(hostname) flipped, or zero if
14 # such IP couldn't be obtained
15 #
16 # This means that things like a DHCP lease change can affect the hostid.
17 #
18 # Therefore the only way of having a stable hostid is to define it on /etc/hostid.
19 # This postinst helper will check if we already have the hostid stabilized by
20 # checking the existence of the file /etc/hostid to be 4 bytes at least.
21 # If this file don't already exists on our system or has less than 4 bytes, then
22 # we will stabilize our current hostid by writing its value to /etc/hostid
23
24 # Run depmod first
25 depmod
26
27 # Deal with hostid issue as usual
28 if [ ! -f /etc/hostid ] || [ $(stat -c %s /etc/hostid) -lt 4 ] ; then
29
30 # Write our current hostid to /etc/hostid
31 HOSTID=$(hostid)
32 AA=$(echo $HOSTID | cut -b 1,2)
33 BB=$(echo $HOSTID | cut -b 3,4)
34 CC=$(echo $HOSTID | cut -b 5,6)
35 DD=$(echo $HOSTID | cut -b 7,8)
36
37 # Big Endian
38 if echo | gcc -E -dM - | grep -q "__BYTE_ORDER__.*__ORDER_BIG_ENDIAN__"; then
39 # Invoke the printf from coreutils. shell builtin lacks the byte format.
40 /usr/bin/printf "\x$AA\x$BB\x$CC\x$DD" >/etc/hostid
41 else
42 # Little Endian
43 /usr/bin/printf "\x$DD\x$CC\x$BB\x$AA" >/etc/hostid
44 fi
45 fi
46
47 #DEBHELPER#