Annotation of ntddk/src/scsi/qic117/settpst.c, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1993 - Colorado Memory Systems, Inc.
                      4: All Rights Reserved
                      5: 
                      6: Module Name:
                      7: 
                      8:     settpst.c
                      9: 
                     10: Abstract:
                     11: 
                     12:     Calculates the number of bytes of data available on the tape (accounting
                     13:     for bad sectors)
                     14: 
                     15: Revision History:
                     16: 
                     17: 
                     18: 
                     19: 
                     20: --*/
                     21: 
                     22: 
                     23: //
                     24: // include files
                     25: //
                     26: 
                     27: #include <ntddk.h>
                     28: #include <ntddtape.h>
                     29: #include "common.h"
                     30: #include "q117.h"
                     31: #include "protos.h"
                     32: 
                     33: 
                     34: VOID
                     35: q117SetTpSt(
                     36:     PQ117_CONTEXT Context
                     37:     )
                     38: 
                     39: /*++
                     40: 
                     41: Routine Description:
                     42: 
                     43:     Uses the globals CurrentOperation.EndOfUsedTape,
                     44:     and CurrentTape.BadSectors to set the
                     45:     Media Parameters.
                     46: 
                     47: Arguments:
                     48: 
                     49:     Context -
                     50: 
                     51: Return Value:
                     52: 
                     53:     None
                     54: 
                     55: --*/
                     56: 
                     57: {
                     58:     ULONG numgood,numbad;
                     59:     SEGMENT segmentIndex;
                     60:     SEGMENT lastSegment;
                     61:     ULONG BytesUsed;
                     62: 
                     63:     //
                     64:     // If we have read to the end of the volume segment
                     65:     //
                     66: 
                     67:     if (Context->CurrentOperation.EndOfUsedTape) {
                     68: 
                     69:         //
                     70:         // Count the number of used sectors
                     71:         //
                     72: 
                     73:         lastSegment = Context->CurrentOperation.EndOfUsedTape;
                     74: 
                     75:         numgood = 0;
                     76: 
                     77:         for (segmentIndex = 0 ; segmentIndex <= lastSegment ; ++segmentIndex) {
                     78: 
                     79:             numbad = q117CountBits(Context, segmentIndex, 0l);
                     80: 
                     81:             if (BLOCKS_PER_SEGMENT-ECC_BLOCKS_PER_SEGMENT-numbad > 0 &&
                     82:                     segmentIndex > Context->CurrentTape.VolumeSegment) {
                     83: 
                     84:                 numgood += BLOCKS_PER_SEGMENT-ECC_BLOCKS_PER_SEGMENT-numbad;
                     85: 
                     86:             }
                     87:         }
                     88: 
                     89:         BytesUsed = numgood * BYTES_PER_SECTOR;
                     90: 
                     91:         numgood = 0;
                     92: 
                     93:         lastSegment = Context->CurrentTape.LastSegment;
                     94: 
                     95:         for (;segmentIndex<=lastSegment;++segmentIndex) {
                     96: 
                     97:             numbad = q117CountBits(Context, segmentIndex, 0l);
                     98: 
                     99:             if (BLOCKS_PER_SEGMENT-ECC_BLOCKS_PER_SEGMENT-numbad > 0) {
                    100: 
                    101:                 numgood += BLOCKS_PER_SEGMENT-ECC_BLOCKS_PER_SEGMENT-numbad;
                    102: 
                    103:             }
                    104:         }
                    105: 
                    106:         Context->CurrentTape.MediaInfo->Remaining.LowPart =
                    107:             numgood * BYTES_PER_SECTOR;
                    108: 
                    109:         Context->CurrentTape.MediaInfo->Remaining.HighPart = 0;
                    110: 
                    111:         Context->CurrentTape.MediaInfo->Capacity.LowPart =
                    112:             Context->CurrentTape.MediaInfo->Remaining.LowPart + BytesUsed;
                    113: 
                    114:         Context->CurrentTape.MediaInfo->Capacity.HighPart = 0;
                    115:         Context->CurrentTape.MediaInfo->BlockSize = BYTES_PER_SECTOR;
                    116:         Context->CurrentTape.MediaInfo->PartitionCount = 0;
                    117: 
                    118:     } else {
                    119: 
                    120:         CheckedDump(QIC117INFO,("q117SetTpSt: endblock not set\n"));
                    121: 
                    122:     }
                    123: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.