Still there in the last stable 0.16.13
I make a tape of 64MB, fill it with "dd" linux command in one pass.
from a C binary, I do "rewind" + "fsf 2" which fails (that's normal), but then, when I ask remaining space , I get 4 GB.
So I think this issue is still there.
This is my patch ... but please verify, it may be hiding a more subtle bug.
- Code: Select all
--- mhvtl/usr/vtltape.c (revision 10218)
+++ mhvtl/usr/vtltape.c (revision 13864)
@@ -943,15 +943,19 @@
MHVTL_DBG(1, "LOG SENSE: Tape Capacity page");
TapeCapacity.pcode_head.len = htons(sizeof(TapeCapacity) -
sizeof(TapeCapacity.pcode_head));
- if (tapeLoaded == TAPE_LOADED) {
- TapeCapacity.value01 =
- htonl(max_tape_capacity - c_pos.curr_blk);
- TapeCapacity.value03 = htonl(max_tape_capacity);
- } else {
- TapeCapacity.value01 = 0;
- TapeCapacity.value03 = 0;
- }
- b = memcpy(b, &TapeCapacity, sizeof(TapeCapacity));
+ TapeCapacity.value01 = 0;
+ TapeCapacity.value03 = 0;
+
+ if (tapeLoaded == TAPE_LOADED) {
+
+ TapeCapacity.value03 = htonl(max_tape_capacity);
+
+ if (c_pos.curr_blk <= max_tape_capacity) {
+ TapeCapacity.value01 =
+ htonl(max_tape_capacity - c_pos.curr_blk);
+ }
+ }
+ b = memcpy(b, &TapeCapacity, sizeof(TapeCapacity));
retval += sizeof(TapeCapacity);
break;
case DATA_COMPRESSION: /* Data Compression page */