* With some aws tape images, I have gotten some errors * We can install Linux/s390x to hercules with tun network support on NetBSD Changelog: unknown
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
$NetBSD: patch-scsitape.c,v 1.2 2013/10/15 14:14:53 ryoon Exp $
|
|
|
|
--- scsitape.c.orig 2013-06-14 21:32:42.000000000 +0000
|
|
+++ scsitape.c
|
|
@@ -1261,7 +1261,11 @@ int readblkid_scsitape ( DEVBLK* dev, BY
|
|
// value, also known as the >>LOGICAL<< value and *NOT*
|
|
// the absolute/physical device-relative value)
|
|
|
|
+#if defined(BSD) && BSD >= 199306
|
|
+ struct mtget mtpos;
|
|
+#else
|
|
struct mtpos mtpos;
|
|
+#endif
|
|
BYTE blockid[4];
|
|
|
|
if (ioctl_tape( dev->fd, MTIOCPOS, (char*) &mtpos ) < 0 )
|
|
@@ -1326,6 +1330,19 @@ int locateblk_scsitape ( DEVBLK* dev, U3
|
|
mtop.mt_count = CSWAP32( mtop.mt_count ); // (host <- guest)
|
|
mtop.mt_op = MTSEEK;
|
|
|
|
+#if defined(BSD) && BSD >= 199306
|
|
+ /* Find out where we are so we can do a relative seek */
|
|
+ {
|
|
+ struct mtget here;
|
|
+
|
|
+ rc = ioctl_tape( dev->fd, MTIOCGET, (char*)&here );
|
|
+ if (rc >= 0) {
|
|
+ mtop.mt_count -= here.mt_blkno;
|
|
+ mtop.mt_op = MTFSR;
|
|
+ }
|
|
+ }
|
|
+#endif /* BSD */
|
|
+
|
|
// Ask the actual hardware to do an actual physical locate...
|
|
|
|
if ((rc = ioctl_tape( dev->fd, MTIOCTOP, (char*)&mtop )) < 0)
|