From e84b1cd18b86a06311c65f4d9698c231cc1d44b0 Mon Sep 17 00:00:00 2001 From: Chris Down Date: Sat, 30 Dec 2023 09:25:42 +0000 Subject: [PATCH] ext: Make work on non-rotational --- bin/enable-usb-trim | 2 +- bin/ext | 11 ++++++++++- bin/make-extdrive | 16 +++++++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/bin/enable-usb-trim b/bin/enable-usb-trim index 0e1772bc..0fea5446 100755 --- a/bin/enable-usb-trim +++ b/bin/enable-usb-trim @@ -4,7 +4,7 @@ shopt -s nullglob device=${1?} -provs=( /sys/block/"$device"/device/scsi_disk/*/provisioning_mode ) +provs=( /sys/block/"${device##*/}"/device/scsi_disk/*/provisioning_mode ) num_provs=${#provs[@]} if (( num_provs != 1 )); then diff --git a/bin/ext b/bin/ext index dd5e2171..524ddb54 100755 --- a/bin/ext +++ b/bin/ext @@ -5,10 +5,19 @@ if ! (( UID )); then exit 1 fi +bpl=/dev/disk/by-partlabel/ext + case ${1?} in mount) sudo mkdir -p /mnt/scratch{,-baduser} - sudo cryptsetup luksOpen /dev/disk/by-partlabel/ext ext + + # This USB enclosure reports non-rotational, and TRIM isn't enabled by + # default, sigh... + part=$(readlink -f "$bpl") + device=${part%[0-9]} + sudo enable-usb-trim "$device" + + sudo cryptsetup luksOpen --allow-discards /dev/disk/by-partlabel/ext ext sudo mount /dev/mapper/ext /mnt/scratch-baduser sudo bindfs -u "$(id -u)" --create-for-user="$(stat -c %u /mnt/scratch-baduser)" /mnt/scratch-baduser /mnt/scratch ;; diff --git a/bin/make-extdrive b/bin/make-extdrive index 683e5669..5e20bcb3 100755 --- a/bin/make-extdrive +++ b/bin/make-extdrive @@ -1,5 +1,12 @@ #!/bin/bash -ex +update_parts() { + local device + device=${1?} + cat > /sys/block/"${1##*/}"/uevent <<< change + sleep 5 # hold for reprobe +} + device=${1?} label=${2?} cryptdev=ext @@ -12,16 +19,15 @@ if [[ $device == *[0-9] ]]; then fi enable-usb-trim "$device" -blkdiscard "$device" +blkdiscard -f "$device" + +update_parts "$device" wipefs -a "$device" sgdisk -Z "$device" sgdisk -n 0:0:0 -c 1:"$label" "$device" -cat > /sys/block/"${device##*/}"/uevent <<< change - -sleep 5 # hold for reprobe - +update_parts "$device" part="$device"1 unset device # safety measure to make sure we don't introduce some bug that