+mkdir -p "$tmp/$tag"
+
+discid=$("$DVD_ID" -I "$dev")
+if [ -f "$tmp/$tag/discid" ]; then
+ read oldid <"$tmp/$tag/discid"
+ case $force,$oldid in
+ t,"$discid" | nil,"$discid")
+ ;;
+ nil,*)
+ fail "discid mismatch: expected \`$oldid' but drive has \`$discid'"
+ ;;
+ t,*)
+ warn "discid mismatch: expected \`$oldid' but drive has \`$discid'; continuing anway"
+ ;;
+ esac
+fi
+info "copying \`$discid'"
+echo "$discid" >"$tmp/$tag/discid.new"
+mv "$tmp/$tag/discid.new" "$tmp/$tag/discid"
+
+if [ -b "$dev" ]; then msz=$(blockdev --getsize64 "$dev")
+else msz=nil; fi
+
+echo "$dev" >"$tmp/$tag/device.new"
+mv "$tmp/$tag/device.new" "$tmp/$tag/device"
+
+accumulate_badblocks () {
+ if [ -f "$tmp/$tag/badblocks.new" ]; then
+ if [ ! -f "$tmp/$tag/badblocks" ]; then
+ { echo "## bad-blocks region map"; echo; } >"$tmp/$tag/badblocks"
+ fi
+ sed -n "/^[^#]/p" "$tmp/$tag/badblocks.new" >>"$tmp/$tag/badblocks"
+ rm "$tmp/$tag/badblocks.new"
+ fi