diff --git a/utils/uvol/files/ubi.sh b/utils/uvol/files/ubi.sh
index 0a1b73093..2da7e309b 100644
--- a/utils/uvol/files/ubi.sh
+++ b/utils/uvol/files/ubi.sh
@@ -119,14 +119,14 @@ removevol() {
 	local voldev=$(getdev "$@")
 	local evdata
 	[ "$voldev" ] || return 2
-	local volnum=${voldev#${ubidev}_}
 	if vol_is_mode $voldev rw ; then
 		evdata="{\"name\": \"$1\", \"action\": \"down\", \"device\": \"/dev/$voldev\"}"
-	elif vol_is_mode $voldev ro ; then
+	elif vol_is_mode $voldev ro && [ -e "/dev/ubiblock${voldev:3}" ]; then
 		evdata="{\"name\": \"$1\", \"action\": \"down\", \"device\": \"/dev/ubiblock${voldev:3}\"}"
 	fi
+	local volnum=${voldev#${ubidev}_}
 	ubirmvol /dev/$ubidev -n $volnum || return $?
-	ubus send block.volume "$evdata"
+	[ "$evdata" ] && ubus send block.volume "$evdata"
 }
 
 activatevol() {
diff --git a/utils/uvol/files/uvol b/utils/uvol/files/uvol
index a095b3eff..4958d31ff 100644
--- a/utils/uvol/files/uvol
+++ b/utils/uvol/files/uvol
@@ -3,6 +3,7 @@
 # uvol prototype
 # future development roadmap (aka. to-do):
 # * re-implement in C (use libubox, execve lvm/ubi*)
+# * hash to validate volume while writing
 # * add atomic batch processing for use by container/package manager
 
 if [ -z "$1" ]; then cat <<EOF