dracut-functions.sh: cope with optional field #7 in mountinfo
also handle fstab entries with LABEL=, UUID= and PARTUUID=master
parent
d6d3173916
commit
c8d685c9d3
|
@ -311,10 +311,17 @@ get_maj_min() {
|
||||||
# $ find_block_device /usr
|
# $ find_block_device /usr
|
||||||
# 8:4
|
# 8:4
|
||||||
find_block_device() {
|
find_block_device() {
|
||||||
local _x _mpt _majmin _dev _fs _maj _min
|
local _x _mpt _majmin _dev _fs _maj _min _find_mpt
|
||||||
|
_find_mpt="$1"
|
||||||
if [[ $use_fstab != yes ]]; then
|
if [[ $use_fstab != yes ]]; then
|
||||||
while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
|
while read _x; do
|
||||||
[[ $_mpt = $1 ]] || continue
|
set -- $_x
|
||||||
|
_majmin="$3"
|
||||||
|
_mpt="$5"
|
||||||
|
[[ $8 = "-" ]] && shift
|
||||||
|
_fs="$8"
|
||||||
|
_dev="$9"
|
||||||
|
[[ $_mpt = $_find_mpt ]] || continue
|
||||||
[[ $_fs = nfs ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs ]] && { echo $_dev; return 0;}
|
||||||
[[ $_fs = nfs3 ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs3 ]] && { echo $_dev; return 0;}
|
||||||
[[ $_fs = nfs4 ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs4 ]] && { echo $_dev; return 0;}
|
||||||
|
@ -332,7 +339,7 @@ find_block_device() {
|
||||||
while read _dev _mpt _fs _x; do
|
while read _dev _mpt _fs _x; do
|
||||||
[ "${_dev%%#*}" != "$_dev" ] && continue
|
[ "${_dev%%#*}" != "$_dev" ] && continue
|
||||||
|
|
||||||
if [[ $_mpt = $1 ]]; then
|
if [[ $_mpt = $_find_mpt ]]; then
|
||||||
[[ $_fs = nfs ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs ]] && { echo $_dev; return 0;}
|
||||||
[[ $_fs = nfs3 ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs3 ]] && { echo $_dev; return 0;}
|
||||||
[[ $_fs = nfs4 ]] && { echo $_dev; return 0;}
|
[[ $_fs = nfs4 ]] && { echo $_dev; return 0;}
|
||||||
|
@ -355,16 +362,40 @@ find_block_device() {
|
||||||
# $ find_dev_fstype /dev/sda2;echo
|
# $ find_dev_fstype /dev/sda2;echo
|
||||||
# ext4
|
# ext4
|
||||||
find_dev_fstype() {
|
find_dev_fstype() {
|
||||||
local _x _mpt _majmin _dev _fs _maj _min
|
local _x _mpt _majmin _dev _fs _maj _min _find_dev
|
||||||
while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
|
_find_dev="$1"
|
||||||
[[ $_dev = $1 ]] || continue
|
strstr "$_find_dev" "/dev" || _find_dev="/dev/block/$_find_dev"
|
||||||
|
while read _x; do
|
||||||
|
set -- $_x
|
||||||
|
_majmin="$3"
|
||||||
|
_mpt="$5"
|
||||||
|
[[ $8 = "-" ]] && shift
|
||||||
|
_fs="$8"
|
||||||
|
_dev="$9"
|
||||||
|
strstr "$_dev" "/dev" || continue
|
||||||
|
[[ $_dev -ef $_find_dev ]] || continue
|
||||||
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs;
|
echo -n $_fs;
|
||||||
return 0;
|
return 0;
|
||||||
done < /proc/self/mountinfo
|
done < /proc/self/mountinfo
|
||||||
|
|
||||||
# fall back to /etc/fstab
|
# fall back to /etc/fstab
|
||||||
while read _dev _mpt _fs _x; do
|
while read _dev _mpt _fs _x; do
|
||||||
[[ $_dev = $1 ]] || continue
|
[ "${_dev%%#*}" != "$_dev" ] && continue
|
||||||
|
case "$_dev" in
|
||||||
|
LABEL=*)
|
||||||
|
_dev="$(echo $_dev | sed 's,/,\\x2f,g')"
|
||||||
|
_dev="/dev/disk/by-label/${_dev#LABEL=}"
|
||||||
|
;;
|
||||||
|
UUID=*)
|
||||||
|
_dev="/dev/disk/by-uuid/${_dev#UUID=}"
|
||||||
|
;;
|
||||||
|
PARTUUID=*)
|
||||||
|
_dev="/dev/disk/by-partuuid/${_dev#PARTUUID=}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[[ $_dev -ef $_find_dev ]] || continue
|
||||||
echo -n $_fs;
|
echo -n $_fs;
|
||||||
return 0;
|
return 0;
|
||||||
done < /etc/fstab
|
done < /etc/fstab
|
||||||
|
@ -381,16 +412,25 @@ find_dev_fstype() {
|
||||||
# $ find_mp_fstype /;echo
|
# $ find_mp_fstype /;echo
|
||||||
# ext4
|
# ext4
|
||||||
find_mp_fstype() {
|
find_mp_fstype() {
|
||||||
local _x _mpt _majmin _dev _fs _maj _min
|
local _x _mpt _majmin _dev _fs _maj _min _find_mpt
|
||||||
while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
|
_find_mpt="$1"
|
||||||
[[ $_mpt = $1 ]] || continue
|
while read _x; do
|
||||||
|
set -- $_x
|
||||||
|
_majmin="$3"
|
||||||
|
_mpt="$5"
|
||||||
|
[[ $8 = "-" ]] && shift
|
||||||
|
_fs="$8"
|
||||||
|
_dev="$9"
|
||||||
|
[[ $_mpt = $_find_mpt ]] || continue
|
||||||
|
[[ $_fs = "autofs" ]] && continue
|
||||||
echo -n $_fs;
|
echo -n $_fs;
|
||||||
return 0;
|
return 0;
|
||||||
done < /proc/self/mountinfo
|
done < /proc/self/mountinfo
|
||||||
|
|
||||||
# fall back to /etc/fstab
|
# fall back to /etc/fstab
|
||||||
while read _dev _mpt _fs _x; do
|
while read _dev _mpt _fs _x; do
|
||||||
[[ $_mpt = $1 ]] || continue
|
[ "${_dev%%#*}" != "$_dev" ] && continue
|
||||||
|
[[ $_mpt = $_find_mpt ]] || continue
|
||||||
echo -n $_fs;
|
echo -n $_fs;
|
||||||
return 0;
|
return 0;
|
||||||
done < /etc/fstab
|
done < /etc/fstab
|
||||||
|
|
|
@ -766,18 +766,18 @@ if [[ $hostonly ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_get_fs_type() (
|
_get_fs_type() (
|
||||||
[[ $1 ]] || return
|
[[ $1 ]] || return 1
|
||||||
if [[ -b $1 ]] && get_fs_env $1; then
|
if [[ -b $1 ]] && get_fs_env $1; then
|
||||||
echo "$(readlink -f $1)|$ID_FS_TYPE"
|
echo "$(readlink -f $1)|$ID_FS_TYPE"
|
||||||
return 1
|
return 0
|
||||||
fi
|
fi
|
||||||
if [[ -b /dev/block/$1 ]] && get_fs_env /dev/block/$1; then
|
if [[ -b /dev/block/$1 ]] && get_fs_env /dev/block/$1; then
|
||||||
echo "$(readlink -f /dev/block/$1)|$ID_FS_TYPE"
|
echo "$(readlink -f /dev/block/$1)|$ID_FS_TYPE"
|
||||||
return 1
|
return 0
|
||||||
fi
|
fi
|
||||||
if fstype=$(find_dev_fstype $1); then
|
if fstype=$(find_dev_fstype $1); then
|
||||||
echo "$1|$fstype"
|
echo "$1|$fstype"
|
||||||
return 1
|
return 0
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue