Skip to content

Commit 3378f68

Browse files
author
olevole
committed
bhyve-dsk: also select for ".vhd" path postfix
1 parent fd436d2 commit 3378f68

File tree

3 files changed

+39
-23
lines changed

3 files changed

+39
-23
lines changed

share/bsdconfig/cbsd/bhyvedsk-newdsk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ dialog_menu_main()
1919

2020
local prompt="${_desc}"
2121

22-
_dsk_controller_type=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT type FROM bhyve_dskcontroller WHERE name=\"${new_dsk_controller}\" )
22+
_dsk_controller_type=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT type FROM bhyve_dskcontroller WHERE name='${new_dsk_controller}'" )
2323

2424
# if no controller with specific name, than set controller type as controller name - probable direct connect via virtio-blk/ahci-hd
2525
[ -z "${_dsk_controller_type}" ] && _dsk_controller_type="${new_dsk_controller}"

tools/bhyve-dsk

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,20 @@ dsk_detach()
212212
eval _val="\$$i"
213213
case "${i}" in
214214
dsk_path)
215-
[ -z "${_val}" ] && err 1 "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
215+
if [ -z "${_val}" ]; then
216+
${ECHO} "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
217+
bhyve-dsk mode=list jname=${jname} display=dsk_controller,dsk_path
218+
exit 1
219+
fi
216220
# trim .vhd if necessary
217221
dsk_path=$( echo ${_val} | ${SED_CMD} 's:\.vhd::g' )
218222
;;
219223
dsk_controller)
220-
[ -z "${_val}" ] && err 1 "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
224+
if [ -z "${_val}" ]; then
225+
${ECHO} "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
226+
bhyve-dsk mode=list jname=${jname} display=dsk_controller,dsk_path
227+
exit 1
228+
fi
221229
# check for valid controller
222230
case "${_val}" in
223231
virtio-blk|ahci-hd)
@@ -232,39 +240,39 @@ dsk_detach()
232240
[ -z "${_val}" ] && err 1 "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
233241
done
234242

235-
_res=$( substr --pos=0 --len=5 --str=${dsk_path} )
243+
_res=$( substr --pos=0 --len=5 --str="${dsk_path}" )
236244
if [ "${_res}" = "/dev/" ]; then
237245
# raw device
238246
local lunname=$( ${BASENAME_CMD} ${dsk_path} )
239-
_devpath=$( cbsdsqlro storage_media SELECT path FROM media WHERE jname=\"${jname}\" AND type=\"hdd\" AND name=\"hdd-${lunname}\" LIMIT 1 2>/dev/null )
240-
[ -z "${_devpath}" ] && err 1 "${N1_COLOR}Unable to find in media DB: SELECT path FROM media WHERE jname=\"${jname}\" AND type=\"hdd\" AND name=\"hdd-${lunname}\"${N0_COLOR}"
247+
_devpath=$( cbsdsqlro storage_media "SELECT path FROM media WHERE jname='${jname}' AND type='hdd' AND ( name='hdd-${lunname}' OR name='hdd-${lunname}.vhd' ) LIMIT 1;" 2>/dev/null )
248+
[ -z "${_devpath}" ] && err 1 "${N1_COLOR}Unable to find in media DB: SELECT path FROM media WHERE jname='${jname}' AND type='hdd' AND ( name='hdd-${lunname}' OR name='hdd-${lunname}.vhd' );${N0_COLOR}"
241249
else
242250
# check in media table
243-
_devpath=$( cbsdsqlro storage_media SELECT path FROM media WHERE jname=\"${jname}\" AND type=\"hdd\" AND name=\"hdd-${dsk_path}.vhd\" LIMIT 1 2>/dev/null )
244-
[ -z "${_devpath}" ] && err 1 "${N1_COLOR}Unable to find in media DB: SELECT path FROM media WHERE jname=\"${jname}\" AND type=\"hdd\" AND name=\"hdd-${dsk_path}.vhd\"${N0_COLOR}"
251+
_devpath=$( cbsdsqlro storage_media "SELECT path FROM media WHERE jname='${jname}' AND type='hdd' AND ( name='hdd-${dsk_path}.vhd' OR name='hdd-${dsk_path}' ) LIMIT 1;" 2>/dev/null )
252+
[ -z "${_devpath}" ] && err 1 "${N1_COLOR}Unable to find in media DB: SELECT path FROM media WHERE jname='${jname}' AND type='hdd' AND ( name='hdd-${dsk_path}.vhd' OR name='hdd-${dsk_path}' );${N0_COLOR}"
245253
fi
246254

247255
if [ "${_res}" = "/dev/" ]; then
248256
# raw device
249-
_val=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT dsk_path FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}\" AND dsk_type=\"vhd\" 2>/dev/null )
250-
[ -z "${_val}" ] && err 1 "${N1_COLOR}Unable to find in bhyvedsk: SELECT dsk_path FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}\" AND dsk_type=\"vhd\"${N0_COLOR}"
257+
_val=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT dsk_path FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND ( dsk_path='${dsk_path}' OR dsk_path='${dsk_path}.vhd' ) AND dsk_type='vhd' LIMIT 1;" 2>/dev/null )
258+
[ -z "${_val}" ] && err 1 "${N1_COLOR}Unable to find in bhyvedsk: SELECT dsk_path FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND ( dsk_path='${dsk_path}' OR dsk_path='${dsk_path}.vhd' ) AND dsk_type='vhd'${N0_COLOR}"
251259
media mode=detach name=hdd-${lunname} path=${_devpath} type=hdd jname=${jname}
252260
else
253-
_val=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite SELECT dsk_path FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}.vhd\" AND dsk_type=\"vhd\" 2>/dev/null )
254-
[ -z "${_val}" ] && err 1 "${N1_COLOR}Unable to find in bhyvedsk: SELECT dsk_path FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}.vhd\" AND dsk_type=\"vhd\"${N0_COLOR}"
261+
_val=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT dsk_path FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND ( name='hdd-${dsk_path}.vhd' OR name='hdd-${dsk_path}' ) AND dsk_type='vhd' LIMIT 1;" 2>/dev/null )
262+
[ -z "${_val}" ] && err 1 "${N1_COLOR}Unable to find in bhyvedsk: SELECT dsk_path FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND ( name='hdd-${dsk_path}.vhd' OR name='hdd-${dsk_path}' ) AND dsk_type='vhd'${N0_COLOR}"
255263
media mode=detach name=hdd-${dsk_path}.vhd path=${_devpath} type=hdd jname=${jname}
256264
fi
257265

258266
if [ "${_res}" = "/dev/" ]; then
259267
# raw device
260-
cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite DELETE FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}\" AND dsk_type=\"vhd\"
268+
cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite "DELETE FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND dsk_path='${dsk_path}' AND dsk_type='vhd'"
261269
# scan for symlink to raw devices
262270
${FIND_CMD} ${jaildatadir}/${jname}-${jaildatapref}/ -mindepth 1 -maxdepth 1 -name dsk\*.vhd -type l | while read _link; do
263271
_realpath=$( ${READLINK_CMD} ${_link} )
264272
[ "${_realpath}" = "${dsk_path}" ] && ${RM_CMD} ${_link}
265273
done
266274
else
267-
cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite DELETE FROM bhyvedsk WHERE dsk_controller=\"${dsk_controller}\" AND dsk_path=\"${dsk_path}.vhd\" AND dsk_type=\"vhd\"
275+
cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite DELETE FROM bhyvedsk WHERE dsk_controller='${dsk_controller}' AND dsk_path='${dsk_path}.vhd' AND dsk_type='vhd'
268276
fi
269277

270278
${ECHO} "${N2_COLOR}${dsk_path}${N1_COLOR} dettached (but not removed!)${N0_COLOR}"
@@ -280,12 +288,20 @@ dsk_delete()
280288
eval _val="\$$i"
281289
case "${i}" in
282290
dsk_path)
283-
[ -z "${_val}" ] && err 1 "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
291+
if [ -z "${_val}" ]; then
292+
${ECHO} "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
293+
bhyve-dsk mode=list jname=${jname} display=dsk_controller,dsk_path
294+
exit 1
295+
fi
284296
# trim .vhd if necessary
285297
dsk_path=$( echo ${_val} | ${SED_CMD} 's:\.vhd::g' )
286298
;;
287299
dsk_controller)
288-
[ -z "${_val}" ] && err 1 "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
300+
if [ -z "${_val}" ]; then
301+
${ECHO} "${N1_COLOR}bhyve-dsk error: ${N2_COLOR}${i}= ${N1_COLOR}is mandatory${N0_COLOR}"
302+
bhyve-dsk mode=list jname=${jname} display=dsk_controller,dsk_path
303+
exit 1
304+
fi
289305
# check for valid controller
290306
case "${_val}" in
291307
virtio-blk|ahci-hd)

tools/media

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -448,13 +448,13 @@ storage_detach()
448448
[ -z "${path}" ] && err 1 "${N1_COLOR}media: ${N2_COLOR}path=${N0_COLOR}"
449449
[ -z "${jname}" ] && err 1 "${N1_COLOR}Give me ${N2_COLOR}jname=${N0_COLOR}"
450450

451-
local dsk_path dsk_name
452-
local mydb virtio_type already_attached_to_me
451+
local dsk_path= dsk_name=
452+
local mydb= virtio_type= already_attached_to_me=
453453

454-
attached_to_me=$( cbsdsqlro storage_media "SELECT jname FROM media WHERE path='${path}' AND name='${name}' AND jname='${jname}' LIMIT 1" )
454+
attached_to_me=$( cbsdsqlro storage_media "SELECT jname FROM media WHERE path='${path}' AND ( name='${name}' OR NAME='${name}.vhd' ) AND jname='${jname}' LIMIT 1" )
455455
[ "${attached_to_me}" != "${jname}" ] && err 1 "${N1_COLOR}disk ${name} with name:${name} and path:${path} is not attached to: ${N2_COLOR}${jname}${N0_COLOR}"
456456

457-
attached_to_jname=$( cbsdsqlro storage_media "SELECT jname FROM media WHERE path='${path}' AND name='${name}' AND jname!='${jname}' LIMIT 1" )
457+
attached_to_jname=$( cbsdsqlro storage_media "SELECT jname FROM media WHERE path='${path}' AND ( name='${name}' OR NAME='${name}.vhd' ) AND jname!='${jname}' LIMIT 1" )
458458

459459
# not attached?
460460
if [ "${attached_to_jname}" = "-" ]; then
@@ -478,16 +478,16 @@ storage_detach()
478478
;;
479479
hdd)
480480
mydb="${jailsysdir}/${jname}/local.sqlite"
481-
cbsdsqlrw ${mydb} "DELETE FROM ${emulator}dsk WHERE dsk_path='${dsk_path}' AND name='${dsk_name}'"
481+
cbsdsqlrw ${mydb} "DELETE FROM ${emulator}dsk WHERE dsk_path='${dsk_path}' AND ( name='${dsk_name} OR name='${dsk_name}.vhd' )"
482482
;;
483483
esac
484484

485485
if [ -n "${attached_to_jname}" ]; then
486486
# shared disk: delete record with my jname
487-
sql="DELETE FROM media WHERE name='${dsk_name}' AND path='${dsk_path}' AND jname='${jname}'"
487+
sql="DELETE FROM media WHERE ( name='${dsk_name}' name='${dsk_name}.vhd' ) AND path='${dsk_path}' AND jname='${jname}'"
488488
else
489489
# disk is orphaned now: drop to '-' jname
490-
sql="UPDATE media SET jname='-' WHERE jname='${jname}' AND name='${dsk_name}' AND path='${dsk_path}'"
490+
sql="UPDATE media SET jname='-' WHERE jname='${jname}' AND ( name='${dsk_name}' OR name='${dsk_name}.vhd' ) AND path='${dsk_path}'"
491491
fi
492492

493493
[ ${quiet} -ne 1 ] && echo "${sql}"

0 commit comments

Comments
 (0)