diff -r d1d7dda73979 sys/ufs/ffs/ffs_alloc.c
--- sys/ufs/ffs/ffs_alloc.c	Fri Apr 22 09:34:33 2022 +0200
+++ sys/ufs/ffs/ffs_alloc.c	Fri Apr 22 09:42:26 2022 +0200
@@ -1649,10 +1649,12 @@ ffs_discardcb(struct work *wk, void *arg
 
 	start = FFS_FSBTOBYTES(fs, td->bno);
 	len = td->size;
+	vn_lock(td->devvp, LK_EXCLUSIVE | LK_RETRY);
 #ifdef TRIMDEBUG
 	error =
 #endif
 		VOP_FDISCARD(td->devvp, start, len);
+	VOP_UNLOCK(td->devvp);
 #ifdef TRIMDEBUG
 	printf("trim(%" PRId64 ",%ld):%d\n", td->bno, td->size, error);
 #endif
