LP:1958433 curtin workaround for xfs in centos70
The XFS implementation in CentOS 7 does not support the reflink feature,
and refuses to mount with it, leaving the system boot in emergency mode.
So, if 'mkfs.xfs' in the commissioning image (used for deployment) knows
about 'reflink=0|1', create a wrapper to use '-m reflink=0' for CentOS 7.
The commands to generate the wrapper are general, long, and unoptimized,
for better compatibility between Bionic/Focal/Jammy comissioning images.
Example with Focal:
...
Welcome to Ubuntu 20.04.4 LTS!
...
[ 53.426717] cloud-init[1423]: start: cmd-install/stage-early: preparing for installation
[ 53.432717] cloud-init[1423]: start: cmd-install/stage-early/centos70_xfs_lp1958433: running '/bin/sh -c if [ "centos70" = "centos70" ] && mkfs.xfs 2>&1 | grep -q "reflink=0|1"; then WRAPPER=/usr/local/sbin/mkfs.xfs; echo "#!/bin/sh" >$WRAPPER && echo "exec $(which mkfs.xfs) -m reflink=0 \"\$@\"" >>$WRAPPER && chmod +x $WRAPPER && echo "Wrapper: $WRAPPER" && cat $WRAPPER; fi'
[ 53.476110] cloud-init[1423]: Wrapper: /usr/local/sbin/mkfs.xfs
[ 53.478272] cloud-init[1423]: #!/bin/sh
[ 53.478767] cloud-init[1423]: exec /usr/sbin/mkfs.xfs -m reflink=0 "$@"
[ 53.479615] cloud-init[1423]: finish: cmd-install/stage-early/centos70_xfs_lp1958433: SUCCESS: running '/bin/sh -c if [ "centos70" = "centos70" ] && mkfs.xfs 2>&1 | grep -q "reflink=0|1"; then WRAPPER=/usr/local/sbin/mkfs.xfs; echo "#!/bin/sh" >$WRAPPER && echo "exec $(which mkfs.xfs) -m reflink=0 \"\$@\"" >>$WRAPPER && chmod +x $WRAPPER && echo "Wrapper: $WRAPPER" && cat $WRAPPER; fi'
[ 53.485237] cloud-init[1423]: centos70_xfs_lp1958433 took 0.053 seconds
[ 53.485435] cloud-init[1423]: stage_early took 0.053 seconds
[ 53.485889] cloud-init[1423]: finish: cmd-install/stage-early: SUCCESS: preparing for installation
...
[ 63.756098] cloud-init[1423]: Running command ['mkfs.xfs', '-f', '-L', '', '-m', 'uuid=42e5ad8a-f078-48d2-8d42-60ee2ef10641', '/dev/vda3'] with allowed return codes [0] (capture=True)
[ 63.758788] cloud-init[1423]: Formated device type: partition
[ 63.763745] cloud-init[1423]: finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: SUCCESS: configuring format: vda-part3_format
...
Signed-off-by: Mauricio Faria de Oliveira <email address hidden>