@@ -206,8 +206,21 @@ fm_find_mount_target_for_device() {
206206 local device_path=" $1 "
207207 local resolved_device
208208 resolved_device=" $( fm_resolve_device_path " ${device_path} " ) "
209+ local mounted_target=" "
209210
210- findmnt -rn -S " ${resolved_device} " -o TARGET 2> /dev/null | head -n 1 || true
211+ mounted_target=" $( findmnt -rn -S " ${resolved_device} " -o TARGET 2> /dev/null | head -n 1 || true) "
212+ if [[ -n " ${mounted_target} " ]]; then
213+ fm_decode_findmnt_value " ${mounted_target} "
214+ return 0
215+ fi
216+
217+ return 0
218+ }
219+
220+ # 把 findmnt 输出里的转义序列还原成真实路径,避免带空格型号路径被误判成不存在。
221+ fm_decode_findmnt_value () {
222+ local value=" $1 "
223+ printf ' %b' " ${value} "
211224}
212225
213226# 解析单块受管磁盘的运行时状态。
@@ -252,6 +265,7 @@ fm_is_exact_mountpoint() {
252265 local mountpoint=" $1 "
253266 local mounted_target
254267 mounted_target=" $( findmnt -rn -M " ${mountpoint} " -o TARGET 2> /dev/null || true) "
268+ mounted_target=" $( fm_decode_findmnt_value " ${mounted_target} " ) "
255269 [[ " ${mounted_target} " == " ${mountpoint} " ]]
256270}
257271
@@ -1243,8 +1257,6 @@ fm_alias_disk() {
12431257 return 0
12441258 fi
12451259
1246- fm_run_privileged mkdir -p " ${FM_DISK_STATE_MOUNTPOINT} "
1247-
12481260 local alias_state
12491261 alias_state=" $(
12501262 fm_describe_bind_alias_state \
@@ -1265,6 +1277,8 @@ fm_alias_disk() {
12651277 ;;
12661278 esac
12671279
1280+ fm_run_privileged mkdir -p " ${FM_DISK_STATE_MOUNTPOINT} "
1281+
12681282 if fm_run_privileged mount --bind " ${FM_DISK_STATE_MOUNTED_TARGET} " " ${FM_DISK_STATE_MOUNTPOINT} " > /dev/null 2>&1 ; then
12691283 FM_OPERATION_LAST_ACTION=" alias_synced"
12701284 fm_log " info" " Bound ${FM_DISK_STATE_NAME} from ${FM_DISK_STATE_MOUNTED_TARGET} to ${FM_DISK_STATE_MOUNTPOINT} "
0 commit comments