diff --git a/metropolis/node/build/mkimage/osimage/osimage.go b/metropolis/node/build/mkimage/osimage/osimage.go
index a09f5d1..d0ccaef 100644
--- a/metropolis/node/build/mkimage/osimage/osimage.go
+++ b/metropolis/node/build/mkimage/osimage/osimage.go
@@ -100,7 +100,7 @@
 func Create(params *Params) (*efivarfs.LoadOption, error) {
 	// Discard the entire device, we're going to write new data over it.
 	// Ignore errors, this is only advisory.
-	params.Output.Discard(0, params.Output.BlockCount())
+	params.Output.Discard(0, params.Output.BlockCount()*params.Output.BlockSize())
 
 	tbl, err := gpt.New(params.Output)
 	if err != nil {
diff --git a/metropolis/pkg/blockdev/blockdev.go b/metropolis/pkg/blockdev/blockdev.go
index c7b2875..0e3c6e1 100644
--- a/metropolis/pkg/blockdev/blockdev.go
+++ b/metropolis/pkg/blockdev/blockdev.go
@@ -154,7 +154,8 @@
 	if err := s.inRange(startByte, endByte); err != nil {
 		return err
 	}
-	return s.b.Discard(s.startBlock+startByte, s.startBlock+endByte)
+	offset := s.startBlock * s.b.BlockSize()
+	return s.b.Discard(offset+startByte, offset+endByte)
 }
 
 func (s *Section) OptimalBlockSize() int64 {
@@ -165,7 +166,8 @@
 	if err := s.inRange(startByte, endByte); err != nil {
 		return err
 	}
-	return s.b.Zero(s.startBlock+startByte, s.startBlock+endByte)
+	offset := s.startBlock * s.b.BlockSize()
+	return s.b.Zero(offset+startByte, offset+endByte)
 }
 
 // GenericZero implements software-based zeroing. This can be used to implement
diff --git a/metropolis/pkg/blockdev/blockdev_linux.go b/metropolis/pkg/blockdev/blockdev_linux.go
index b40e5cd..6d87c87 100644
--- a/metropolis/pkg/blockdev/blockdev_linux.go
+++ b/metropolis/pkg/blockdev/blockdev_linux.go
@@ -44,7 +44,7 @@
 	var args [2]uint64
 	var err unix.Errno
 	args[0] = uint64(startByte)
-	args[1] = uint64(endByte)
+	args[1] = uint64(endByte - startByte)
 	if ctrlErr := d.rawConn.Control(func(fd uintptr) {
 		_, _, err = unix.Syscall(unix.SYS_IOCTL, fd, unix.BLKDISCARD, uintptr(unsafe.Pointer(&args[0])))
 	}); ctrlErr != nil {
@@ -67,7 +67,7 @@
 	var args [2]uint64
 	var err error
 	args[0] = uint64(startByte)
-	args[1] = uint64(endByte)
+	args[1] = uint64(endByte - startByte)
 	if ctrlErr := d.rawConn.Control(func(fd uintptr) {
 		// Attempts to leverage discard guarantees to provide extremely quick
 		// metadata-only zeroing.
@@ -215,7 +215,7 @@
 	if errors.Is(err, unix.EOPNOTSUPP) {
 		return errors.ErrUnsupported
 	}
-	if err != unix.Errno(0) {
+	if err != nil {
 		return fmt.Errorf("failed to discard: %w", err)
 	}
 	return nil
