From fa7499b001f2325623c36abad1b4a39ff5160be9 Mon Sep 17 00:00:00 2001 From: TQ Hirsch Date: Sun, 26 Jan 2025 03:02:54 +0100 Subject: [PATCH] Initial commit --- DroidSansMonoSlashed.ttf | Bin 0 -> 117744 bytes README.adoc | 26 + docproc.py | 332 + prelude.ps | 126 + sources/mscp.txt | 29145 +++++++++++++++++++++++++++++++++++++ sources/tmscp.txt | 9676 ++++++++++++ 6 files changed, 39305 insertions(+) create mode 100644 DroidSansMonoSlashed.ttf create mode 100644 README.adoc create mode 100644 docproc.py create mode 100644 prelude.ps create mode 100644 sources/mscp.txt create mode 100644 sources/tmscp.txt diff --git a/DroidSansMonoSlashed.ttf b/DroidSansMonoSlashed.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c44b47edc5882630da72658926f5d295717ad62 GIT binary patch literal 117744 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 self.change_col and line[self.change_col] != ' ' + if len(line) >= self.marginalia: + line_no = line[:self.ln_cols] + content = line[self.marginalia:] + else: + line_no = (line + " " * self.ln_cols)[:self.ln_cols] + content = "" + self.lines.append(Line(line_no = line_no, content=content, is_change=is_change)) + + def flush_page(self): + height = len(self.lines) + width = max(len(line.content) for line in self.lines) + + last_chapter = self.last_chapter + chapter_m = self.ch_pat.match(self.lines[2].content) + if chapter_m is not None: + self.last_chapter = chapter = chapter_m.group(1) + page = chapter_m.group(2) + else: + print(f"Warning: no page number found on pg {self.pg_start}", file=sys.stderr) + chapter = last_chapter + page = self.guess_next_page() + + self.last_page = page + + if chapter != last_chapter: + if chapter == "CONTENTS": + self.is_toc = True + else: + self.is_toc = False + + lines = list(enumerate(self.lines)) + links = [] + dests = [] + + if self.is_toc: + # Process TOC entries + partial_toc = "" + partial_toc_start = None + for i, line in lines[self.header_lines:-self.trailer_lines]: + if line.content.strip() == "": + partial_toc_start = None + partial_toc = "" + continue + elif line.content.strip() == "CONTENTS": + dests.append((i, "sec.CONTENTS")) + self.outline.append(Outline("sec.CONTENTS", "CONTENTS", [])) + continue + elif m := self.toc_chapter_re.match(line.content): + label = m.group(1) + title = m.group(2) + if ' ' in label: + num = label.split(' ')[1] + else: + num = label + if label == "FIGURES": + self.toc_pfx = "sec.FIGURES." + dests.append((i, "sec.FIGURES")) + elif label == "TABLES": + self.toc_pfx = "sec.TABLES." + dests.append((i, "sec.TABLES")) + partial_toc_start = None + partial_toc = "" + left = len(line.content) - len(line.content.lstrip()) + right = len(line.content.rstrip()) + links.append((left, i, right, i, f"sec.{num}")) + self.outline.append(Outline(f"sec.{num}", f"{label} - {title}" if title else label, [])) + continue + + # TODO: This won't work if an entry is split across pages. + # To fix, partial_toc and partial_toc_start must be saved after/restored before + # this function + if partial_toc_start is not None: + partial_toc += " " + line.content.strip() + else: + partial_toc = line.content.rstrip() + partial_toc_start = i + + if m := self.toc_section_re.match(partial_toc): + num = m.group(1) + title = m.group(2) + left = partial_toc.index(num[0]) + right = len(line.content.rstrip()) + links.append((left, partial_toc_start, right, i, f"{self.toc_pfx}{num}")) + self.add_outline(self.toc_pfx + num, title) + partial_toc = "" + partial_toc_start = None + elif partial_toc: + print(f"No match: {partial_toc!r}", file=sys.stderr) + else: + # Process body lines + partial_toc = "" + partial_toc_start = None + for i, line in lines[self.header_lines:-self.trailer_lines]: + if line.content.strip() == "": + partial_toc_start = None + partial_toc = "" + continue + elif m := self.bdy_chapter_re.match(line.content): + num = "sec." + m.group(1) + dests.append((i, num)) + + if partial_toc_start is not None: + partial_toc += " " + line.content.strip() + else: + partial_toc = line.content.rstrip() + partial_toc_start = i + + if m := self.bdy_section_re.match(partial_toc): + num = m.group(1) + dests.append((partial_toc_start, "sec." + num)) + + + + + # Begin emitting page + self.emit(f"%%Page: {ps_string(page)} {self.page_n}") + self.emit(f"{height} {width} {ps_string(page)} bP") + + + for i, line in lines[:self.header_lines]: + self.emit(f"{i} gL {ps_string(line.content)} tH") + + for i, line in lines[self.header_lines:-self.trailer_lines]: + chg = " mC" if line.is_change else "" + self.emit(f"{i} gL {ps_string(line.line_no)} tN {ps_string(line.content)} tB{chg}") + + for i, line in lines[-self.trailer_lines:]: + self.emit(f"{i} gL {ps_string(line.content)} tH") + + for link in links: + self.emit(f"{link[0]} {link[1]} {link[2]} {link[3]} {ps_string(link[4])} mL") + for dest in dests: + self.emit(f"{dest[0]} {ps_string(dest[1])} mD") + + self.emit("sP") + + self.lines = [] + self.pg_start = self.input_line + + def guess_next_page(self): + if self.last_page is not None: + if m := re.match(r"^(\d*-)(\d*)$", self.last_page): + return f"{m.group(1)}{1+int(m.group(2))}" + else: + return romanize(1 + unromanize(self.last_page)) + else: + return "i" + + def emit(self, s): + print(s, file=self.out) + + def emit_trailer(self): + self.emit("%%Trailer") + self.emit_outline(self.outline) + self.emit("%%EOF") + + def emit_outline(self, outline: list[Outline]): + for item in outline: + self.emit(f"{ps_string(item.dest_name)} {ps_string(item.label)} {len(item.subitems)} mO") + self.emit_outline(item.subitems) + + def add_outline(self, dest, title): + entry = Outline(dest, title, []) + typ = dest.split('.', 1)[0] + + def recur(pfx, elist: list[Outline]): + for item in elist: + if dest.startswith(item.dest_name + "."): + recur(item.dest_name, item.subitems) + break + else: + if typ == "sec": + assert dest.rsplit(".", 1)[0] == pfx + elist.append(entry) + recur(typ, self.outline) + + +@click.command() +@click.option("-o", "--output", type=click.File("w")) +@click.argument("input", type=click.File("r"), default="-") +def main(output, input): + proc = Processor(output or sys.stdout) + for line in input: + proc.do_line(line.strip("\n")) + proc.flush_page() + proc.emit_trailer() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/prelude.ps b/prelude.ps new file mode 100644 index 0000000..38f7bbe --- /dev/null +++ b/prelude.ps @@ -0,0 +1,126 @@ +%!PS-Adobe-3.0 +%%Creator: Docproc.py +%%Orientation: Portrait +%%DocumentMedia: Letter 612 792 90 white ( ) +%%BeginDefaults +%%PageMedia: Letter +%%EndDefaults + +%%BeginProlog +/zDN false def +/zNW zDN { 6 } { 0 } ifelse def +/bP { % begin Page + % height width pageName -- + % height and width are in characters + + mark exch /Label exch /PAGELABEL pdfmark + dup + zPW exch zNW add zCW mul sub 2 div zNW zCW mul add /zX0 exch def + 1 add zCW mul zX0 add /zXC exch def + zPH exch + % -- zPH nlines + 1 sub zLS mul zCH add + % -- zPH zTH + add 2 div zCH sub /zY0 exch def +} bind def +/gL { + zLS mul neg zY0 add /zY1 exch def +} bind def % go line +/tH { + zX0 zY1 moveto + 0.5 setgray + show +} bind def % text Header +/tN zDN {{ + zX0 zNW 1 add zCW mul sub zY1 moveto + 0.7 setgray + show +}} {{ }} ifelse bind def % text lineNo +/tB { + zX0 zY1 moveto + 0 setgray + show +} bind def % text body +/mC { + + 0.75 0 0 setrgbcolor + newpath + 1 setlinewidth + zXC zY1 -0.2 zLS mul add moveto + 0 zLS rlineto + stroke +} bind def % mark Change +/fC { + 0.2 add zLS mul neg zY0 add exch + zCW mul zX0 add exch +} bind def % from Charpos +/mL { % -- left top right bottom name + 5 dict begin + /_N exch def + /_B exch def + /_R exch def + /_T exch def + /_L exch def + mark + /Rect [ + _L _B fC + _R _T 1 sub fC + ] + /Border [ 0 0 0.5 ] + /C [ 0 0 1 ] + /Subtype /Link + /Dest _N cvn + /ANN + pdfmark + +% 0 1 0 setrgbcolor +% 1 setlinewidth +% newpath +% +% _L _T 1 sub fC moveto +% _R _T 1 sub fC lineto +% _R _B fC lineto +% _L _B fC lineto +% closepath +% stroke + end +} bind def % mark Link +/mD { % -- top name + 2 dict begin + /_N exch def + /_T exch 0 exch 1 sub fC exch pop def + mark + /Dest _N cvn + /View [ /XYZ null _T null ] + /DEST pdfmark + end +} bind def % mark Destination +/mO { % -- dest title subitems + 3 dict begin + /_S exch def + /_T exch def + /_D exch def + mark + /Title _T + _S 0 gt { + /Count _S + } if + /Dest _D cvn + /OUT pdfmark + end +} bind def +/sP { showpage } bind def + +%%EndProlog + +%%BeginSetup +/zCH 10 def % char height +/zLS zCH 1.2 mul def % line spacing +(DroidSansMonoSlashed) findfont zCH scalefont setfont + +% Globals +/zCW (M) stringwidth pop def % char width +/zPH { currentpagedevice /PageSize get 1 get } def % page height +/zPW { currentpagedevice /PageSize get 0 get } def % page width +%%EndSetup + diff --git a/sources/mscp.txt b/sources/mscp.txt new file mode 100644 index 0000000..a26f106 --- /dev/null +++ b/sources/mscp.txt @@ -0,0 +1,29145 @@ + + + + + + + + + + + + + + + + Mass Storage Control Protocol + + ECO Controlled Version 2.4.0 + + 11 June 1992 + + + + + + + Send inquiries and comments to SSAG::SSAG + + + + + + This document defines the Mass Storage Control Protocol + (MSCP), an applications protocol intended for use + between hosts and intelligent mass storage subsystems. + + + + + + + + DIGITAL EQUIPMENT CORPORATION CONFIDENTIAL AND PROPRIETARY + + This document is an unpublished work and contains + valuable trade secrets which are confidential and + proprietary to Digital Equipment Corporation, and may + only be disclosed to individuals who have entered into a + confidentiality agreement with Digital, and may not be + copied or reproduced in whole or in part. + + Copyright (c) Digital Equipment Corporation 1992. All + Rights Reserved. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page ii + 11 June 1992 + + + CONTENTS + + + + CHAPTER 1 INTRODUCTION + + 1.1 Overview Of MSCP Subsystem . . . . . . . . 1-1 + 1.2 Purpose . . . . . . . . . . . . . . . . . . 1-3 + 1.3 Method Of Presentation . . . . . . . . . . . 1-3 + 1.4 Scope . . . . . . . . . . . . . . . . . . . 1-3 + + + CHAPTER 2 TERMINOLOGY + + + CHAPTER 3 CLASS DRIVER / MSCP SERVER COMMUNICATIONS + + 3.1 Connection . . . . . . . . . . . . . . . . . 3-1 + 3.2 Flow Control . . . . . . . . . . . . . . . . 3-2 + 3.2.1 Class Driver Responsibilities . . . . . . 3-5 + 3.2.2 MSCP Server Responsibilities . . . . . . . 3-7 + 3.3 Multihost Communication . . . . . . . . . . 3-10 + + + CHAPTER 4 ALGORITHMS AND USAGE RULES + + 4.1 Controller States . . . . . . . . . . . . . 4-1 + 4.2 Controls And Indicators . . . . . . . . . . 4-4 + 4.3 Unit States . . . . . . . . . . . . . . . . 4-6 + 4.4 Unit Numbers . . . . . . . . . . . . . . . . 4-14 + 4.5 Command Categories And Execution Order . . . 4-18 + 4.6 Class Driver / MSCP Server Synchronization . 4-22 + 4.7 Class Driver Error Recovery . . . . . . . . 4-24 + 4.8 Serious Exceptions . . . . . . . . . . . . . 4-25 + 4.9 Host Access Timeouts . . . . . . . . . . . . 4-25 + 4.10 Command Timeouts . . . . . . . . . . . . . . 4-28 + 4.11 Host Buffer Access . . . . . . . . . . . . . 4-31 + 4.12 Disk Geometry And Format . . . . . . . . . . 4-31 + 4.12.1 Replacement Control Table (RCT) Overview . 4-32 + 4.12.2 Logical Block Contents . . . . . . . . . . 4-33 + 4.12.3 Performance Implications . . . . . . . . . 4-34 + 4.13 Bad Block Replacement . . . . . . . . . . . 4-37 + 4.14 Write Protection . . . . . . . . . . . . . . 4-37 + 4.15 Compare Operations . . . . . . . . . . . . . 4-39 + 4.16 Special Drive Topologies . . . . . . . . . . 4-41 + 4.16.1 Multiaccess Drives . . . . . . . . . . . . 4-41 + 4.16.2 Multiunit Drives And Formatters . . . . . 4-43 + 4.17 Controller And Unit Identifiers . . . . . . 4-45 + 4.18 Media Type Identifiers . . . . . . . . . . . 4-47 + 4.19 Controller-based Cache . . . . . . . . . . . 4-49 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page iii + 11 June 1992 + + + CHAPTER 5 MSCP CONTROL MESSAGES + + 5.1 Generic Control Message Format . . . . . . . 5-1 + 5.2 Reserved And Undefined Fields . . . . . . . 5-2 + 5.3 Command Messages . . . . . . . . . . . . . . 5-4 + 5.3.1 Transfer Command Message Format . . . . . 5-7 + 5.3.2 Command Modifiers . . . . . . . . . . . . 5-13 + 5.4 End Messages . . . . . . . . . . . . . . . . 5-15 + 5.4.1 Transfer Command End Message Format . . . 5-19 + 5.5 Status And Event Codes . . . . . . . . . . . 5-21 + 5.6 Controller Flags . . . . . . . . . . . . . . 5-32 + 5.7 Unit Flags . . . . . . . . . . . . . . . . . 5-37 + 5.8 Attention Messages . . . . . . . . . . . . . 5-41 + 5.8.1 ACCESS PATH Attention Message . . . . . . 5-43 + 5.8.1.1 Attention Message Format . . . . . . . . 5-43 + 5.8.1.2 Description . . . . . . . . . . . . . . 5-43 + 5.8.2 AVAILABLE Attention Message . . . . . . . 5-44 + 5.8.2.1 Attention Message Format . . . . . . . . 5-44 + 5.8.2.2 Description . . . . . . . . . . . . . . 5-45 + 5.8.3 DUPLICATE UNIT NUMBER Attention Message . 5-47 + 5.8.3.1 Attention Message Format . . . . . . . . 5-47 + 5.8.3.2 Description . . . . . . . . . . . . . . 5-47 + 5.9 Error Log Messages . . . . . . . . . . . . . 5-48 + 5.9.1 Maximum Error Log Message Size . . . . . . 5-53 + 5.9.2 Generic Error Log Message Format . . . . . 5-57 + 5.9.3 CONTROLLER ERRORS Error Log Format . . . . 5-63 + 5.9.4 MEMORY ERRORS Error Log Format . . . . . . 5-64 + 5.9.5 DISK TRANSFER ERRORS Error Log Format . . 5-67 + 5.9.6 SDI ERRORS Error Log Format . . . . . . . 5-69 + 5.9.7 SMALL DISK ERRORS Error Log Format . . . . 5-71 + 5.9.8 BAD BLOCK REPLACEMENT ATTEMPT Error Log + Format . . . . . . . . . . . . . . . . . . 5-73 + 5.9.9 DISK COPY DATA CORRELATION Error Log + Format . . . . . . . . . . . . . . . . . . 5-75 + + + CHAPTER 6 MINIMAL MSCP COMMAND SET + + 6.1 Overview . . . . . . . . . . . . . . . . . . 6-1 + 6.1.1 No-Operation Commands . . . . . . . . . . 6-2 + 6.2 ABORT Command . . . . . . . . . . . . . . . 6-4 + 6.2.1 Command Message Format . . . . . . . . . . 6-4 + 6.2.2 End Message Format . . . . . . . . . . . . 6-5 + 6.2.3 Description . . . . . . . . . . . . . . . 6-6 + 6.3 ACCESS Command . . . . . . . . . . . . . . . 6-7 + 6.3.1 Command Message Format . . . . . . . . . . 6-7 + 6.3.2 End Message Format . . . . . . . . . . . . 6-8 + 6.3.3 Description . . . . . . . . . . . . . . . 6-9 + 6.4 AVAILABLE Command . . . . . . . . . . . . . 6-10 + 6.4.1 Command Message Format . . . . . . . . . . 6-10 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page iv + 11 June 1992 + + + 6.4.2 End Message Format . . . . . . . . . . . . 6-11 + 6.4.3 Description . . . . . . . . . . . . . . . 6-12 + 6.5 COMPARE HOST DATA Command . . . . . . . . . 6-13 + 6.5.1 Command Message Format . . . . . . . . . . 6-13 + 6.5.2 End Message Format . . . . . . . . . . . . 6-14 + 6.5.3 Description . . . . . . . . . . . . . . . 6-15 + 6.6 DETERMINE ACCESS PATHS Command . . . . . . . 6-16 + 6.6.1 Command Message Format . . . . . . . . . . 6-16 + 6.6.2 End Message Format . . . . . . . . . . . . 6-17 + 6.6.3 Description . . . . . . . . . . . . . . . 6-18 + 6.7 DISK COPY DATA Command . . . . . . . . . . . 6-19 + 6.7.1 Command Message Format . . . . . . . . . . 6-19 + 6.7.2 End Message Format . . . . . . . . . . . . 6-28 + 6.7.3 Description . . . . . . . . . . . . . . . 6-43 + 6.7.3.1 Operation . . . . . . . . . . . . . . . 6-44 + 6.7.3.2 Error Logs And Correlation Logs . . . . 6-54 + 6.8 DISPLAY Command . . . . . . . . . . . . . . 6-57 + 6.8.1 Command Message Format . . . . . . . . . . 6-57 + 6.8.2 End Message Format . . . . . . . . . . . . 6-59 + 6.8.3 Description . . . . . . . . . . . . . . . 6-61 + 6.9 ERASE Command . . . . . . . . . . . . . . . 6-67 + 6.9.1 Command Message Format . . . . . . . . . . 6-67 + 6.9.2 End Message Format . . . . . . . . . . . . 6-70 + 6.9.3 Description . . . . . . . . . . . . . . . 6-73 + 6.10 FORMAT Command . . . . . . . . . . . . . . . 6-74 + 6.10.1 Command Message Format . . . . . . . . . . 6-74 + 6.10.2 End Message Format . . . . . . . . . . . . 6-75 + 6.10.3 Description . . . . . . . . . . . . . . . 6-76 + 6.11 GET COMMAND STATUS Command . . . . . . . . . 6-79 + 6.11.1 Command Message Format . . . . . . . . . . 6-79 + 6.11.2 End Message Format . . . . . . . . . . . . 6-80 + 6.11.3 Description . . . . . . . . . . . . . . . 6-81 + 6.12 GET UNIT STATUS Command . . . . . . . . . . 6-82 + 6.12.1 Command Message Format . . . . . . . . . . 6-82 + 6.12.2 End Message Format . . . . . . . . . . . . 6-83 + 6.12.3 Description . . . . . . . . . . . . . . . 6-87 + 6.13 ONLINE Command . . . . . . . . . . . . . . . 6-88 + 6.13.1 Command Message Format . . . . . . . . . . 6-88 + 6.13.2 End Message Format . . . . . . . . . . . . 6-91 + 6.13.3 Description . . . . . . . . . . . . . . . 6-94 + 6.14 READ Command . . . . . . . . . . . . . . . . 6-95 + 6.14.1 Command Message Format . . . . . . . . . . 6-95 + 6.14.2 End Message Format . . . . . . . . . . . . 6-96 + 6.14.3 Description . . . . . . . . . . . . . . . 6-97 + 6.15 REPLACE Command . . . . . . . . . . . . . . 6-98 + 6.15.1 Command Message Format . . . . . . . . . . 6-98 + 6.15.2 End Message Format . . . . . . . . . . . 6-100 + 6.15.3 Description . . . . . . . . . . . . . . 6-101 + 6.16 SET CONTROLLER CHARACTERISTICS Command . . 6-102 + 6.16.1 Command Message Format . . . . . . . . . 6-102 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page v + 11 June 1992 + + + 6.16.2 End Message Format . . . . . . . . . . . 6-105 + 6.16.3 Description . . . . . . . . . . . . . . 6-107 + 6.17 SET UNIT CHARACTERISTICS Command . . . . . 6-108 + 6.17.1 Command Message Format . . . . . . . . . 6-108 + 6.17.2 End Message Format . . . . . . . . . . . 6-110 + 6.17.3 Description . . . . . . . . . . . . . . 6-113 + 6.18 WRITE Command . . . . . . . . . . . . . . 6-114 + 6.18.1 Command Message Format . . . . . . . . . 6-114 + 6.18.2 End Message Format . . . . . . . . . . . 6-118 + 6.18.3 Description . . . . . . . . . . . . . . 6-121 + 6.19 WRITE HISTORY MANAGEMENT Command . . . . . 6-122 + 6.19.1 Command Message Format . . . . . . . . . 6-122 + 6.19.2 End Message Format . . . . . . . . . . . 6-128 + 6.19.3 Description . . . . . . . . . . . . . . 6-132 + + + CHAPTER 7 MULTIHOST SUPPORT + + 7.1 Overview . . . . . . . . . . . . . . . . . . 7-1 + 7.2 Multihost ABORT Command . . . . . . . . . . 7-3 + 7.2.1 Command Message Format . . . . . . . . . . 7-3 + 7.2.2 End Message Format . . . . . . . . . . . . 7-4 + 7.2.3 Description . . . . . . . . . . . . . . . 7-5 + 7.3 Multihost ACCESS NONVOLATILE MEMORY Command 7-6 + 7.3.1 Command Message Format . . . . . . . . . . 7-6 + 7.3.2 End Message Format . . . . . . . . . . . . 7-8 + 7.3.3 Description . . . . . . . . . . . . . . . 7-9 + 7.4 Multihost AVAILABLE Command . . . . . . . . 7-12 + 7.4.1 Command Message Format . . . . . . . . . . 7-12 + 7.4.2 End Message Format . . . . . . . . . . . . 7-15 + 7.4.3 Description . . . . . . . . . . . . . . . 7-18 + 7.5 Multihost GET COMMAND STATUS Command . . . . 7-19 + 7.5.1 Command Message Format . . . . . . . . . . 7-19 + 7.5.2 End Message Format . . . . . . . . . . . . 7-20 + 7.5.3 Description . . . . . . . . . . . . . . . 7-24 + 7.6 Multihost GET UNIT STATUS Command . . . . . 7-25 + 7.6.1 Command Message Format . . . . . . . . . . 7-25 + 7.6.2 End Message Format . . . . . . . . . . . . 7-26 + 7.6.3 Description . . . . . . . . . . . . . . . 7-28 + 7.7 Multihost ONLINE Command . . . . . . . . . . 7-29 + 7.7.1 Command Message Format . . . . . . . . . . 7-29 + 7.7.2 End Message Format . . . . . . . . . . . . 7-32 + 7.7.3 Description . . . . . . . . . . . . . . . 7-36 + 7.8 Multihost SET CONTROLLER CHARACTERISTICS + Command . . . . . . . . . . . . . . . . . . 7-37 + 7.8.1 Command Message Format . . . . . . . . . . 7-37 + 7.8.2 End Message Format . . . . . . . . . . . . 7-39 + 7.8.3 Description . . . . . . . . . . . . . . . 7-41 + 7.9 Multihost SET UNIT CHARACTERISTICS Command . 7-42 + 7.9.1 Command Message Format . . . . . . . . . . 7-42 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page vi + 11 June 1992 + + + 7.9.2 End Message Format . . . . . . . . . . . . 7-45 + 7.9.3 Description . . . . . . . . . . . . . . . 7-48 + 7.10 Multihost TERMINATE CLASS DRIVER/SERVER + CONNECTION Command . . . . . . . . . . . . . 7-49 + 7.10.1 Command Message Format . . . . . . . . . . 7-49 + 7.10.2 End Message Format . . . . . . . . . . . . 7-51 + 7.10.3 Description . . . . . . . . . . . . . . . 7-52 + + + CHAPTER 8 CONTROLLER INITIATED BAD BLOCK REPLACEMENT + + 8.1 Controller Initiated Bad Block Replacement + Overview . . . . . . . . . . . . . . . . . . 8-1 + 8.2 Data Safety Write Protection . . . . . . . . 8-2 + 8.3 Bad Block Replacement . . . . . . . . . . . 8-3 + 8.4 Replacement Control Table Access . . . . . . 8-6 + 8.5 Atomic Bad Block Replacement . . . . . . . . 8-8 + 8.6 Error Log Messages . . . . . . . . . . . . . 8-8 + 8.7 Unit Context Information . . . . . . . . . . 8-9 + 8.8 Actions During ONLINE . . . . . . . . . . . 8-10 + 8.9 Actions During SET UNIT CHARACTERISTICS . . 8-12 + 8.10 Actions Before First Modification . . . . . 8-14 + 8.11 MSCP Control Message Format Changes . . . . 8-16 + 8.11.1 Controller Flags . . . . . . . . . . . . . 8-16 + 8.11.2 Unit Flags . . . . . . . . . . . . . . . . 8-16 + 8.11.3 Transfer Commands . . . . . . . . . . . . 8-17 + 8.11.4 ONLINE and SET UNIT CHARACTERISTICS + Commands . . . . . . . . . . . . . . . . . 8-17 + 8.11.5 GET UNIT STATUS Command . . . . . . . . . 8-19 + 8.11.6 REPLACE Command . . . . . . . . . . . . . 8-19 + 8.12 Host Support For Controller Initiated Bad + Block Replacement . . . . . . . . . . . . . 8-20 + + + APPENDIX A OPCODE, FLAG, AND OFFSET DEFINITIONS + + + APPENDIX B STATUS AND EVENT CODE DEFINITIONS + + + APPENDIX C CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS + + + APPENDIX D BUFFER DESCRIPTOR FORMATS + + + APPENDIX E WAIVERS AND EXCEPTIONS + + E.1 UDA50 . . . . . . . . . . . . . . . . . . . E-1 + E.1.1 Unit And Controller Revision Numbers . . . E-1 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page vii + 11 June 1992 + + + E.2 RC25 . . . . . . . . . . . . . . . . . . . . E-1 + E.2.1 Error Log Message Ordering . . . . . . . . E-1 + E.2.2 Data Error (subcode "Forced Error") + Reporting . . . . . . . . . . . . . . . . E-2 + E.2.3 Improper Duplicate Unit Number Processing E-3 + E.3 HSC And VAX/VMS . . . . . . . . . . . . . . E-6 + E.3.1 "Bundled" Shadowing . . . . . . . . . . . E-6 + E.3.1.1 Shadowing Concepts . . . . . . . . . . . E-6 + E.3.1.1.1 Shadowing Functionality . . . . . . . E-6 + E.3.1.1.2 Invalid Commands . . . . . . . . . . . E-7 + E.3.1.1.3 Virtual And Member Units . . . . . . . E-9 + E.3.1.1.4 Shadow Member Compatibility . . . . . E-9 + E.3.1.1.4.1 Hardware Write Protected Shadow Sets E-10 + E.3.1.1.5 Shadow Set Management . . . . . . . . E-11 + E.3.1.1.6 MSCP Command Changes . . . . . . . . . E-13 + E.3.1.1.6.1 ONLINE Command Changes . . . . . . . E-13 + E.3.1.1.6.1.1 Changes in the ONLINE Command + Syntax . . . . . . . . . . . . . . E-13 + E.3.1.1.6.1.2 Changes Which Enforce Shadow Set + Membership Rules . . . . . . . . . E-17 + E.3.1.1.6.1.3 Changes in Sequential Gatekeeping E-18 + E.3.1.1.6.1.4 Performing Shadow Copy Operations E-19 + E.3.1.1.6.1.5 Restrictions and Miscellaneous + Notes . . . . . . . . . . . . . . E-21 + E.3.1.1.6.2 ONLINE End Message Changes . . . . . E-21 + E.3.1.1.6.3 SET UNIT CHARACTERISTICS Command + Changes . . . . . . . . . . . . . . E-23 + E.3.1.1.6.4 SET UNIT CHARACTERISTICS End Message + Changes . . . . . . . . . . . . . . E-24 + E.3.1.1.6.5 AVAILABLE Command Changes . . . . . E-24 + E.3.1.1.6.6 GET UNIT STATUS Command End Message + Changes . . . . . . . . . . . . . . E-25 + E.3.1.1.6.7 DETERMINE ACCESS PATHS Command + Changes . . . . . . . . . . . . . . E-25 + E.3.1.1.6.8 COMPARE CONTROLLER DATA Command + Changes . . . . . . . . . . . . . . E-26 + E.3.1.1.6.9 Transfer Commands . . . . . . . . . E-26 + E.3.1.1.6.9.1 READ Operations . . . . . . . . . E-27 + E.3.1.1.6.9.2 WRITE Operations . . . . . . . . . E-30 + E.3.1.1.6.9.3 Host Write Failure Recovery . . . E-32 + E.3.1.1.6.9.4 Read/Write Concurrency . . . . . . E-34 + E.3.1.1.6.10 Shadow Set Membership Changes . . . E-35 + E.3.1.1.6.11 Multihost Access . . . . . . . . . . E-35 + E.3.1.1.6.11.1 Member Unit Actions . . . . . . . E-35 + E.3.1.1.6.11.2 Shadow Set Virtual Unit Actions . E-37 + E.3.1.1.6.11.3 Shadow Copy Actions . . . . . . . E-38 + E.3.1.1.6.11.4 Get Unit Status Actions . . . . . E-38 + E.3.1.1.6.12 Error Logs . . . . . . . . . . . . . E-38 + E.3.1.1.7 "Bundled Shadowing" Definitions . . . E-39 + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page viii + 11 June 1992 + + + E.3.1.1.8 "Bundled Shadowing" Specific Status + Code Definitions . . . . . . . . . . . E-42 + E.4 TU81 . . . . . . . . . . . . . . . . . . . . E-45 + E.4.1 "Enable Miscellaneous Error Log Messages" + Modifier Not Fully Supported . . . . . . . E-45 + E.5 VAX/VMS . . . . . . . . . . . . . . . . . . E-45 + E.5.1 Bad Block Replacement Attempt Error Log + Usage . . . . . . . . . . . . . . . . . . E-45 + E.6 RV80 . . . . . . . . . . . . . . . . . . . . E-45 + E.6.1 Media Loader Error Logs . . . . . . . . . E-45 + E.6.1.1 Controller And Unit Identifiers . . . . E-46 + E.6.1.2 Media Loader Error Log Format . . . . . E-48 + E.6.1.3 Error Log Message Offsets . . . . . . . E-51 + E.6.1.4 Error Log Message Format Codes . . . . . E-52 + E.6.1.5 Status And Event Codes . . . . . . . . . E-52 + E.6.1.6 Media Loader Error Status Or Event + Subcodes . . . . . . . . . . . . . . . . E-53 + E.6.1.7 Controller And Unit Identifier Class + Values . . . . . . . . . . . . . . . . . E-53 + E.6.1.8 Media Loader Identifier Values . . . . . E-54 + + + APPENDIX F PORT ADDRESS AND SYSTEM ADDRESS FORMATS + + F.1 Port Address Formats . . . . . . . . . . . . F-1 + F.1.1 CI Port Address . . . . . . . . . . . . . F-1 + F.2 System Address Formats . . . . . . . . . . . F-1 + F.2.1 SCA System Address . . . . . . . . . . . . F-2 + + + APPENDIX G REVISION HISTORY + + + APPENDIX H UNANNOUNCED PRODUCTS + + + FIGURES + + 1-1 Example System . . . . . . . . . . . . . . . 1-2 + 8-1 Controller Initiated Bad Block Replacement + Layers . . . . . . . . . . . . . . . . . . . 8-2 + + + TABLES + + A-1 Control Message Opcodes . . . . . . . . . . A-1 + A-2 Command Modifiers . . . . . . . . . . . . . A-3 + A-3 End Message Flags . . . . . . . . . . . . . A-5 + A-4 Controller Flags . . . . . . . . . . . . . . A-6 + A-5 Unit Flags . . . . . . . . . . . . . . . . . A-7 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTENTS Page ix + 11 June 1992 + + + A-6 Command Message Offsets . . . . . . . . . . A-8 + A-7 End and Attention Message Offsets . . . . . A-11 + A-8 Error Log Message Offsets . . . . . . . . . A-14 + A-9 Error Log Message Format Codes . . . . . . . A-17 + A-10 Error Log Message Flags . . . . . . . . . . A-17 + A-11 Bad Block Replacement Attempt "Replace + Flags" . . . . . . . . . . . . . . . . . . . A-18 + A-12 Access Nonvolatile Memory Command Operation + Codes . . . . . . . . . . . . . . . . . . . A-19 + A-13 Format Function Codes . . . . . . . . . . . A-19 + A-14 WRITE HISTORY MANAGEMENT Command Operation + Codes . . . . . . . . . . . . . . . . . . . A-20 + A-15 Write History Entry Entry Flags . . . . . . A-21 + A-16 Write History Entry Offsets . . . . . . . . A-21 + A-17 Cache Access Attribute Values . . . . . . . A-21 + B-1 Status and Event Codes . . . . . . . . . . . B-2 + B-2 Status Only Subcode Values . . . . . . . . . B-3 + B-3 "Media Format Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-5 + B-4 "Compare Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-6 + B-5 "Data Error" Status or Event Subcode Values B-6 + B-6 "Host Buffer Access Error" Status or Event + Subcode Values . . . . . . . . . . . . . . . B-9 + B-7 "Controller Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-10 + B-8 "Drive Error" Status or Event Subcode Values B-14 + B-9 "Bad Block Replacement Completion" Event + Only Subcode Values . . . . . . . . . . . . B-16 + B-10 "Media Loader Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-16 + B-11 "Informational" Event Only Subcode Values . B-17 + B-12 "Subcommand Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-17 + B-13 "Cache Error" Status or Event Subcode Values B-18 + C-1 Controller and Unit "Class" Values . . . . . C-1 + C-2 Mass Storage Controller "Model" Values . . . C-2 + C-3 Disk Drive/Media Identifier Values . . . . . C-5 + C-4 Tape Drive/Media Identifier Values . . . . . C-8 + C-5 Media Loader Identifier Values . . . . . . . C-10 + C-6 SCSI Storage Device/Media Identifier Values C-11 + H-1 Unannounced Controller "Model" Values . . . H-1 + H-2 Unannounced Disk Drive/Media Identifier + Values . . . . . . . . . . . . . . . . . . . H-2 + H-3 Unannounced Tape Drive/Media Identifier + Values . . . . . . . . . . . . . . . . . . . H-3 + H-4 Unannounced SCSI Storage Device/Media + Identifier Values . . . . . . . . . . . . . H-4 + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + INTRODUCTION Page 1-1 + 11 June 1992 + + + 1 CHAPTER 1 + + 2 INTRODUCTION + + + 3 1.1 Overview Of MSCP Subsystem + + 4 Mass Storage Control Protocol (MSCP) is the protocol used by a + 5 family of mass storage controllers and devices designed and built + 6 by Digital Equipment Corporation. In a system that uses an MSCP + 7 storage subsystem, the controller contains intelligence to + 8 perform the detailed I/O handling tasks. This arrangement allows + 9 the host to simply send command messages (requests for reads or + 10 writes) to the controller and receive response messages back from + 11 the controller. The host need not concern itself with details + 12 such as device type, media geometry, media format, or error + 13 recovery. + + 14 The host uses two levels of software to accomplish its tasks. + 15 The higher level is called a "class driver." The class driver's + 16 knowledge of devices is limited to the device class (such as + 17 disks) and their capacity. The class driver does not have to + 18 know the detailed nature of the communications link (I/O bus), + 19 controller, or devices that are being used. + + 20 The second level of host software is called a "port driver." The + 21 port driver passes messages to/from the communications link or + 22 bus. It is not aware of the messages' meaning. The port driver + 23 does have to know the exact nature of the communications link or + 24 bus (communications mechanism). + + 25 In the controller architecture, there are also two levels of + 26 software. The lower of these two is also a "port driver" and, + 27 like the port driver in the host, is concerned only with passing + 28 messages on and off of the bus. The higher level of controller + 29 software is the "MSCP Server." It constitutes the intelligence + 30 of the controller and therefore defines the functionality of the + 31 controller. + + 32 The MSCP server concerns itself with determining the number of + 33 devices, their type, geometry, unit number, availability, status, + 34 etc. The MSCP server receives requests from the host and sends + 35 responses to the host. It optimizes the requests, performs the + 36 operations, transfers the data to/from the host, transfers the + 37 data to/from the device, and buffers the data as necessary. The + 38 MSCP server performs error detection and recovery, and reports + 39 any significant errors to the host. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + INTRODUCTION Page 1-2 + Overview Of MSCP Subsystem 11 June 1992 + + + 1 Because the MSCP server handles the error detection and recovery + 2 by itself, the host sees "perfect media," an important + 3 characteristic of an MSCP subsystem. That is, the host need only + 4 report errors to higher level (user) software, as the MSCP server + 5 performs all error recovery and media defect (bad block) + 6 handling. + + 7 The host's class driver and the controller's MSCP server route + 8 their messages through the path of the two port drivers and a + 9 hardware interconnect. This is their physical connection. + 10 However, their logical communication is a direct connection + 11 because the port driver details are below their level of concern. + 12 Therefore, there are two paths to consider: a physical message + 13 path and a logical MSCP connection. This is illustrated in + 14 Figure 1-1. + + + 15 Host Mass Storage Controller + 16 + - - - - - - - - + + - - - - - - - - + + 17 | | | | + 18 +-----------+ +-----------+ + 19 | | Class | | MSCP | | MSCP | | + 20 | Driver | <------------------> | Server | + 21 | +-----------+ | | +-----------+ | + 22 A A + 23 | | | | | | + 24 V V + 25 | +-----------+ | Communications | +-----------+ | + 26 | Port | <------------------> | Port | + 27 | | Driver | | Protocols | | Driver | | + 28 +-----------+ +-----------+ + 29 | A | | A | + 30 + - - - -|- - - - + + - - - -|- - - - + + 31 | | + 32 V V + 33 +------------------------------------------+ + 34 | Port | | Port | + 35 | - - + + - - | + 36 | Communications Mechanism | + 37 | | + 38 +------------------------------------------+ + + + 39 Figure 1-1: Example System + + + 40 In summary, an MSCP subsystem is characterized by an intelligent + 41 controller that provides the host with the view of perfect media. + 42 It is further characterized by host independence from a specific + 43 bus, controller, or device type. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + INTRODUCTION Page 1-3 + Purpose 11 June 1992 + + + 1 1.2 Purpose + + 2 The purpose of this manual is to provide information on the rules + 3 of MSCP to the detail necessary for both writing a host class + 4 driver and implementing an MSCP server. + + 5 1.3 Method Of Presentation + + 6 The method of presentation used in this manual is: + + 7 o to define new terms and concepts. + + 8 o list the responsibilities of the class driver. + + 9 o list the responsibilities of the MSCP server that are + 10 applicable to the class driver. + + 11 o list the responsibilities of the storage unit that are + 12 applicable to the class driver. + + 13 o explain each command and response message. + + 14 o explain each error message. + + 15 o provide appropriate tables of consolidated information. + + + 16 1.4 Scope + + 17 The scope of this manual is limited to the details of the MSCP + 18 itself and does not provide information on any specific type of + 19 host processor or any specific operating system. It does not + 20 assume any particular bus, controller, device type, host, or port + 21 driver implementation. + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + TERMINOLOGY Page 2-1 + 11 June 1992 + + + 1 CHAPTER 2 + + 2 TERMINOLOGY + + + + 3 Aborted Command + + 4 From the viewpoint of a class driver, any command for which + 5 it has issued an ABORT command. From the viewpoint of an + 6 MSCP server, a command for which it has received an ABORT + 7 command, located the specified command, and taken explicit + 8 action to abort it. An aborted command will be either + 9 rejected or terminated. See Section 4.5, "Command Categories + 10 and Execution Order." + + + 11 Backing-store + + 12 In a cached memory system, the memory being served by the + 13 cache. This memory is usually much larger and much slower + 14 than the cache memory and its performance is enhanced by the + 15 cache between it and the user. In the case of cached mass + 16 storage, the backing store is the disk or tape media. + + 17 Cache + + 18 A fast memory placed between a larger slow memory known as + 19 the backing-store and the user. By retaining frequently + 20 accessed data in the cache, the apparent performance of the + 21 backing-store is improved. A number of different algorithms + 22 may be used for the selection of data retained in the cache. + + 23 Cache Consistency + + 24 The property that ensures that cached data behaves exactly as + 25 if no cache existed. That is, only the last written data + 26 will be returned to users and in the case of write-back + 27 cache, the last written data will be properly written to the + 28 backing-store even in the event of power failure. + + + 29 Command Categories + + 30 All MSCP commands fall into one of four command categories: + 31 Immediate commands, Non-Sequential commands, Sequential + 32 commands, and Special commands. Each command category has + 33 certain constraints on when those commands may be executed, + 34 thus limiting the scope of controller optimizations. See + 35 Section 4.5, "Command Categories and Execution Order." + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + TERMINOLOGY Page 2-2 + 11 June 1992 + + + 1 Completed Command + + 2 A command that the MSCP server has executed through to its + 3 normal completion, which may be either successful completion + 4 or an unrecoverable error. See Section 4.5, "Command + 5 Categories and Execution Order." + + + 6 Controller Timeout Interval + + 7 A time interval, measured in seconds, supplied by the + 8 controller or MSCP server in the SET CONTROLLER + 9 CHARACTERISTICS command's end message. Controllers or MSCP + 10 servers guarantee that they will complete all Immediate + 11 commands plus some measurable amount of useful work on their + 12 oldest outstanding non-Immediate command within the + 13 controller timeout interval. See Section 4.10, "Command + 14 Timeouts." + + + 15 Forced Error + + 16 A data error (in a disk block) that has been deliberately + 17 caused by use of the "Force Error" command modifier. Used to + 18 indicate that the data in the block is of questionable + 19 validity. For example, an unrecoverable error occurred when + 20 the data was copied from some other block. + + + 21 Forced Error Indicator + + 22 The logical flag, present in each disk block, used to record + 23 the presence of a Forced Error. Depending upon the detailed, + 24 low level format of the disk device, this may be implemented + 25 either as an actual bit flag or as a special pattern (such as + 26 the complement of the normal value) of error correcting + 27 and/or error detecting codes. + + + 28 Immediate Commands + + 29 Commands that MSCP servers shall execute immediately, without + 30 waiting for any other commands to complete. Immediate + 31 commands are typically status inquiries, and shall be + 32 completed within the controller timeout interval. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + TERMINOLOGY Page 2-3 + 11 June 1992 + + + 1 May + + 2 Denotes a lack of prohibition when used as a directive. It + 3 is used to indicate an option or options architecturally + 4 permissible for an implementation. No bias for or against + 5 the option is implied. "May not" denotes strict prohibition + 6 when used as a directive. + + + 7 Non-Sequential Commands + + 8 Commands whose execution order MSCP servers may rearrange in + 9 order to optimize performance. The optimization shall not + 10 move a Non-Sequential command past the barrier imposed by a + 11 Sequential command. + + + 12 Nugatory + + 13 Of little or no consequence: Trifling, Inconsequential. See + 14 Section 6.4, "AVAILABLE Command." + + + 15 Prefetch + + 16 The act of reading data logically following requested data + 17 during a data transfer command. If the user access patterns + 18 frequently access the data following previously requested + 19 data, performance improvement will result. + + + 20 Rejected Command + + 21 A command that the MSCP server rejects, discards, aborts, or + 22 otherwise finishes before it begins to execute it. See + 23 Section 4.5, "Command Categories and Execution Order." + + + 24 Sequential Commands + + 25 Commands that MSCP servers shall execute in the exact order + 26 that they were received from class drivers. Sequential + 27 commands typically change a unit's state or context. + + + 28 Shall + + 29 Denotes an architectural requirement. It is used as a + 30 directive to express what is mandatory for an implementation. + 31 "Shall not" denotes strict prohibition. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + TERMINOLOGY Page 2-4 + 11 June 1992 + + + 1 Should + + 2 Denotes an emphatic recommendation when used as a directive. + 3 It is used where "shall" might be too strong because of the + 4 possibility of technical, implementation specific obstacles + 5 or other overriding considerations. + + + 6 Special Commands + + 7 Commands that have both the execution order constraints of + 8 Non-Sequential commands plus certain special, command + 9 dependent execution order constraints. + + + 10 Terminated Command + + 11 A command that the MSCP server terminates after it has been + 12 partially executed. See Section 4.5, "Command Categories and + 13 Execution Order." + + + 14 Write-back Cache + + 15 A cache in which a write operation places the data in the + 16 cache and the completion response is returned before the data + 17 is written to the backing-store. + + 18 Write-through Cache + + 19 A cache in which a write operation places the data in the + 20 cache and writes it to the backing-store before the + 21 completion response is returned. + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-1 + 11 June 1992 + + + 1 CHAPTER 3 + + 2 CLASS DRIVER / MSCP SERVER COMMUNICATIONS + + + 3 3.1 Connection + + 4 Host class drivers use the host port driver to communicate with + 5 MSCP servers in controllers. MSCP servers similarly use the + 6 controller port driver to communicate with class drivers in + 7 hosts. This communication takes place across a link called a + 8 connection. + + 9 The state of the connection is directly equivalent to the state + 10 of the controller or MSCP server with respect to the class + 11 driver. The controller is "Controller-Online" if and only if the + 12 connection is established and functioning. The controller is + 13 "Controller-Available" if the connection is not established, but + 14 it is believed that it could be established. The controller is + 15 "Controller-Offline" if the connection is not established and it + 16 is believed that it cannot be established. + + 17 Three types of communications services are used across the + 18 connection between a class driver and an MSCP server: + + 19 o A sequential message communications service, used for + 20 MSCP control messages -- i.e., command, end, and + 21 attention messages. This service guarantees sequential, + 22 duplicate-free delivery for all messages sent across the + 23 same connection. This service supports messages of at + 24 least 48 bytes in length. + + 25 o A datagram communication service, used for MSCP error + 26 log messages. This service delivers messages sent on it + 27 with very high probability. Messages may be delivered + 28 out of sequence, lost, or duplicated, but the + 29 probability of any of these occurring shall be very low. + 30 This service supports messages of no more than 128 bytes + 31 in length. + + 32 o A block data communication service, used to move data + 33 between hosts and mass storage controllers. This + 34 service provides a reliable, efficient method of + 35 transferring the contents of a named buffer in one + 36 subsystem to a named buffer in another subsystem. + 37 Buffers are identified by buffer descriptors, which + 38 identify both the buffer and the subsystem (host) in + 39 which the buffer resides. + + 40 The communications mechanism or port drivers discard all messages + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-2 + Connection 11 June 1992 + + + 1 that, at the time a connection is terminated, have been sent or + 2 queued to be sent via the sequential message and datagram + 3 services but have not yet been delivered. Block data transfers + 4 may or may not be terminated when a connection is terminated. If + 5 terminated, they may have already been partially completed. + 6 Block data transfers from a previous incarnation of a connection + 7 are guaranteed to have been terminated when the connection is + 8 re-established. + + 9 Besides using these three communications services directly, MSCP + 10 uses the establishment of the connection itself to synchronize + 11 class drivers and MSCP servers. Either the class driver or the + 12 MSCP server will terminate the connection between them (become + 13 "Controller-Available") if it determines that they must + 14 resynchronize with each other. Events that require class driver + 15 / MSCP server resynchronization include certain errors or loss of + 16 context by either process. The connection is also terminated, by + 17 a port driver, if an unrecoverable communications error occurs. + 18 Termination of the connection signals the processes that + 19 resynchronization is necessary. The resynchronization is + 20 accomplished by each process discarding all context regarding + 21 outstanding commands or transactions, after which a new + 22 connection is established. + + 23 Following resynchronization, commands which were outstanding + 24 before the resynchronization was performed may have completed to + 25 an indeterminate extent. Such commands may have been rejected + 26 (never started), may have been terminated (partially completed), + 27 or may have been fully completed. The only guarantee is that + 28 they are no longer outstanding, implying that the controller is + 29 no longer performing work for them and that the class driver will + 30 not receive an end message for them. The fact that the + 31 controller is no longer performing work for them implies that no + 32 state changes or modification of data will take place as a result + 33 of such commands. + + 34 3.2 Flow Control + + 35 Especially critical to MSCP is the concept of flow control and + 36 the flow control based requirements that MSCP imposes on class + 37 drivers and MSCP servers. These items are discussed below. + + 38 Flow control arises from the need to avoid the congestion and/or + 39 deadlock which can occur if one process sends messages too + 40 quickly to another process. The receiving process must have + 41 buffers in which to place the incoming messages. When all such + 42 buffers are full, additional messages cannot be handled. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-3 + Flow Control 11 June 1992 + + + 1 The datagram communications service does not use flow control. + 2 If no buffers are available, incoming datagrams will be + 3 discarded. Thus the characteristic that the datagram service + 4 does not guarantee delivery, instead only assuring a high + 5 probability of delivery. This high probability is dependent upon + 6 the receiver (i.e., the class driver) always having buffers + 7 queued for incoming datagrams. + + 8 The sequential message communications service does use flow + 9 control. When a potential receiving process queues a buffer for + 10 receiving messages on a connection, the presence of this buffer + 11 is communicated (via the underlying communications service) to + 12 the potential sending process at the other end of the connection. + 13 This message notifying the potential sending process of the + 14 queued buffer grants the sending process a credit, which is the + 15 privilege to send a message. Therefore messages will only be + 16 sent when the sending process knows that the receiving process + 17 has queued a buffer into which the message can be received, + 18 ensuring that the receiving process will be able to handle the + 19 message. + + 20 A typical implementation of flow control will be somewhat as + 21 follows. The port driver maintains a counter on behalf of each + 22 process participating in a connection. That counter holds the + 23 process's current credit balance -- i.e., the number of receive + 24 buffers that its partner has queued less the number of messages + 25 that it has sent. Every time the process's partner queues a + 26 receive buffer, a message is sent causing the counter to be + 27 incremented. Every time the process sends a message, the counter + 28 is decremented. Messages may only be sent when the counter + 29 (credit balance) is greater than zero, thus guaranteeing that the + 30 counter will never be negative. Indeed, we will see later that + 31 some messages require that the counter be greater than a + 32 threshold larger than zero. + + 33 Due to the inherent asynchrony of communications between multiple + 34 processes or subsystems, revoking or canceling a previously + 35 queued receive buffer is not straightforward. The problem is + 36 that the buffer cannot be revoked and returned to the receiving + 37 process until after the sending process has acknowledged its + 38 revocation, as otherwise the sending process may attempt to send + 39 a message that requires the revoked buffer. Therefore the + 40 algorithm for revoking receive buffers is as follows: + + 41 1. The revoking process (the process which originally + 42 queued the receive buffers) requests that some number of + 43 buffers be revoked. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-4 + Flow Control 11 June 1992 + + + 1 2. The revocation request is communicated to the revoking + 2 process's partner (actually to its port driver). + + 3 3. The revoking process's partner (actually its port + 4 driver) compares the number of buffers to be revoked + 5 against its current credit balance and a threshold. If + 6 the requested number of buffers / credits can be revoked + 7 (i.e., subtracted from the credit balance) without + 8 lowering the credit balance below the threshold, then + 9 all of them will be revoked. Otherwise, if the credit + 10 balance is above the threshold, it is set to the + 11 threshold and the difference between its former value + 12 and the threshold is the number of buffers / credits + 13 actually revoked. If the credit balance is already at + 14 or below the threshold, then it stays the same and no + 15 buffers / credits are revoked. + + 16 4. The actual number of buffers / credits revoked is + 17 communicated back to the revoking process's port driver. + + 18 5. The revoking process's port driver returns the buffers + 19 actually revoked to the revoking process. + + 20 If a threshold of zero is used, the revoking or receiving process + 21 can always get back all of its buffers. The fact that an + 22 attempted revocation failed implies that the buffers have already + 23 been returned to the process, since messages have been received + 24 into them. + + 25 The above algorithm uses a threshold to prevent revocation below + 26 some lower limit. The mechanism by which this threshold is + 27 obtained is not critical to either MSCP or to the above + 28 algorithm. The rules below are phrased as if the threshold were + 29 supplied by the revoking process as part of the revocation + 30 request. This is purely to simplify the wording of those rules; + 31 often the thresholds will be constants determined when a + 32 connection is established. In such an implementation a threshold + 33 of zero should be used when the class driver is revoking credits + 34 it has granted to the MSCP server and a threshold of one should + 35 be used when the MSCP server is revoking credits it has granted + 36 to the class driver. + + 37 MSCP is only concerned with credits required by the sequenced + 38 message service. Some communications services may require + 39 credits for the block data communication service as well. Any + 40 such credits are invisible to MSCP, being communications service + 41 dependent, and shall be provided in addition to the credits + 42 required by the rules below. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-5 + Flow Control 11 June 1992 + + + 1 Note that the above discussion merely describes a conceptual + 2 model for flow control within the sequential message + 3 communications service. There is no requirement that flow + 4 control actually be implemented this way, provided that the + 5 results are the same. For example, almost all implementations + 6 will carry credit information in a header added to messages and + 7 processed by the receiving process's port driver, rather than + 8 communicating credits with separate messages. Some extremely + 9 well behaved communications mechanisms may not need to implement + 10 explicit flow control at all, since the underlying communications + 11 mechanism may provide it implicitly. + + 12 3.2.1 Class Driver Responsibilities + + 13 Given the above model for flow control, we can state the + 14 requirements MSCP places on class drivers and MSCP servers. + 15 Class drivers shall obey the following rules: + + 16 1. All MSCP commands fall into one of several categories; + 17 for this discussion we distinguish between Immediate + 18 commands (one specific command category) and + 19 non-Immediate commands (the union of all other command + 20 categories). When the class driver's credit balance is + 21 zero, the class driver may not issue any commands. When + 22 it is one, the class driver may only issue Immediate + 23 commands. When it is two or larger, the class driver + 24 may issue both Immediate and non-Immediate commands. If + 25 the class driver's credit balance is one and there is a + 26 GET COMMAND STATUS command waiting to be issued for the + 27 command timeout algorithm, then the class driver shall + 28 issue that GET COMMAND STATUS command as the next + 29 command. + + 30 In essence, this rule means that the class driver shall + 31 reserve one credit for the exclusive use of the command + 32 timeout algorithm. This credit may be "borrowed" for + 33 issuing Immediate commands, since such commands always + 34 complete quickly. The goal is to guarantee that the + 35 command timeout algorithm will always be able to + 36 promptly issue a GET COMMAND STATUS command. + + 37 2. The class driver shall queue a receive buffer for each + 38 command that it sends to an MSCP server. The receive + 39 buffer will be used to hold the command's end message. + 40 The receive buffer shall be queued either before the + 41 command is sent or as part of an atomic (indivisible) + 42 action that includes sending the command. The important + 43 point is that the MSCP server must receive the credit + 44 for the receive buffer either before or concurrently + 45 with receiving the command. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-6 + Flow Control 11 June 1992 + + + 1 3. In addition to queuing receive buffers for end messages, + 2 class drivers that enable attention messages shall queue + 3 at least one receive buffer in which to receive + 4 attention messages. Such a receive buffer shall be + 5 queued before the class driver enables attention + 6 messages -- i.e., before the class driver sends a SET + 7 CONTROLLER CHARACTERISTICS command that enables + 8 attention messages. Additional receive buffers may be + 9 queued at any time. Note that, with most controllers, + 10 there is no benefit to queuing more than one attention + 11 message receive buffer. + + 12 4. Upon receiving an attention message, the class driver + 13 shall immediately queue another (or the same) receive + 14 buffer back for more attention messages. The only + 15 resource that the class driver may require between + 16 receiving an attention message and queuing another + 17 receive buffer is host CPU cycles. The class driver + 18 shall not require that it be able to send or receive any + 19 other messages or wait for any I/O to complete before + 20 queuing another receive buffer. This effectively + 21 requires that all code and data structures needed to + 22 process attention messages be permanently resident in + 23 physical memory, so that an incoming attention message + 24 can be immediately processed and the buffer in which it + 25 was received immediately requeued. + + 26 5. With one exception, the class driver shall never revoke + 27 receive buffers. The one exception is after disabling + 28 attention messages -- i.e., after receiving the end + 29 message for the SET CONTROLLER CHARACTERISTICS command + 30 that disabled attention messages. At that time the + 31 class driver may revoke as many buffers as it has queued + 32 for attention messages (i.e., total number of buffers + 33 queued less number of outstanding commands). This + 34 revocation should specify a threshold of zero. Note + 35 that this revocation is guaranteed to succeed if the + 36 MSCP server is operating correctly. + + 37 Note that the class driver can accomplish the effect of + 38 revoking end message receive buffers by aborting MSCP + 39 commands. The receive buffers will be returned to the + 40 class driver as soon as the (aborted) commands complete. + + 41 Failure of a class driver to follow the above rules may lead to + 42 controller deadlock, command timeouts, or the controller not + 43 obeying its rules given below. Any connection or process in the + 44 controller's subsystem may be affected, rather than just the MSCP + 45 server with which the class driver is communicating. Note that + 46 class drivers that enable error logging must also keep datagram + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-7 + Flow Control 11 June 1992 + + + 1 buffers queued so that they can receive error log messages. Not + 2 keeping datagram buffers queued may result in loss of error log + 3 messages. + + 4 3.2.2 MSCP Server Responsibilities + + 5 The rules for MSCP servers vary depending upon certain + 6 characteristics of the server. There is one general set of + 7 rules, plus a simplification that certain classes of servers may + 8 follow. In all cases, an MSCP server's implementation of these + 9 rules may require, for its correct operation (and thus adherence + 10 to these rules), that class drivers correctly follow the rules + 11 given for them above. The general set of rules, which shall be + 12 followed by all MSCP servers that are not in any of the special + 13 cases identified later, are as follows: + + 14 1. So long as it is "Controller-Online" to a class driver, + 15 an MSCP server shall ensure that the sum of the number + 16 of commands that are outstanding from that class driver + 17 plus the number of unused receive buffers / credits that + 18 it has granted to that class driver is never lower than + 19 the values given below. That is, the sum of the actual + 20 and potential outstanding commands shall be at least the + 21 values below. Between the time that the controller + 22 becomes "Controller-Online" and the completion of the + 23 first SET CONTROLLER CHARACTERISTICS command, this sum + 24 shall be at least one. Following the completion of the + 25 first SET CONTROLLER CHARACTERISTICS command, and so + 26 long as the controller remains "Controller-Online," this + 27 sum shall be at least two. The first unit of this sum + 28 allows the class driver to issue Immediate commands. + 29 Any excess, beyond the value one, may be used to issue + 30 "real" commands such as data transfers. Note that these + 31 requirements imply that, following a SET CONTROLLER + 32 CHARACTERISTICS command, the MSCP server shall either + 33 grant a minimum of two receive buffers / credits to the + 34 class driver or else terminate the connection (become + 35 "Controller-Available") with the class driver. + + 36 2. So long as it is "Controller-Online" to a class driver, + 37 an MSCP server shall ensure that the sum of the number + 38 of Immediate commands that are outstanding from that + 39 class driver plus the number of unused receive buffers / + 40 credits that it has granted to that class driver is + 41 always at least one. That is, the sum of the actual and + 42 potential outstanding Immediate commands shall be at + 43 least one. This is in addition to requirement 1 above. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-8 + Flow Control 11 June 1992 + + + 1 3. An MSCP server may revoke receive buffers or credits at + 2 any time so long as it continues to meet requirements 1 + 3 and 2 above. Note that, in order to meet requirement 2, + 4 the sum of the threshold used for the revoke request + 5 plus the number of outstanding Immediate commands (from + 6 that class driver) must be at least one. This + 7 restriction will typically be met by always using a + 8 threshold of one. + + 9 4. Notwithstanding all that has been said above, MSCP + 10 servers shall allow hosts to perform transfers without + 11 the host having to issue a SET CONTROLLER + 12 CHARACTERISTICS command. This is necessary to simplify + 13 the implementation of host bootstraps. The commands to + 14 perform such transfers shall be issued one at a time + 15 (rule 1 above ensures that the host has at least the one + 16 credit it needs to issue these commands). The MSCP + 17 server shall either grant the host a minimum of two + 18 credits when it becomes "Controller-Online" or else + 19 perform commands regardless of the fact that the host is + 20 nominally violating the requirements described in + 21 Section 3.2.1, "Class Driver Responsibilities." The + 22 specific requirement violated is that the host will be + 23 issuing non-Immediate commands in spite of its credit + 24 balance being only one. + + 25 5. An MSCP server shall keep track of the excess, if any, + 26 of its credit balance over the number of outstanding + 27 commands. The server may only issue attention messages + 28 when this excess is greater than zero. Attention + 29 messages that cannot be issued immediately should be + 30 saved until credits are available with which to issue + 31 them. The controller shall continue to accept new + 32 commands, process outstanding commands, and issue end + 33 messages for completed commands while attention messages + 34 are being saved. If the conditions that triggered the + 35 generation of an attention message disappear before that + 36 attention message can be issued (sent), then the + 37 attention message may or may not still have to be sent. + 38 See the individual attention message descriptions + 39 contained in Section 5.8, "Attention Messages." + + 40 With many communications mechanisms there is an inherent or + 41 unavoidable race that MSCP servers must be prepared to resolve. + 42 It can occur whenever the credit for an end message might be sent + 43 as a distinct message, rather than always being embedded in the + 44 communications mechanism header for the corresponding command + 45 message. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-9 + Flow Control 11 June 1992 + + + 1 Suppose the host class driver grants one credit for attention + 2 messages, and that some combination of events causes the MSCP + 3 server to want to send two attention messages. The attention + 4 message credit is used to send the first attention message and + 5 the second is queued for later transmission. Meanwhile, the + 6 class driver sends a command and its associated end message + 7 credit to the MSCP server as two distinct messages. Per the + 8 class driver requirements described in Section 3.2.1, "Class + 9 Driver Responsibilities," the notification of the end message + 10 credit must be sent first. When this notification arrives at the + 11 controller, the MSCP server thinks it is the attention message + 12 credit being returned (since credits are anonymous) and sends the + 13 second attention message. Immediately thereafter the command + 14 arrives and the MSCP server discovers an apparent rule violation + 15 by the class driver, namely that it appears to have sent a + 16 command without an accompanying credit for the end message. + + 17 This credit imbalance problem will ultimately be resolved when + 18 the class driver returns the attention message credit. As the + 19 class driver is not allowed to perform any I/O before returning + 20 attention message credits, we are assured that the credit will be + 21 returned both promptly and without any possibility of deadlock. + 22 Therefore, whenever this race occurs, the MSCP server may hang + 23 until the attention message credit is returned. Although it is + 24 permissible for all MSCP servers for all device classes and + 25 connections to hang, it is highly desirable if only the one + 26 connection is affected. + + 27 Typically the command(s) that is(are) lacking an end message + 28 credit would be held in a queue, with no work done on them until + 29 their end message credits arrive. Note that if the host did not + 30 return attention message credits promptly, this would result in + 31 command timeouts. The MSCP server shall service the waiting + 32 commands in their order of arrival. Thus if another command + 33 arrives with a credit embedded in its communications mechanism + 34 header, the MSCP server shall transfer that credit to the oldest + 35 command waiting for an end message credit and place the new + 36 command on the waiting queue. + + 37 MSCP servers that limit the rate at which they generate attention + 38 messages can replace rule 5 above with a simpler rule. This + 39 alternate rule may be used, at the server's option, by any MSCP + 40 server that will generate no more than an average of two + 41 attention messages per second, averaged over the controller + 42 timeout interval (see Section 4.10, "Command Timeouts"). That + 43 is, if the controller timeout interval is N seconds, then the + 44 server will generate no more than N*2 attention messages within + 45 any N second period. The MSCP server may assume, in determining + 46 its maximum attention message rate, that human operators do not + 47 engage in pathological activity. I.e., it may assume that cases + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-10 + Flow Control 11 June 1992 + + + 1 such as an operator continuously actuating the Run/Stop switches + 2 on one or more drives will never occur. Any MSCP server that can + 3 meet this attention message rate restriction may substitute the + 4 following alternate rule for rule 5 above: + + 5 5'. An MSCP server may issue attention messages and end + 6 messages whenever its credit balance is greater than + 7 zero. Attention messages and end messages that cannot + 8 be issued immediately should be saved until credits are + 9 available with which to issue them. If the conditions + 10 that triggered the generation of an attention message + 11 disappear before the attention message can be issued + 12 (sent), then that attention message may or may not still + 13 have to be sent. See the individual attention message + 14 descriptions contained in Section 5.8, "Attention + 15 Messages." Saved end messages shall always be sent, + 16 unless the MSCP server first becomes + 17 "Controller-Available" (i.e., terminates its connection + 18 with the class driver), in which case the saved end + 19 messages shall not be sent. Note that end messages + 20 shall always be sent in the order that their + 21 corresponding commands completed. + + 22 An MSCP server may deadlock or cease operating on a + 23 connection whenever it has saved attention messages or + 24 end messages waiting to be issued on that connection. + 25 The only operations that it is required to perform when + 26 it has such messages waiting are to accept incoming + 27 credit notifications, send the waiting messages when + 28 credits become available, and resume normal operation + 29 when all waiting messages have been sent. Note that + 30 accepting incoming credit notifications will often + 31 require that the MSCP server also accept new commands, + 32 although it need not begin processing of those new + 33 commands until all waiting messages have been sent. + 34 Note also that only the one MSCP server may deadlock or + 35 cease operating; other processes (i.e., other MSCP + 36 servers) in the same subsystem or controller and other + 37 connections to the same MSCP server shall not be + 38 affected. + + 39 The effect of this modified rule is to allow MSCP servers to + 40 "borrow" end message credits for the purpose of sending attention + 41 message credits. + + 42 3.3 Multihost Communication + + 43 Chapter 1, "Introduction," Figure 1-1, "Example System," shows a + 44 "Single Host" system, where a single host is connected to a + 45 single controller. Certain communications mechanisms permit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CLASS DRIVER / MSCP SERVER COMMUNICATIONS Page 3-11 + Multihost Communication 11 June 1992 + + + 1 communications between multiple entities (nodes) interconnected + 2 along the same physical path. With such a communications + 3 mechanism it is possible to create a "Multihost" system, where + 4 multiple hosts are connected to a single controller. + + 5 Controllers which support multinode communications mechanisms + 6 will usually (not an absolute requirement of MSCP) implement the + 7 Multihost Support option (see Section 5.6, "Controller Flags"). + 8 Multihost Support allows simultaneous communication between + 9 multiple host class drivers and an MSCP server. The + 10 communication takes place across separate logical connections + 11 established between the class drivers and the MSCP server. The + 12 MSCP server shall treat each connection with a class driver as a + 13 separate and unique entity, with each connection obeying all the + 14 communication rules detailed in the preceding sections of this + 15 chapter. New connections may be accepted or rejected without + 16 regard to the number of existing connections (other than resource + 17 limitations), and no notification will be given to the new + 18 connection as to the presence or absence of other connections. + 19 Class driver/server synchronization is on a per connection basis, + 20 and the loss of synchronization between a class driver and the + 21 controller on a specific connection should not affect any other + 22 connections which may be open, unless all connections are + 23 affected and a hard initialization of the controller is required. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-1 + 11 June 1992 + + + 1 CHAPTER 4 + + 2 ALGORITHMS AND USAGE RULES + + + 3 4.1 Controller States + + 4 The controller may be in any of three states relative to a host + 5 class driver. The controller may be in a different state + 6 relative to each host or each class driver. The controller + 7 states are: + + 8 Controller-Offline + + 9 A controller is "Controller-Offline" to a class driver + 10 whenever it is not available to that class driver and cannot + 11 perform any operations on its behalf. Possible causes + 12 include inoperative hardware or an operator disabling the + 13 controller. A controller is "Controller-Offline" exactly + 14 when it is not possible to establish a connection between the + 15 class driver and the MSCP server within the controller. Note + 16 that a controller may be "Controller-Offline" to some of a + 17 host's class drivers yet be "Controller-Available" or + 18 "Controller-Online" to others. + + 19 Controller-Available + + 20 A controller is "Controller-Available" to a class driver + 21 whenever it could perform operations for that class driver, + 22 but the driver has not yet synchronized with the controller. + 23 A controller is "Controller-Available" exactly when it would + 24 be possible to establish a connection between the class + 25 driver and the MSCP server within the controller, but no + 26 connection has yet been established. + + 27 Controller-Online + + 28 A controller is "Controller-Online" to a class driver + 29 whenever it can both perform operations for that class driver + 30 and the driver has synchronized with the controller. A + 31 controller is "Controller-Online" exactly when a connection + 32 exists between the class driver and the MSCP server within + 33 the controller. This is the state used for normal operation. + + 34 Strictly speaking, the term "controller state" is a misnomer. + 35 The states described above actually exist between an individual + 36 class driver and an individual MSCP server. A host may have + 37 several class drivers and a controller subsystem may have several + 38 MSCP servers (usually one for each device class supported). + 39 Furthermore, controllers that provide Multihost Support allow + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-2 + Controller States 11 June 1992 + + + 1 multiple connections between its server(s) and multiple class + 2 drivers resident in one or more hosts. + + 3 Note also that the controller state (MSCP server state?) is + 4 distinct from the state of any unit connected to the controller. + + 5 An MSCP server (controller) enters the "Controller-Offline" state + 6 relative to a host whenever the MSCP server ceases to function or + 7 otherwise becomes unable to perform operations for the host. + 8 Possible causes include: + + 9 1. Controller hardware, software, or power failure. + + 10 2. Controller initialization, either requested or + 11 spontaneous. + + 12 3. An operator (typically Field Service) disables all or + 13 part of the controller. + + 14 4. Communications mechanism failures. + + 15 5. The controller has not been built yet, the controller is + 16 still in its shipping crate, or it has otherwise not yet + 17 been installed. + + + 18 An MSCP server enters the "Controller-Available" state relative + 19 to a host class driver when: + + 20 1. The controller or MSCP server is "Controller-Offline," + 21 and all causes of it being "Controller-Offline" are + 22 removed. + + 23 2. The MSCP server is "Controller-Online," and the MSCP + 24 server cannot successfully send a control message (i.e., + 25 an MSCP end or attention message) to the host class + 26 driver. + + 27 3. The MSCP server is "Controller-Online," and the host + 28 access timeout expires. See Section 4.9, "Host Access + 29 Timeouts." + + 30 4. The MSCP server is "Controller-Online," and the MSCP + 31 server receives an "Invalid Command" (see "Invalid + 32 Command" status in Section 5.5, "Status Codes") from the + 33 host. Note that this transition to + 34 "Controller-Available" is optional, and therefore + 35 controller dependent. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-3 + Controller States 11 June 1992 + + + 1 5. The host class driver terminates the connection between + 2 the class driver and the MSCP server. + + 3 6. A port driver or the communications mechanism terminates + 4 the connection between the class driver and the MSCP + 5 server, generally due to a communications error. + + 6 7. An MSCP server terminates the connection between itself + 7 and a host class driver as a result of the execution of + 8 a TERMINATE CLASS DRIVER/SERVER CONNECTION command as + 9 described in Section 7.10, "Multihost TERMINATE CLASS + 10 DRIVER/SERVER CONNECTION Command." + + + 11 The port driver should inform the class driver whenever the MSCP + 12 server enters the "Controller-Available" state. How the port + 13 driver obtains this information is communications mechanism + 14 dependent. Note that the notification that the controller has + 15 become "Controller-Available" is not necessarily prompt. In + 16 particular, with some communications mechanisms the notification + 17 may not occur until the next time the class driver issues a + 18 command to the controller. Furthermore, the port driver need not + 19 notify the class driver at all if a compound (multiple) error is + 20 associated with the MSCP server becoming "Controller-Available." + 21 In such a case the class driver will ultimately become aware of + 22 the state change when its Command Timeout expires (see Section + 23 4.10, "Command Timeouts"). + + 24 Since no connection exists to an MSCP server that is + 25 "Controller-Offline" or "Controller-Available," the + 26 communications mechanism will either reject or discard any + 27 messages (commands) that a class driver attempts to send to it. + 28 An MSCP server that becomes "Controller-Offline" or + 29 "Controller-Available" may either terminate commands in progress + 30 or else continue processing the commands that it has already + 31 received. However, if a Sequential command from a given + 32 connection is terminated or rejected, then all subsequently + 33 received non-Immediate commands from the same connection shall + 34 also be rejected (i.e., shall never begin processing). + + 35 Typically, the MSCP server will continue processing outstanding + 36 commands until it "notices" that the connection to the class + 37 driver has been terminated, at which point it will terminate any + 38 commands still outstanding and reject any commands that haven't + 39 begun processing yet. Note that the MSCP server shall guarantee + 40 that all outstanding commands have been completed, aborted, + 41 rejected, or terminated (i.e., that there are no outstanding + 42 commands) before it completes a transition from + 43 "Controller-Available" to "Controller-Online." + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-4 + Controller States 11 June 1992 + + + 1 The MSCP server enters the "Controller-Online" state relative to + 2 a host class driver upon successful synchronization with the + 3 class driver. The class driver synchronizes with the MSCP server + 4 by establishing a connection with the MSCP server. Note that the + 5 MSCP server shall guarantee that there are no outstanding + 6 commands "leftover" from a previous incarnation of the connection + 7 before it allows the new incarnation of the connection to be + 8 established and enters the "Controller-Online" state. + + 9 4.2 Controls And Indicators + + 10 All storage units used with MSCP must have the following controls + 11 and indicators: + + 12 o Unit number select mechanism. + + 13 o Unit number display mechanism. + + 14 o Run/Stop switch (on disk units) or a Load/Unload switch + 15 (on tape units). + + 16 o Write protect switch or mechanism. + + 17 o Write protect status indicator. + + + 18 The unit number select mechanism on an MSCP storage unit shall be + 19 capable of specifying any unit number in the range 0 through 251 + 20 inclusive. Larger unit number ranges are acceptable, so long as + 21 they include the range 0 through 251. The unit number select + 22 mechanism shall operate without host intervention and shall + 23 preserve unit numbers across power failures and other losses of + 24 context. + + 25 Alteration of the unit number must be possible in the field. + 26 That is, the unit number shall be alterable by Field Service, + 27 both when a device is first installed and subsequently when a + 28 system is reconfigured. The preferred unit select mechanism is a + 29 removable unit number plug, allowing the unit number to be + 30 altered by users as well as by Field Service. Alternatives to + 31 unit number plugs, however, are acceptable so long as they can be + 32 altered by Field Service and they provide the full 0 through 251 + 33 unit number range. + + 34 A single unit number select mechanism may be shared by the units + 35 of a multiunit drive or formatter (see Section 4.16.2, "Multiunit + 36 Drives and Formatters"). Units that share a unit number select + 37 mechanism shall always have consecutive unit numbers. If exactly + 38 two units share a unit number select mechanism, it is acceptable + 39 for the first unit to always have an even unit number and the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-5 + Controls And Indicators 11 June 1992 + + + 1 last unit to always have an odd unit number. If exactly N units + 2 share a unit number select mechanism, it is acceptable for the + 3 first unit's unit number to always be a multiple of N, the next + 4 unit's unit number to always be a multiple of N plus 1, etc. + + 5 The unit number display mechanism on an MSCP storage unit shall + 6 display the unit number(s) specified by the unit number select + 7 mechanism. The display shall be visible to normal (non-Field + 8 Service) human operators. If the unit number select mechanism is + 9 a removable unit plug, then the unit number display mechanism may + 10 merely be a number printed on the plug. If several units share a + 11 unit number select mechanism, then they may also share a unit + 12 number display mechanism. + + 13 The Run/Stop switch or Load/Unload switch shall be alterable by + 14 normal (non-Field Service) human operators to allow or disallow + 15 host access to the unit(s). When in the Run or Load position, + 16 this switch indicates that hosts should be allowed to access the + 17 unit(s). When in the Stop or Unload position, this switch + 18 indicates that hosts should not be allowed to access the unit(s). + 19 If the unit(s) have removable media, the switch also indicates + 20 that human operators should be allowed to remove the units' media + 21 (i.e., that the unit should be spun-down). A single Run/Stop + 22 switch may be shared by any units of a multiunit drive that share + 23 a spindle (i.e., that must be spun-up and spun-down together). + + 24 The write protect switch or mechanism shall either be an operator + 25 accessible switch or else some kind of mechanical deformation of + 26 the media, such as a tape write-ring or the write-lockout tab on + 27 a cassette. In either case, it shall be alterable by normal + 28 (non-Field Service) human operators. A separate write protect + 29 switch or mechanism shall be provided for each unit of a + 30 multiunit drive. When actuated, the write protect switch or + 31 mechanism prevents write access to the unit by hosts and + 32 controllers. In the case of a write protect switch, the + 33 transition to the write protected state shall be "smooth" rather + 34 than immediate. See Section 4.14, "Write Protection." + + 35 The write protect status display mechanism shall display the + 36 write protect status of the unit. A separate write protect + 37 status display mechanism shall be provided for each unit of a + 38 multiunit drive. The write protect status display shall be user + 39 visible while a volume is mounted in the unit. That is, the user + 40 shall not be required to remove the volume from the unit to + 41 determine whether or not it is write protected. + + 42 The preferred write protect status display mechanism is a light, + 43 located within the write protect switch, that is on whenever the + 44 unit is write protected. The light shall be lit regardless of + 45 the reason for the unit being write protected -- i.e., it shall + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-6 + Controls And Indicators 11 June 1992 + + + 1 be lit when the unit is Software Write Protected or Data Safety + 2 Write Protected as well as when the unit is Hardware Write + 3 Protected due to its write protect mechanism being activated. + 4 See Section 4.14, "Write Protection." + + 5 4.3 Unit States + + 6 Each unit may be in one of three states relative to each class + 7 driver that is "Controller-Online" to an MSCP server. (Actually, + 8 it is really each unit number that these states apply to, rather + 9 than to a unit proper.) Each unit may be in a different state + 10 relative to each "Controller-Online" class driver. Controllers + 11 shall therefore maintain the unit state separately for each + 12 connection. Note that a unit's state is meaningless with respect + 13 to a class driver that is not "Controller-Online" to the MSCP + 14 server or when no class driver is "Controller-Online" to the MSCP + 15 server. + + 16 The three unit states are: + + 17 Unit-Offline + + 18 A unit is "Unit-Offline" whenever it is unable to satisfy + 19 normal host requests. Except for status queries, MSCP + 20 commands addressed to a unit that is "Unit-Offline" shall be + 21 rejected. Furthermore, many device characteristics may not + 22 be available to status queries. + + 23 Unit-Available + + 24 A unit is "Unit-Available" whenever it would be able to + 25 satisfy normal host requests, except that the host has not + 26 yet issued an ONLINE command to bring the unit + 27 "Unit-Online." + + 28 Unit-Online + + 29 A unit is "Unit-Online" whenever it is able to satisfy normal + 30 host requests and the host has issued a successful ONLINE + 31 command. + + 32 A fourth unit state, actually a pseudo-state, exists with + 33 controllers that provide Multihost Support. Each MSCP server + 34 contained in such a controller shall implement the "Exclusive + 35 Access" feature, which allows a single host class driver to + 36 reserve a unit for its exclusive use. The host that has obtained + 37 "Exclusive Access" of a unit has complete control of that unit + 38 and may perform all normal unit operations. All other hosts are + 39 prevented from performing any operation that would alter the + 40 state or context of the unit in any manner. The other hosts are, + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-7 + Unit States 11 June 1992 + + + 1 however, permitted to obtain the unit's characteristics as + 2 maintained by the controller via all commands that return those + 3 characteristics. While a unit is under the "Exclusive Access" of + 4 a host the controller shall prevent any other controller to which + 5 the unit may be connected from bringing that unit or some other + 6 unit with which it shares an access path online with respect to + 7 that controller (see Sections 4.16.1, "Multiaccess Drives" and + 8 4.16.2, "Multiunit Drives and Formatters"). "Exclusive Access" + 9 is termed a pseudo-state because that context is maintained + 10 solely by the controller without the knowledge nor direct + 11 participation of the unit. The state of the unit with respect to + 12 the host that has "Exclusive Access" is totally dependent on the + 13 operations that host has requested: it may be "Unit-Online," + 14 "Unit-Available," or "Unit-Offline" (provided the unit remains + 15 operative and known to the controller). The unit is + 16 "Unit-Offline" with respect to all other hosts. Host control of + 17 "Exclusive Access" is provided through the operation of the + 18 AVAILABLE, ONLINE or SET UNIT CHARACTERISTICS commands. See the + 19 description of those commands contained in Chapter 7, "Multihost + 20 Support" for more details. + + 21 The "Unit-Offline" state has seven substates, related to the + 22 exact reason for the unit being "Unit-Offline." These substates + 23 are: + + 24 1. Unit inoperative. Some fatal error condition in the + 25 drive prevents the unit from becoming "Unit-Available" + 26 or "Unit-Online." + + 27 2. Unit disabled. Field Service or a diagnostic has + 28 decided that continued operation of the unit's drive + 29 will lead to progressive deterioration and eventual + 30 destruction of some portion of the drive or media. The + 31 unit has been disabled to prevent its use, and + 32 consequent destruction, until Field Service can repair + 33 the problem. This cause of the unit being + 34 "Unit-Offline" can be overridden, and the unit brought + 35 "Unit-Online," by use of the "Allow Self Destruction" + 36 modifier to the ONLINE command. Note that some devices + 37 may have no way of detecting progressive deterioration, + 38 and consequently will never enter this substate. + + 39 3. Unit known. The controller knows that the specified + 40 unit (i.e., a unit with the specified unit number) + 41 exists, but the unit is "Unit-Offline" for some normal + 42 (nonerror) condition. Typical causes of this substate + 43 include the unit's Run/Stop or Load/Unload switch being + 44 in the Stop or Unload position or no volume being + 45 mounted in the unit. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-8 + Unit States 11 June 1992 + + + 1 4. Under exclusive use of another host. The specified unit + 2 exists and would be "Unit-Available," except that + 3 another host connected via the same controller has been + 4 granted "Exclusive Access" of the unit. + + 5 5. Online to another controller. The specified unit exists + 6 and would be "Unit-Available," except that it or some + 7 other unit with which it shares an access path (i.e., + 8 some other unit on the same multiunit drive or + 9 formatter) is "Unit-Online" to one or more hosts or is + 10 under the "Exclusive Access" of a host via another + 11 controller. The unit will become "Unit-Available" via + 12 this controller if it and all units with which it shares + 13 an access path cease being "Unit-Online" to any hosts or + 14 under the "Exclusive Access" of a particular host via + 15 that other controller. In terms of the "Unit-Offline" + 16 substate that is visible to and reported by a + 17 controller, a unit that is actually online to another + 18 controller will typically oscillate between the "Online + 19 to another controller" substate and the "Unit unknown" + 20 substate. The frequency of the oscillation is + 21 determined by the frequency at which hosts issue + 22 DETERMINE ACCESS PATHS commands to the other controller + 23 for this unit or any unit with which it shares an access + 24 path. See Sections 4.16.1, "Multiaccess Drives" and + 25 4.16.2, "Multiunit Drives and Formatters" for more + 26 information. + + 27 6. Duplicate unit numbers. That is, two or more distinct + 28 units have the same unit number assigned to them. + 29 Controllers shall check for duplicate unit numbers + 30 across all units of the same device class that are + 31 "Unit-Online," that are "Unit-Available," or that are in + 32 one of the following "Unit-Offline" substates: unit + 33 disabled, unit known, under exclusive use of another + 34 host, duplicate unit numbers, or online to another + 35 controller. A controller may or may not, at its option, + 36 include inoperative units when checking for duplicate + 37 unit numbers. Controllers may not check units that are + 38 unknown (as described below) nor may they check for + 39 duplicate unit numbers across different device classes. + 40 Note that a duplicate unit number does not affect a unit + 41 that is already "Unit-Online" to or under the "Exclusive + 42 Access" of a host. + + 43 7. Unit unknown. As far as the controller can determine, + 44 no unit exists with the specified unit number. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-9 + Unit States 11 June 1992 + + + 1 It is possible for a unit to be "Unit-Offline" for several + 2 reasons at the same time (unless the unit is unknown). If a unit + 3 has a duplicate unit number and is not inoperative, then the + 4 controller shall report the duplicate unit number; other causes + 5 of the unit being "Unit-Offline" may also be reported at the + 6 controller's option. In all other cases the controller shall + 7 report at least one cause of the unit being "Unit-Offline," but + 8 which one it reports and whether or not it reports more than one + 9 is optional with the controller. + + 10 The fact that a unit is inoperative may not be detectable until a + 11 host attempts to bring the unit "Unit-Online." Such units will + 12 be treated as and appear to be "Unit-Available" until a host + 13 issues an ONLINE command. The ONLINE command will fail, + 14 typically with a "Drive Error" status code. At this time either + 15 the fact that the unit is inoperative shall be recorded in the + 16 unit itself or else AVAILABLE attention messages shall be + 17 suppressed for the unit, exactly as if an AVAILABLE command with + 18 the "Spin-down" modifier set had been issued for the unit as + 19 described later in this section. In either case, AVAILABLE + 20 attention messages shall not be generated for that unit by any + 21 controller until a human interacts with the unit or some other + 22 event occurs that may clear the error, such as a power failure. + + 23 Controllers and/or drives should keep all units that are + 24 "Unit-Offline" due to being inoperative, disabled, or having + 25 duplicate unit numbers spun-down, except when such units are + 26 under the control of a diagnostic. The handling of units that + 27 are in fact inoperative, but that the controller and drive + 28 believe to be operative, is described in the preceding paragraph. + + 29 Controllers may spontaneously release a host's "Exclusive Access" + 30 of a unit only if the unit becomes inoperative, disabled, or + 31 unknown. + + 32 For the purpose of automatic configuration (i.e., for the GET + 33 UNIT STATUS command with the "Next Unit" modifier) controllers + 34 shall acknowledge the existence of all units that are + 35 "Unit-Online" or "Unit-Available," or that are in one of the + 36 following "Unit-Offline" substates: unit disabled, unit known, + 37 under exclusive use of another host, or duplicate unit numbers. + 38 Unknown units shall not be acknowledged. Units that are + 39 inoperative or online to another controller may or may not be + 40 acknowledged at the controller's option. + + 41 Controllers shall report duplicate unit numbers with a DUPLICATE + 42 UNIT NUMBER attention message, then monitor the affected units + 43 for the cessation of the duplicate unit number condition. When + 44 all units except one have had their unit number changed or have + 45 become unknown, the remaining unit becomes "Unit-Available." + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-10 + Unit States 11 June 1992 + + + 1 Controllers shall report units that they know to be online to + 2 other controllers with an ACCESS PATH attention message. See + 3 Section 4.16.1, "Multiaccess Drives," for more information. + + 4 The "Unit-Offline" substates are all reported with a single + 5 status code; they are partially distinguished via different + 6 subcodes. In addition, the substates are distinguished by the + 7 functioning of the "Allow Self Destruction" modifier to the + 8 ONLINE command, the "Next Unit" modifier to the GET UNIT STATUS + 9 command, what unit characteristics are returned by the GET UNIT + 10 STATUS, ONLINE, and SET UNIT CHARACTERISTICS commands, and by the + 11 DUPLICATE UNIT NUMBER and ACCESS PATH attention messages. + + 12 Possible causes of a unit being "Unit-Offline," and the resulting + 13 "Unit-Offline" substate, include: + + 14 1. The unit is "Unit-Online" or is under "Exclusive Access" + 15 via another controller. The unit is either unknown or + 16 else known to be online to another controller, depending + 17 upon how recently the other controller has processed a + 18 DETERMINE ACCESS PATHS command for this unit or a unit + 19 with which it shares an access path. See Sections + 20 4.16.1, "Multiaccess Drives" and 4.16.2, "Multiunit + 21 Drives and Formatters" for more information. + + 22 2. A power failure that affects the unit but not the + 23 controller. The unit is unknown. + + 24 3. Hardware failure in the unit or in the connection + 25 between the unit and the controller. The unit is either + 26 unknown or inoperative. Note that the unit may appear + 27 to be "Unit-Available" until an ONLINE command is issued + 28 for it, at which time it will be recognized as + 29 inoperative. + + 30 4. Disconnecting the unit from the controller. The unit is + 31 unknown. + + 32 5. Disabling the unit number select mechanism (e.g., + 33 removing the unit number select plug). The unit is + 34 unknown. + + 35 6. Duplicate unit numbers. This condition has its own + 36 substate. Note that this condition will not affect a + 37 unit that is already "Unit-Online" or is under + 38 "Exclusive Access." + + 39 7. Duplicate unit identifiers. The unit is inoperative. + 40 Note that the controller need not check for duplicate + 41 unit identifiers. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-11 + Unit States 11 June 1992 + + + 1 8. Disabling the unit with the Run/Stop or Load/Unload + 2 switch. The unit is known. + + 3 9. Disabling the unit with port selection switches. The + 4 unit is unknown. + + 5 10. Removal of the unit from service by operator command, + 6 typically for diagnostics, formatting, maintenance or + 7 repair. The unit is inoperative. + + 8 11. An internal controller diagnostic decides the unit is + 9 sick and removes it from service. The unit is disabled. + + 10 12. No volume is present in the drive. The unit is known. + + 11 13. The unit has not been built yet, the unit is still in + 12 its shipping crate, or it has otherwise not been + 13 installed yet. The unit is unknown. + + 14 In general, a unit that is "Unit-Offline" to one host class + 15 driver via a specific MSCP server is "Unit-Offline" for the same + 16 reason (same substate) to all host class drivers via that same + 17 MSCP server. There are two exceptions: + + 18 1. A duplicate unit number condition that arises while a + 19 unit is "Unit-Online" to one or more class drivers. The + 20 unit remains "Unit-Online" to those class drivers to + 21 which it is already "Unit-Online," yet is "Unit-Offline + 22 (substate 'Duplicate Unit')" to all other class drivers. + + 23 2. A host has been granted "Exclusive Access" of the unit. + 24 The state of the unit relative to the host that was + 25 granted "Exclusive Access" remains unchanged. The unit + 26 is "Unit-Offline (substate 'Exclusive Use')" to all + 27 other class drivers. + + + 28 All normal operator initiated transitions to the "Unit-Offline" + 29 state shall be smooth, rather than abrupt. Attempts to disable a + 30 unit with its Run/Stop or Load/Unload switch and/or attempts to + 31 dismount (remove) a volume from a unit are, by definition, + 32 "normal operator initiated transitions," and shall therefore be + 33 smooth. Any other action that a human operator would typically + 34 use to disable a drive in a nonemergency situation shall also be + 35 smooth. Note that this does not preclude the existence of some + 36 special mechanism for immediately disabling a unit or drive in an + 37 emergency, provided that it is not the normal way of disabling a + 38 unit or drive. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-12 + Unit States 11 June 1992 + + + 1 A "smooth" transition to the "Unit-Offline" state implies that + 2 all write operations, including multiblock write operations, + 3 shall either be completed in their entirety or else rejected + 4 (never begun). To accomplish a smooth transition the controller + 5 shall complete all write operations (commands) that have already + 6 been initiated. Outstanding write operations that haven't been + 7 initiated yet may either be completed or rejected. Other + 8 outstanding commands, including read operations, may be + 9 completed, rejected, or terminated, regardless of whether or not + 10 they have been initiated. However, if a Sequential command from + 11 a given connection is rejected or terminated, then all + 12 subsequently received non-Immediate commands from the same + 13 connection shall be rejected. Any new commands issued by a host + 14 should be rejected. + + 15 Note that establishing write protection shall also be a smooth + 16 transition. + + 17 A unit enters the "Unit-Available" state when: + + 18 1. The unit is "Unit-Offline" and all causes of the unit + 19 being "Unit-Offline" are removed. The unit becomes + 20 "Unit-Available" with respect to all "Controller-Online" + 21 class drivers unless the unit is under the "Exclusive + 22 Access" of a host. In that case the unit becomes + 23 "Unit-Available" only to the class driver that has + 24 "Exclusive Access" of the unit. + + 25 2. The unit is "Unit-Online" and a host class driver issues + 26 an AVAILABLE command for the unit. The unit becomes + 27 "Unit-Available" with respect to that class driver. If + 28 the "All Class Drivers" modifier was set, the unit also + 29 becomes "Unit-Available" with respect to all other class + 30 drivers to which it is "Unit-Online" via that MSCP + 31 server, unless the "Exclusive Access" modifier was also + 32 set. If the "Exclusive Access" modifier was set the + 33 unit becomes "Unit-Available" to as well as under the + 34 "Exclusive Access" of the issuing class driver and + 35 "Unit-Offline (substate 'Exclusive Use')" to all other + 36 class drivers. + + 37 3. The unit is "Unit-Online" or "Unit-Available" to and + 38 under the "Exclusive Access" of a host and that host's + 39 class driver issues an AVAILABLE, ONLINE, or SET UNIT + 40 CHARACTERISTICS command with the "Exclusive Access" + 41 modifier clear, thereby releasing "Exclusive Access" of + 42 the unit. The state of the unit with respect to the + 43 issuing class driver depends on which of those commands + 44 was issued as well as the state of the unit prior to the + 45 command being issued. (See the descriptions of those + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-13 + Unit States 11 June 1992 + + + 1 commands in Chapter 7, "Multihost Support" for complete + 2 details.) The unit becomes "Unit-Available" to all other + 3 class drivers, regardless of the unit state with respect + 4 to the issuing class driver. + + + 5 If a class driver has enabled attention messages, the MSCP server + 6 uses AVAILABLE attention messages to notify the class driver that + 7 a unit has asynchronously become "Unit-Available." If a class + 8 driver itself sends the MSCP server an AVAILABLE command, then + 9 the transition to "Unit-Available" is synchronous to that class + 10 driver and an AVAILABLE attention message need not be sent to it. + 11 Other class drivers, however, are notified. + + 12 The possible causes of an asynchronous transition to + 13 "Unit-Available" are as follows: + + 14 1. Any transition from "Unit-Offline" to "Unit-Available." + 15 This specifically includes the following cases: + + 16 a. The unit was online to another controller and ceases + 17 to be online to that other controller. Note that + 18 this includes the possibility that the unit was + 19 "Unit-Online" to or under the "Exclusive Access" of + 20 the same class driver via that other controller. + + 21 b. The unit was under the "Exclusive Access" of a host + 22 and that host has released the "Exclusive Access" of + 23 the unit. + + + 24 2. A transition from "Unit-Online" to "Unit-Available," + 25 with respect to this class driver, that is caused by + 26 some other class driver issuing an AVAILABLE command + 27 with the "All Class Drivers" modifier set. + + 28 3. Any spontaneous transition from "Unit-Online" to + 29 "Unit-Available." I.e., any transition from + 30 "Unit-Online" to "Unit-Available" that is not caused by + 31 an AVAILABLE command. + + 32 The one exception to this applies to a unit that becomes + 33 "Unit-Available" due to an AVAILABLE command that has the + 34 "Spin-down" modifier set or as a side effect of certain errors + 35 that also spin-down the unit. Such commands or errors indicate + 36 that all class drivers are disinterested in the volume mounted on + 37 the unit, so that no class driver should be notified of the + 38 transition until an operator mounts a new volume or otherwise + 39 interacts with the unit. Therefore the request to spin-down the + 40 unit suppresses AVAILABLE attention messages for that unit until + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-14 + Unit States 11 June 1992 + + + 1 an operator interacts with the unit. Note that the messages + 2 shall be suppressed for all class drivers, MSCP servers, and + 3 controllers that may connect to the unit, regardless of which + 4 individual MSCP server and controller actually requested that the + 5 unit spin-down. This effectively means that, for multiaccess + 6 drives, the fact that AVAILABLE attention messages are suppressed + 7 must be recorded in the drive itself, rather than in the + 8 controller. + + 9 AVAILABLE attention messages shall be suppressed at least until + 10 an operator interacts with the unit's drive, the unit becomes + 11 "Unit-Online" to any class driver via any MSCP server, or the + 12 unit's drive loses context. It is not acceptable for the unit's + 13 drive to "lose context" solely to forget that AVAILABLE attention + 14 messages have been suppressed. Loss of context must be due to + 15 some external reason, such as a power failure. The suppression + 16 of AVAILABLE attention messages shall be canceled or forgotten if + 17 the unit becomes "Unit-Online" to any class driver via any MSCP + 18 server or if an operator actuates the unit's Run/Stop or + 19 Load/Unload switch, changes the unit number selected by the Unit + 20 Number Select Mechanism, or mounts a different volume in the + 21 unit. Note that AVAILABLE attention messages are not suppressed + 22 (i.e., their suppression is instantly canceled or forgotten) if, + 23 after a class driver issues an AVAILABLE command with the + 24 "Spin-down" modifier set, the unit is still "Unit-Online" with + 25 respect to one or more other class drivers. + + 26 MSCP servers may send redundant or unnecessary AVAILABLE + 27 attention messages at any time, provided that attention messages + 28 have been enabled, the messages have not been suppressed as + 29 described above, and the extra messages are infrequent enough to + 30 avoid causing any significant overhead in either the + 31 communications mechanism or a host. It is specifically allowable + 32 for an MSCP server to precede every DUPLICATE UNIT NUMBER + 33 attention message with an AVAILABLE attention message for the + 34 same unit number. + + 35 A unit enters the "Unit-Online" state with respect to a class + 36 driver upon the successful completion of an ONLINE command issued + 37 by that class driver. + + 38 4.4 Unit Numbers + + 39 As described in Section 4.2, "Controls and Indicators," all disk + 40 and tape drives accessible via MSCP must have a user visible and + 41 Field Service alterable unit number. The characters displayed as + 42 the unit number, interpreted as a decimal number, shall match the + 43 binary value passed in the "unit number" field of MSCP control + 44 messages. Multiunit drives and formatters may use a single unit + 45 number select mechanism and display for the range of consecutive + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-15 + Unit Numbers 11 June 1992 + + + 1 unit numbers assigned to their units. + + 2 MSCP supports unit numbers in the range 0 through 65535. All + 3 controllers and units shall support unit numbers in the range 0 + 4 through 251. Unit numbers between 252 and 65535 may be supported + 5 or not at the controller's and/or unit's option. This implies + 6 that all units accessible via MSCP shall have a unit number + 7 select mechanism capable of specifying and a unit number display + 8 mechanism capable of displaying any unit number in the range 0 + 9 through 251. Controllers shall treat unsupported unit numbers as + 10 if the specified unit is "Unit-Offline" due to being unknown (see + 11 Section 4.3, "Unit States"). + + 12 The intent of this broad range of unit numbers is that, within a + 13 device class, all units that are accessible to a single host have + 14 unique unit numbers. In pursuit of this goal units with + 15 duplicate unit numbers are considered to be "Unit-Offline." + 16 However, this must be balanced against another goal, namely that + 17 transient actions performed on another unit should not be allowed + 18 to affect continued host access to a unit that is already + 19 "Unit-Online" or under "Exclusive Access." Controllers shall + 20 balance these two goals with the following algorithms: + + 21 1. Controllers detect and respond to duplicate unit numbers + 22 across all units that are "Unit-Online," that are + 23 "Unit-Available," or that are in one of the following + 24 "Unit-Offline" substates: unit disabled, unit known, + 25 under exclusive use of another host, duplicate unit + 26 numbers, or online to another controller. Units that + 27 are "Unit-Offline" due to being unknown shall not be + 28 considered for duplicate unit number detection. + 29 Controllers may or may not, at the controller's option, + 30 consider units that are inoperative. Detection of a + 31 duplicate unit number condition on one unit of a + 32 multiunit drive is treated as a duplicate unit number + 33 condition on all other units that share one or more of + 34 the following components with the unit having the + 35 duplicate unit number: + + 36 a. A unit number select mechanism. + + 37 b. A Run/Stop or Load/Unload switch. + + 38 c. A spindle or other mechanical components. + + + 39 2. Discovery of a duplicate unit number condition does not + 40 affect any unit that is already "Unit-Online" or under + 41 "Exclusive Access." The state of such a unit remains + 42 unchanged until some other event (such as an AVAILABLE + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-16 + Unit Numbers 11 June 1992 + + + 1 command or loss of controller context) occurs that would + 2 otherwise cause it to become "Unit-Available" to all + 3 hosts, at which time the unit becomes "Unit-Offline" and + 4 is spun-down as described below. Note that in the + 5 already "Unit-Online" case the unit becomes + 6 "Unit-Offline" to all other hosts (and therefore cannot + 7 be brought "Unit-Online" by them) even while it remains + 8 "Unit-Online" to its current hosts. + + 9 3. When a controller becomes aware of a duplicate unit + 10 number condition on two or more units connected to it, + 11 it immediately spins-down all such units that are + 12 "Unit-Available" or "Unit-Offline" with respect to all + 13 hosts. When a unit that was "Unit-Online" or under + 14 "Exclusive Access" with a duplicate unit number + 15 condition becomes "Unit-Available" to all hosts for any + 16 reason, the controller immediately spins it down. In + 17 both cases, units that belong to a multiunit drive and + 18 share a spindle or other mechanical components are to be + 19 spun down only if all of the units of the drive are + 20 either "Unit-Offline" or "Unit-Available" to all hosts. + + 21 4. The controller reports "Unit-Offline" due to having a + 22 duplicate unit number as the state for all units with + 23 duplicate unit number conditions that are not already + 24 "Unit-Online" or under "Exclusive Access." Other causes + 25 of the units being "Unit-Offline" may or may not be + 26 reported at the controller's option. + + 27 5. The controller recognizes when a duplicate unit number + 28 condition goes away. That is, the controller recognizes + 29 when all units except one with the same duplicate unit + 30 number have their unit numbers changed and/or become + 31 unknown. When this occurs, the controller sends + 32 AVAILABLE attention messages for the remaining unit if + 33 there is no other reason for it being "Unit-Offline," + 34 since it has just become "Unit-Available." + + 35 In addition to the above algorithms, controllers report duplicate + 36 unit number conditions to class drivers using the DUPLICATE UNIT + 37 NUMBER attention message. This allows hosts to complain to a + 38 human operator, who will presumably remedy the condition. This + 39 message is sent to all "Controller-Online" class drivers that + 40 have attention messages enabled when a duplicate unit number + 41 condition is first detected. It is permissible for a controller + 42 to send redundant or extra DUPLICATE UNIT NUMBER attention + 43 messages, provided that the reported duplicate unit number + 44 condition actually exists. See Section 5.8.3, "Duplicate Unit + 45 Number Attention Message," for more details. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-17 + Unit Numbers 11 June 1992 + + + 1 The above algorithms effectively enforce nonduplicate unit + 2 numbers across the drives connected to the same controller. + 3 Although not required by MSCP, it is recommended that class + 4 drivers use the following algorithm to enforce nonduplicate unit + 5 numbers across the drives accessible to that class driver: + + 6 1. Upon becoming aware of a unit (i.e., upon receiving an + 7 AVAILABLE attention message), the class driver should + 8 check if it is already aware of a unit with the same + 9 unit number on a different MSCP server. If it is not + 10 aware of such a unit, it should exit. If it is aware of + 11 such a unit, it should check if that unit has the same + 12 unit identifier. + + 13 2. If the unit identifiers are the same, it is the same + 14 unit multiaccessed to several controllers, so exit. If + 15 the unit identifiers are different, the class driver + 16 should issue a GET UNIT STATUS command to see if the old + 17 unit still exists. + + 18 3. If the old unit no longer exists (i.e., it's + 19 "Unit-Offline"), exit. If the old unit still exists, + 20 the class driver should check that the unit identifier + 21 returned by GET UNIT STATUS is also different from the + 22 unit identifier that was in the AVAILABLE attention + 23 message. If the unit identifiers are the same, exit. + 24 If the unit identifiers are different, the class driver + 25 should issue an AVAILABLE command with the "Spin-down" + 26 modifier set for the new unit. The class driver should + 27 also issue an AVAILABLE command with the "Spin-down" + 28 modifier set for the old unit if the class driver is not + 29 already "Unit-Online" to that unit. + + 30 4. Whenever a class driver brings an MSCP server + 31 "Controller-Online," the class driver should issue, + 32 through that MSCP server, AVAILABLE commands with the + 33 "Spin-down" modifier set for all units that it has + 34 "Unit-Online" via another MSCP server. + + 35 5. Whenever a class driver brings a unit "Unit-Online," the + 36 class driver should issue ONLINE commands for that same + 37 unit number to all MSCP servers. If more than one + 38 ONLINE command succeeds, the class driver should check + 39 that the unit identifiers returned by all the successful + 40 ONLINE commands are the same. If any of the unit + 41 identifiers are different, then the class driver should + 42 treat all the ONLINE commands as having failed and issue + 43 AVAILABLE commands with the "Spin-down" modifier set to + 44 all MSCP servers on which the ONLINE command succeeded. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-18 + Unit Numbers 11 June 1992 + + + 1 Note that this algorithm uses the fact that an AVAILABLE command + 2 with the "Spin-down" modifier set suppresses AVAILABLE attention + 3 messages until a human operator interacts with the unit. + + 4 4.5 Command Categories And Execution Order + + 5 MSCP commands fall into one of four command categories. Each + 6 category has a set of execution order restrictions that MSCP + 7 servers must satisfy. The four categories and their restrictions + 8 are described below. + + 9 Immediate commands are those commands, such as status inquiries, + 10 that both require very little time to complete and do not cause + 11 any unit context changes. MSCP servers shall process Immediate + 12 commands immediately, without waiting for any other commands to + 13 complete. MSCP servers shall guarantee that all outstanding + 14 Immediate commands plus an additional GET COMMAND STATUS command + 15 issued by each "Controller-Online" class driver will complete + 16 within the controller timeout interval. + + 17 A class driver may issue Immediate commands whenever its credit + 18 balance is greater than zero, whereas all other commands may only + 19 be issued when the class driver's credit balance is two or + 20 larger. This is discussed further in Chapter 3, "Class Driver / + 21 MSCP Server Communications." Class drivers are thus guaranteed + 22 to be able to issue at least one Immediate command, and have it + 23 executed, regardless of what other commands they may have + 24 outstanding. In particular, the class driver is guaranteed to be + 25 able to issue a GET COMMAND STATUS command and have it complete + 26 within the controller timeout interval. + + 27 Sequential commands are those commands that, for the same unit, + 28 shall be executed in precise order. Sequential commands + 29 typically alter a unit's context, such as by changing a unit + 30 characteristic or by altering the position of a tape drive. All + 31 Sequential commands for a particular unit shall be executed in + 32 the exact order that the MSCP server receives them. The + 33 execution of a Sequential command may not be interleaved with the + 34 execution of any other Sequential or Non-Sequential commands for + 35 the same unit. Furthermore, any Non-Sequential commands received + 36 before a particular Sequential command shall be completed before + 37 execution of that Sequential command begins, and any + 38 Non-Sequential commands received after a particular Sequential + 39 command shall not begin execution until after that Sequential + 40 command is completed. Sequential commands are, in effect, a + 41 barrier that Non-Sequential commands may not pass or penetrate. + 42 Note that Sequential command execution is performed on a unit + 43 basis rather than a single connection basis. Controllers that + 44 provide Multihost Support shall therefore enforce the Sequential + 45 command execution guarantees across all "Controller-Online" + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-19 + Command Categories And Execution Order 11 June 1992 + + + 1 connections. + + 2 Non-Sequential commands are those commands that controllers may + 3 reorder so as to optimize performance. Controllers may + 4 furthermore interleave the execution of several Non-Sequential + 5 commands among themselves, performing each command a fragment at + 6 a time. The only restrictions are: + + 7 1. Execution of a Non-Sequential command shall not cross + 8 the barrier created by a Sequential command for the same + 9 unit. + + 10 2. The controller shall complete useful work on its oldest + 11 outstanding command on each "Controller-Online" + 12 connection within the controller timeout interval, so as + 13 not to cause a command timeout. See Section 4.10, + 14 "Command Timeouts." + + + 15 Note that controller performance optimization of Non-Sequential + 16 commands, although not a strict requirement of MSCP, is highly + 17 recommended. The optimization algorithms used are controller + 18 implementation dependent and will undoubtedly differ from + 19 controller to controller. Controllers that provide Multihost + 20 Support are expressly permitted to include all Non-Sequential + 21 commands received from all "Controller-Online" class drivers, + 22 directed to the same unit, in the optimization (algorithm) being + 23 performed on the unit. One consequence of such optimization that + 24 must be noted is that if more than one data transfer request with + 25 the same target received from different class drivers + 26 (connections) are outstanding at the same time, the ordering of + 27 the data written/read will be indeterminate. + + 28 Special commands are similar to Non-Sequential commands, but have + 29 additional, unique execution order requirements. The execution + 30 order requirements for Special commands are described in the + 31 commands' description. + + 32 Note that tape class devices only have Immediate and Sequential + 33 commands. There is no such thing as a Non-Sequential or Special + 34 tape class command. + + 35 Execution order is based on the order in which commands are + 36 received by the controller's MSCP server. For commands sent by a + 37 single class driver, the order of transmission is identical to + 38 the order of reception. For commands sent by several class + 39 drivers, the order of reception is essentially random. The only + 40 way that a class driver can ensure that one of its commands will + 41 be received after some other command issued by another class + 42 driver is to wait until the other class driver receives the first + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-20 + Command Categories And Execution Order 11 June 1992 + + + 1 command's end message (i.e., wait until the first command + 2 completes) before sending the command. + + 3 For the purpose of determining execution order, a command is + 4 completed when the controller's MSCP server queues the command's + 5 end message for transmission to the host. The controller need + 6 not wait until the host has confirmed its receipt, although + 7 sequential message delivery guarantees must be preserved. The + 8 gist of this is that after termination of the connection between + 9 a host class driver and an MSCP server, the absence of a + 10 Sequential command's end message implies nothing about the + 11 execution or nonexecution of the Sequential command. + + 12 When an MSCP server finishes processing or executing a command, + 13 the command can finish in any of four ways. Based on which way + 14 the server finishes a command, the command is said to have been + 15 completed, rejected, terminated, or aborted. + + 16 A completed command is a command that the server has fully + 17 executed to its normal conclusion. A command that is completed + 18 has either succeeded or encountered an unrecoverable error. In + 19 normal operation all commands are completed. + + 20 A rejected command is a command for which the server never even + 21 starts processing. Some commands are rejected due to termination + 22 of the connection between the MSCP server and the class driver. + 23 Such commands are discarded by the MSCP server, port driver, or + 24 communications mechanism before any work is done on them. Other + 25 commands are rejected due to being illegal commands or due to a + 26 unit being in an illegal state. For example, transfer commands + 27 are rejected if the specified unit is not "Unit-Online." + + 28 A terminated command is a command for which the server begins + 29 processing, but then terminates processing part way through + 30 command execution. Transfer commands are terminated if their + 31 unit is disconnected (cable breaks or drive loses power) part way + 32 through the transfer. Transfer commands may also be terminated + 33 if the connection between the MSCP server and the class driver is + 34 terminated part way through the transfer. Generally only + 35 Non-Sequential commands can be terminated. Termination of + 36 Sequential commands is discussed below. + + 37 An aborted command is a command that the class driver has asked + 38 to have aborted via an ABORT command, and that furthermore has + 39 been located and explicitly aborted by the MSCP server. That is, + 40 commands that the MSCP server just allows to complete are + 41 completed, not aborted. An aborted command is effectively either + 42 rejected or terminated, depending upon whether or not the server + 43 has begun execution of the command when it processes the ABORT. + 44 (This definition of an aborted command is from the viewpoint of + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-21 + Command Categories And Execution Order 11 June 1992 + + + 1 an MSCP server. From the viewpoint of a class driver, an aborted + 2 command is any command for which an ABORT command has been + 3 issued.) The end message of an aborted command shall be returned + 4 within one controller timeout interval following rejection or + 5 termination of the command regardless of the aborted command's + 6 command category. + + 7 Immediate commands are always completed if the connection between + 8 MSCP server and class driver remains intact; they may not be + 9 rejected, terminated, or aborted. If the connection is + 10 terminated before an Immediate command can be completed, then the + 11 command may be completed, rejected, or terminated. Since + 12 Immediate commands do not change the state, context, or data of + 13 the unit, these three command completion modes are equivalent if + 14 the connection has been terminated. + + 15 Non-Sequential commands may, in general, be completed, rejected, + 16 terminated, or aborted. This is true both if the connection + 17 remains intact or if it is terminated. However, there is one + 18 restriction regarding write operations. Write operations shall + 19 not be terminated as a result of any normal operator interactions + 20 with the unit. That is, write operations shall not be terminated + 21 (partially completed) as a result of an operator attempting to + 22 spin-down, dismount, or write protect the unit. The purpose of + 23 this restriction is to prevent data corruption due to partial + 24 updates. This is further discussed under the term "smooth" + 25 transitions in Section 4.3, "Unit States," and Section 4.14, + 26 "Write Protection." + + 27 Sequential commands may be completed or rejected, but in general + 28 may not be terminated. If a Sequential command is aborted, it + 29 shall be aborted before it begins execution (rejected) rather + 30 than in the middle of execution (terminated). The reason for + 31 this is that Sequential commands appear to hosts as atomic + 32 (indivisible) operations. Thus, there is both this requirement, + 33 that Sequential commands cannot be terminated, therefore + 34 preventing subsequent commands from acting on partially updated + 35 unit state and context, and the requirement that execution of a + 36 Sequential command cannot be interleaved with any other command + 37 on the same unit, therefore preventing a concurrent command from + 38 acting on partially updated unit state and context. + + 39 There are two exceptions to the requirement that a Sequential + 40 command may not be terminated. The first is that a server may + 41 terminate a Sequential command in the middle of execution, + 42 provided that the termination process undoes all unit state and + 43 context changes that have been made on the unit. From the + 44 viewpoint of the class driver, this case is exactly equivalent to + 45 the command having been rejected. The second exception is that + 46 the controller and/or unit loses context, generally due to a + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-22 + Command Categories And Execution Order 11 June 1992 + + + 1 power failure or similar event. Since the unit's state and + 2 context will be completely reset when power and/or normal + 3 operation are restored, the fact that it was left in some + 4 indeterminate state does not matter. Note that if the controller + 5 loses context, it must lose context for all connections to the + 6 affected unit's device class (implying that all such connections + 7 have been terminated), as otherwise some other class driver may + 8 see the unit in an indeterminate state. + + 9 Note that any command that fails due to an unrecoverable device + 10 or data error is a completed command. Commands are rejected, + 11 terminated, or aborted only in response to inappropriate unit + 12 state or context, connection termination, and being aborted via + 13 ABORT commands. + + 14 Commands that are rejected, terminated, or aborted shall still + 15 return their proper end message format with valid parameters as + 16 defined in the individual command descriptions. The only case + 17 where a different end message format may be returned is if the + 18 command is rejected as a protocol error type "Invalid Command." + 19 A special end message format and end message opcode is used for + 20 that purpose. See "Invalid Command" status in Section 5.5, + 21 "Status Codes" for more detail. + + 22 4.6 Class Driver / MSCP Server Synchronization + + 23 Synchronization of a class driver with an MSCP server is + 24 accomplished by establishing or re-establishing the connection + 25 between the class driver and the MSCP server. When the + 26 connection is established or re-established, the MSCP server + 27 terminates all commands that are outstanding from that class + 28 driver. This forces the dialogue between the class driver and + 29 MSCP server to a known, synchronized state: that of having no + 30 outstanding commands. After establishing the connection the + 31 class driver can issue commands without worrying about + 32 duplicating command reference numbers or other unfortunate side + 33 effects. Note that synchronizing with the MSCP server, if + 34 successful, causes the MSCP server to become + 35 "Controller-Online." + + 36 As stated above, the main purpose of synchronization is to + 37 guarantee that there are no outstanding commands, thus forcing + 38 the dialogue between the class driver and MSCP server to a known + 39 state. MSCP servers shall ensure that this guarantee is met + 40 before they allow synchronization to complete (i.e., before they + 41 become "Controller-Online"). In particular, MSCP servers shall + 42 guarantee that no end messages will be sent and that no units + 43 will have their state, context, or (data) contents changed for + 44 any commands that were issued on an earlier incarnation of the + 45 connection between the class driver and MSCP server. Note that + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-23 + Class Driver / MSCP Server Synchronization 11 June 1992 + + + 1 an MSCP server may allow outstanding commands to complete, either + 2 partially or entirely, but if it does it must delay the + 3 completion of synchronization (delay the transition to + 4 "Controller-Online") until all such commands have completed or + 5 terminated. + + 6 Class drivers shall synchronize with the MSCP server whenever the + 7 host boots, recovers from a power failure, loses context, or is + 8 recovering from certain errors. After synchronizing with an MSCP + 9 server, the class driver should do the following: + + 10 1. Issue a SET CONTROLLER CHARACTERISTICS command to + 11 establish host-settable controller characteristics and + 12 obtain non-host-settable controller characteristics. + + 13 2. Issue ONLINE commands for all units that the class + 14 driver wishes to be "Unit-Online." + + 15 3. Reissue all commands, if any, that were outstanding + 16 before the class driver synchronized with the MSCP + 17 server in the exact order that they were originally + 18 issued. However, any commands that have been aborted + 19 (i.e., for which an ABORT command has been issued) shall + 20 not be reissued. Instead the class driver should assume + 21 that the command has been successfully aborted and is + 22 therefore no longer outstanding. + + 23 There is one exception to reissuing all commands that were + 24 outstanding. The class driver shall maintain a retry limit + 25 count, to ensure that its oldest outstanding command won't be + 26 retried infinitely many times. The magnitude of this limit is + 27 host dependent, although the oldest command shall be retried at + 28 least once. When the class driver's oldest outstanding command + 29 exceeds the retry limit count, an error shall be returned rather + 30 than retrying the command again. All other outstanding commands, + 31 however, should still be retried. See Section 4.10, "Command + 32 Timeouts," for more information. + + 33 It may be possible that a class driver will receive messages from + 34 an MSCP server after the class driver has initiated + 35 synchronization with the MSCP server but before the + 36 synchronization completes. Whether or not this is in fact + 37 possible is communications mechanism dependent, as it depends + 38 upon the detailed design of the communications mechanism and port + 39 driver. Any attention messages that the class driver receives + 40 during this interval should be discarded. Any error log messages + 41 should be logged in the normal fashion. Any end messages that + 42 the class driver receives during this interval may be either + 43 handled normally (thus completing the corresponding command) or + 44 else discarded. If the class driver discards one end message, it + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-24 + Class Driver / MSCP Server Synchronization 11 June 1992 + + + 1 shall discard all subsequent end messages until the + 2 synchronization completes. It is recommended, although not + 3 required, that class drivers handle all such end messages + 4 normally. + + 5 4.7 Class Driver Error Recovery + + 6 The principal method of error recovery used by class drivers is + 7 to resynchronize with the MSCP server, as described in Section + 8 4.6, "Class Driver / MSCP Server Synchronization." All + 9 communications mechanism failures and many controller failures + 10 are reported by terminating the connection between the class + 11 driver and MSCP server, in response to which the class driver + 12 should attempt to resynchronize with the MSCP server. If the + 13 class driver decides that the controller is insane, either + 14 because the class driver received an invalid message or because a + 15 command timed out, it should recover by resynchronizing with the + 16 MSCP server. Similarly, if the MSCP server decides that the + 17 class driver is insane, it may terminate the connection to the + 18 class driver. If the class driver is in fact actually sane, it + 19 will resynchronize with the MSCP server after the port driver + 20 notifies it that the connection has been terminated. + + 21 Aside from resynchronization as described in the preceding + 22 paragraph, class drivers need perform very little error recovery, + 23 since controllers handle all recoverable errors. The only + 24 exceptions to this guideline are as follows: + + 25 1. Errors on multiaccess drives should be retried using + 26 another controller. + + 27 2. Commands that fail due to the unit being + 28 "Unit-Available" should typically be reissued after + 29 bringing the unit "Unit-Online." + + 30 3. High availability systems may wish to perform the + 31 enhanced error recovery described below. + + + 32 High availability systems may wish to use the following + 33 additional error recovery strategy in order to minimize the + 34 impact of certain types of controller problems. Rather than + 35 reissuing outstanding commands all at once after resynchronizing + 36 with a controller, such a system should instead reissue the + 37 oldest outstanding command all by itself. The host class driver + 38 should reissue all other outstanding commands only after the + 39 oldest command completes. The other outstanding commands may be + 40 reissued either all at once (recommended) or one at a time. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-25 + Class Driver Error Recovery 11 June 1992 + + + 1 If the oldest command times out or otherwise fails again after + 2 being reissued, then it was presumably the source of the problem + 3 and normal operation will resume. If the oldest command + 4 succeeds, then the problem is most likely due to some race + 5 condition within the controller and will not recur. If the + 6 problem does recur, then successive iterations of this algorithm + 7 will execute commands one at a time until the offending command + 8 is found and discarded. + + 9 4.8 Serious Exceptions + + 10 A serious exception is an unrecoverable error or some other + 11 unusual condition that requires host acknowledgment before + 12 additional commands are processed. Serious exceptions occur only + 13 on tape class devices. See Tape Mass Storage Control Protocol + 14 Specification (TMSCP) for complete details. + + 15 4.9 Host Access Timeouts + + 16 MSCP servers provide host access timeouts to guarantee that + 17 multiaccess drives (described in Section 4.16.1, "Multiaccess + 18 Drives") will be accessible in spite of certain communications + 19 mechanism failures. If the communications path between hosts and + 20 a controller fails when one or more drives are "Unit-Online" or + 21 under "Exclusive Access" via that controller, the drives would + 22 normally become inaccessible. The drives can't be accessed via + 23 the controller through which they are "Unit-Online" or under + 24 "Exclusive Access," since that controller can't be accessed, and + 25 they can't be accessed via a second controller, since they are + 26 already accessed through the first controller. The host access + 27 timeout, if enabled, eliminates this problem by causing the first + 28 controller to automatically release all drives if it doesn't + 29 receive a command within a specified time interval. + + 30 The exact mechanism used for host access timeouts is to have the + 31 controller's MSCP server become "Controller-Available" relative + 32 to any host class driver whose host access timeout expires. The + 33 MSCP server automatically resets the timeout whenever it receives + 34 a command from the class driver or has a command outstanding from + 35 that class driver. Therefore the timeout will never expire if + 36 the class driver maintains a reasonably constant dialog with the + 37 MSCP server. Note that implementing host access timeouts on a + 38 per host basis has the benefit that the MSCP server will + 39 automatically release any resources allocated to a host if that + 40 host goes down. + + 41 If communication with all hosts ceases, the host access timeout + 42 of each class driver will ultimately expire, causing the MSCP + 43 server to become "Controller-Available" relative to all hosts. + 44 Each unit will be released, allowing it to be accessed via an + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-26 + Host Access Timeouts 11 June 1992 + + + 1 alternate controller, as soon as all class drivers that are + 2 "Unit-Online" or under "Exclusive Access" with respect to the + 3 unit (or any other unit that shares its access path) cease to be + 4 "Unit-Online" or under "Exclusive Access" by virtue of becoming + 5 "Controller-Available." Ultimately all class drivers will become + 6 "Controller-Available," thus releasing all units. + + 7 Class drivers specify the time interval that an MSCP server will + 8 use for the host access timeout in the SET CONTROLLER + 9 CHARACTERISTICS command. A host access timeout value of zero + 10 specifies that host access timeouts should be disabled. A + 11 default host access timeout of 60 seconds is used from the time a + 12 class driver becomes "Controller-Online" until it issues its + 13 first SET CONTROLLER CHARACTERISTICS command. + + 14 Each class driver may specify a separate time interval. This + 15 allows class drivers to vary the host access timeout interval in + 16 accordance with host policy and availability requirements. High + 17 availability systems should typically use a fairly short host + 18 access timeout, on the order of 10 to 30 seconds, together with a + 19 background process that verifies the continued availability of + 20 the host to controller communications path. The background + 21 process would have the desirable side effect of ensuring that the + 22 host access timeout never expired. Normal systems should use a + 23 larger timeout, on the order of 1 to 5 minutes, to avoid + 24 excessive resynchronizations, yet still allow failure recovery. + 25 Single user and other specialized systems may disable host access + 26 timeouts. Note that host access timeouts should typically be + 27 enabled even on systems that do not seem to require them, as + 28 drives may be multiaccessed to a totally separate host used as a + 29 backup system. + + 30 MSCP servers shall implement host access timeouts subject to the + 31 following constraints: + + 32 1. The host access timeout expires, for a particular class + 33 driver, at the amount of the host access timeout + 34 interval after the controller or MSCP server completes + 35 all outstanding commands from that class driver, + 36 provided that no new commands are received from that + 37 class driver during this interval. + + 38 2. The MSCP server shall enter the "Controller-Available" + 39 state (as a result of host access timeout expiration) + 40 relative to a class driver no sooner than the moment of + 41 host access timeout expiration defined in item 1 above. + + 42 3. The MSCP server should enter the "Controller-Available" + 43 state (as a result of host access timeout expiration) as + 44 soon as possible after the moment of host access timeout + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-27 + Host Access Timeouts 11 June 1992 + + + 1 expiration defined in item 1 above. Except when the + 2 controller is saturated with work for other class + 3 drivers, this shall be no later than one second plus the + 4 amount of the host access timeout interval after the + 5 moment of host access timeout expiration. + + 6 In other words, the host access timeout is measured from the time + 7 that the last command is completed. The MSCP server may defer + 8 recognition of host access timeout expiration for up to one + 9 second plus the amount of the host access timeout after the + 10 formal expiration of the timeout. That is, the host access + 11 timeout shall be implemented with an accuracy range of -0% + 12 through +100%+1 second. Furthermore, this accuracy range may be + 13 extended on the high side if the controller is saturated with + 14 work for other class drivers. + + 15 This definition of host access timeouts has been structured to + 16 allow at least two alternative implementations. In the first + 17 implementation, the controller or MSCP server starts a timer when + 18 it goes "idle" -- that is, when it completes the last outstanding + 19 command. The duration of the timer is the host access timeout + 20 interval. The timer is designed to not err on the low side (too + 21 short an interval) and to err by no more than a factor of two on + 22 the high side (too long an interval). If the timer expires + 23 before the MSCP server receives another command, declare a host + 24 access timeout and become "Controller-Available." The second + 25 implementation uses a continuously running timer that "ticks" at + 26 the host access timeout interval. If there is no outstanding + 27 command and the timer "ticks" twice in succession without the + 28 MSCP server having received a command from the host, then declare + 29 a host access timeout and become "Controller-Available." + + 30 Each controller or MSCP server has a minimum and a maximum host + 31 access timeout interval that it implements. If a class driver + 32 specifies a host access timeout interval that is less than the + 33 minimum, then the MSCP server uses its minimum. If a class + 34 driver specifies a host access timeout interval that is greater + 35 than the controller's maximum, then the controller uses its + 36 maximum. A controller's or MSCP server's minimum host access + 37 timeout interval shall be 10 seconds or less. A controller's or + 38 MSCP server's maximum host access timeout interval shall be at + 39 least 255 seconds. That is, all controllers shall fully + 40 implement host access timeout intervals in the range 10 through + 41 255 seconds. Support of intervals outside this range is + 42 controller dependent. The range of host access timeout intervals + 43 that a controller supports shall be described in the controller's + 44 Functional Specification; it cannot be obtained via MSCP. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-28 + Host Access Timeouts 11 June 1992 + + + 1 Note that all controllers and MSCP servers shall also implement + 2 the host access timeout value zero, which disables host access + 3 timeouts. + + 4 4.10 Command Timeouts + + 5 Host class drivers use command timeouts to guarantee that all + 6 controller or communications mechanism failures will be detected. + 7 The failures detected by command timeouts include partially sane + 8 or deadlocked controllers, which may continue to process new + 9 commands even though one or more old commands have been lost and + 10 will never complete. The use of command timeouts centers around + 11 the GET COMMAND STATUS command. Indeed, the primary purpose of + 12 the GET COMMAND STATUS command is for command timeouts. + + 13 A controller is sane if and only if it will ultimately complete + 14 all commands submitted to it. For practical purposes, the term + 15 "ultimately" must be replaced with the phrase "within reasonable + 16 time." What constitutes a "reasonable time" varies with the + 17 complexity of the command and the performance of the controller + 18 and drives. We can eliminate the difficulty of the host class + 19 driver having to derive this "reasonable time" by restating the + 20 definition of a sane controller as follows: A controller is sane + 21 if and only if it will always complete useful work on its oldest + 22 outstanding request within reasonable time. This definition lets + 23 us set the "reasonable time" to some fixed value, and vary the + 24 units in which we measure "useful work" according to the + 25 complexity of the command. Command timeouts are based on this + 26 second definition. + + 27 A class driver implements the command timeout mechanism as + 28 follows. For each MSCP server to which it is + 29 "Controller-Online," the class driver keeps track of which + 30 command is its oldest outstanding command plus the previous + 31 "command status" value for its oldest outstanding command. The + 32 previous "command status" value should be set to all ones + 33 whenever the oldest command completes and a new command becomes + 34 the oldest. The class driver should issue GET COMMAND STATUS + 35 commands for its oldest outstanding command at intervals of the + 36 controller timeout interval or longer. When each GET COMMAND + 37 STATUS command completes, the class driver checks if the command + 38 for which it was issued is still outstanding and, if it is, + 39 verifies that the "command status" returned by the GET COMMAND + 40 STATUS command is lower than the previous "command status." This + 41 value measures the amount of work remaining before completion of + 42 the command. If the value ever increases or stays the same, or + 43 if a GET COMMAND STATUS command ever takes longer than the + 44 controller timeout interval to complete, then the class driver + 45 should assume that the controller has failed and resynchronize + 46 with the controller. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-29 + Command Timeouts 11 June 1992 + + + 1 In addition to guaranteeing that they will complete useful work + 2 on their oldest outstanding command, controllers shall also + 3 guarantee that they will complete all aborted commands within the + 4 controller timeout interval. That is, an aborted command's end + 5 message shall be sent no later than the amount of the controller + 6 timeout interval after the ABORT command's end message. Host + 7 class drivers can check this by setting the previous "command + 8 status" value to one whenever the oldest outstanding command has + 9 been aborted (i.e., when the class driver receives the ABORT + 10 command's end message indicating that its oldest outstanding + 11 command has been aborted). + + 12 Single host controllers (i.e., controllers that do not provide + 13 Multihost Support) need not guarantee that all aborted commands + 14 will complete within the controller timeout interval if + 15 excessively pathological situations arise (e.g., compound or + 16 multiple errors, causing error recovery sequences to stretch out + 17 to unrealistic lengths). + + 18 If the command timeout for an aborted command expires due to such + 19 a situation, the class driver will resynchronize with the MSCP + 20 server and reissue all outstanding commands except for those that + 21 had been aborted. Since the aborted commands will not be + 22 reissued, the timeout will not recur. Thus this exception is + 23 transparent to host class drivers. + + 24 The above algorithm applies to non-Immediate commands. With one + 25 exception the same algorithm may also be used for Immediate + 26 commands, although a simpler one (using the fact that all + 27 Immediate commands complete within the controller timeout + 28 interval) is also appropriate. The one exception is the GET + 29 COMMAND STATUS command used by the timeout algorithm itself. + 30 This command shall be timed out as follows. If the class + 31 driver's credit balance is zero when it attempts to issue the GET + 32 COMMAND STATUS command, it shall queue the GET COMMAND STATUS + 33 command for immediate transmission (before any other commands + 34 that may be outstanding) when its credit balance becomes nonzero. + 35 If the controller timeout interval expires again before the GET + 36 COMMAND STATUS command has both been transmitted and completed, + 37 then the class driver should assume that the controller has + 38 failed. Note that the class driver's credit balance is + 39 guaranteed to be nonzero when all outstanding Immediate commands + 40 have completed. Note also that controllers or MSCP servers + 41 guarantee that all outstanding Immediate commands plus one + 42 additional GET COMMAND STATUS command will complete within the + 43 controller timeout interval. + + 44 Upon concluding that a controller has failed, the class driver + 45 shall resynchronize with the controller's MSCP server and reissue + 46 all commands (except commands that it has tried to abort) that + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-30 + Command Timeouts 11 June 1992 + + + 1 were outstanding to that MSCP server in the same order that they + 2 were originally issued. In particular, the oldest outstanding + 3 command (the one that timed out) shall be issued first (after + 4 initial SET CONTROLLER CHARACTERISTICS and ONLINE commands). The + 5 only exception to this is if the command's retry count expires. + 6 The class driver should maintain a retry count of the number of + 7 times the oldest command has timed out and been retried. If the + 8 retry count exceeds a host dependent retry limit, the class + 9 driver should return an error rather than retrying the command + 10 again. The size of the retry limit is determined by host policy, + 11 except that all commands shall be retried at least once. Note + 12 that subcode zero of the "Controller Error" status code has been + 13 reserved for commands that exceed their retry count. This + 14 subcode shall never be generated by MSCP servers; it is generated + 15 by class drivers or non-MSCP entities (e.g., a controller's port + 16 driver) as a standard means of reporting command timeout errors. + + 17 In order to implement command timeouts, the host class driver + 18 shall first obtain the controller timeout interval via the SET + 19 CONTROLLER CHARACTERISTICS command. Therefore the class driver + 20 should issue a SET CONTROLLER CHARACTERISTICS command as the + 21 first command after becoming "Controller-Online." The class + 22 driver should use a controller timeout interval of 10 seconds for + 23 this initial command. The class driver shall never use a time + 24 interval that is shorter than the controller specified controller + 25 timeout interval for its command timeout determination, although + 26 the class driver may use a time interval that is longer than the + 27 one specified by the controller. The controller timeout interval + 28 specified by the controller shall not be larger than 4 minutes + 29 and 15 seconds (255 seconds). + + 30 One characteristic of this command timeout algorithm that MSCP + 31 servers need not implement, and indeed most will not implement, + 32 is the GET COMMAND STATUS command for any command that the MSCP + 33 server can guarantee will complete within the controller timeout + 34 interval. The GET COMMAND STATUS command should always return + 35 the value zero as the "command status" of such a command. It is + 36 acceptable if, due to vagaries of controller optimization + 37 algorithms, such a command will occasionally timeout. This is + 38 acceptable, so long as the frequency of such timeouts is + 39 extremely small and the controller immediately begins processing + 40 the first command it receives after resynchronization. Since the + 41 class driver reissues commands in the same order that they were + 42 originally issued, the oldest or timed out command is reissued + 43 first, effectively guaranteeing that it will not be delayed again + 44 by the controller's optimization algorithms. (The simplest way + 45 for most controllers to implement this is to treat the first + 46 Non-Sequential command received across a newly established + 47 connection as if the Express Request modifier were set. See + 48 Section 5.3.2, "Command Modifiers" for a description of the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-31 + Command Timeouts 11 June 1992 + + + 1 affects of that modifier.) + + 2 4.11 Host Buffer Access + + + 3 The block data communications service (see Section 3.1, + 4 "Connection") transfers the contents of one named buffer to + 5 another. Hosts describe buffers (name and size) with a buffer + 6 descriptor and byte count in the command message of a transfer + 7 command. + + 8 In a read operation, the host provides a buffer to receive the + 9 data. To the host, that buffer (the portion of host memory + 10 described by the buffer descriptor and specified byte count) is + 11 exactly equivalent to an undefined field in an MSCP control + 12 message from the time that the class driver issues the READ + 13 command to its port driver to the time that it receives the end + 14 message for that READ command from its port driver. That is, the + 15 contents are controller implementation dependent and cannot be + 16 used in any meaningful way by the class driver. The class driver + 17 shall ignore the contents of the buffer and may not alter the + 18 contents in any way. The server may alter the contents of that + 19 memory in any way it chooses during that time. + + 20 Note that this holds true regardless of any sequencing rules + 21 imposed by command categories on execution order. For example, + 22 the host queues an ONLINE command followed by a READ command. + 23 The contents of the READ buffer are undefined from the moment the + 24 READ command is queued, despite the ONLINE command being a + 25 Sequential command. The contents of the buffer remain undefined + 26 until the end message for the READ command is received by the + 27 class driver, even before receipt of the ONLINE end message and + 28 regardless of the success or failure of the ONLINE command. + + 29 Note also that once the end message has been received by the + 30 class driver, only that portion of the buffer described by the + 31 "byte count" in the end message is defined as containing data + 32 from the unit. The contents of the remainder of the buffer are + 33 undefined. + + 34 In a write type operation, the host loads the data to be written + 35 into a buffer in host memory. The server shall not access that + 36 buffer before the server receives the command message or after + 37 the server queues the end message for transmission to the host. + + 38 4.12 Disk Geometry And Format + + 39 The host accessible portion of a disk unit consists of a vector + 40 of fixed length blocks, called logical blocks. Logical blocks + 41 are identified by logical block numbers (LBNs) which range from + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-32 + Disk Geometry And Format 11 June 1992 + + + 1 zero through N-1, where "N" is the total number of logical blocks + 2 on the unit. The logical blocks on a unit are divided into two + 3 mutually exclusive regions: + + 4 1. The host area consists of those logical blocks available + 5 for host data storage. Logical blocks in the host area + 6 have LBNs in the range zero through US-1, where "US" is + 7 the "unit size," or number of logical blocks in the host + 8 area. The host obtains "US" or the "unit size" from the + 9 ONLINE or SET UNIT CHARACTERISTICS command end messages. + + 10 2. The unit's Replacement Control Table (RCT), used to + 11 record bad block replacement information. This + 12 information is further described below. The RCT + 13 (actually, multiple copies of the RCT) occupies the + 14 logical blocks numbered US through N-1. + + 15 The presence of the RCT is optional; see the description below. + + 16 All of the logical blocks in the host area are guaranteed to be + 17 "good" -- that is, to be free of permanent or hard errors (media + 18 defects). Most controllers implement this via bad block + 19 replacement. A pool of replacement blocks, identified by + 20 replacement block numbers (RBNs), is provided on the disk. + 21 Replacement blocks are not directly accessible to hosts. All + 22 host area logical blocks that are bad (i.e., that contain media + 23 defects leading to hard errors or large numbers of correctable + 24 errors) are replaced by a replacement block. The mechanism used + 25 to perform this replacement, and to revector accesses to bad + 26 logical blocks to the proper replacement blocks, is described in + 27 the Digital Storage Architecture Disk Format Specification (DSDF) + 28 and/or the controller's functional specification. The pool of + 29 replacement blocks is typically distributed throughout the disk, + 30 so that revectoring of logical block accesses to replacement + 31 blocks has negligible impact on performance. See Section 4.13, + 32 "Bad Block Replacement," and DSDF for more information on bad + 33 block replacement. + + 34 4.12.1 Replacement Control Table (RCT) Overview + + 35 The logical blocks that contain the RCT are not guaranteed to be + 36 "good." Since the RCT describes the bad logical block to + 37 replacement block mapping, mapping bad RCT blocks to replacement + 38 blocks would present an insoluble recursion problem. Instead of + 39 using replacement blocks for bad RCT blocks, the RCT region + 40 actually contains multiple copies of the RCT. Hosts obtain the + 41 size of each RCT copy and the number of RCT copies via the GET + 42 UNIT STATUS command. The last copy of the RCT may be truncated. + 43 See the Digital Storage Architecture Disk Format Specification + 44 (DSDF). Note that the disk is unusable if the corresponding + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-33 + Disk Geometry And Format 11 June 1992 + + + 1 block is bad in every copy of the RCT. + + 2 The detailed format and access algorithms for the RCT are + 3 described in DSDF. In general, however, each copy of the RCT + 4 contains the following information: + + 5 1. One entry per replacement block, identifying the logical + 6 block, if any, that has been replaced by the replacement + 7 block. + + 8 2. Context information identifying the bad block + 9 replacement operation, if any, that is currently in + 10 progress on this unit. This information is used to + 11 complete the bad block replacement operation if the host + 12 and/or controller should crash in the middle of bad + 13 block replacement. + + + 14 Alternatively, a controller may use a nonstandard replacement + 15 scheme or some scheme other than bad block replacement to + 16 guarantee that the logical blocks in the host area are "good." + 17 The mechanisms used by such a controller to guarantee that the + 18 host area logical blocks are "good" shall be totally invisible to + 19 hosts, and shall not require host cooperation for their + 20 initialization, use, or maintenance. Such a controller or unit + 21 will not provide a host accessible RCT. + + 22 4.12.2 Logical Block Contents + + 23 The host visible portion of each logical block consists of a + 24 fixed number of data bytes. The number of data bytes is either + 25 512 or 576, determined when the disk volume is formatted. All + 26 logical blocks on a disk volume have the same number of data + 27 bytes. + + 28 The data bytes are the only portion of logical blocks that are + 29 directly host visible. Certain other items, however, must be in + 30 each logical block as their presence is implied by various MSCP + 31 functions: + + 32 1. Each block shall contain a forced error indicator, so as + 33 to properly implement and recognize the "Force Error" + 34 command modifier. + + 35 2. Each block shall contain a bad block indicator, so that + 36 references to bad blocks can be efficiently revectored + 37 to the proper replacement blocks. This is unnecessary + 38 if the controller does not use bad block replacement to + 39 provide a "perfect" host area. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-34 + Disk Geometry And Format 11 June 1992 + + + 1 Note that the forced error indicator is fully distinct from the + 2 512 or 576 bytes of data in each block. Blocks written with the + 3 "Force Error" command modifier shall, when read back, return both + 4 correct data and the presence of a forced error. Blocks written + 5 with forced errors shall have similar error rate characteristics + 6 as blocks written normally, without forced errors. A forced + 7 error indicates that the host or controller process writing the + 8 block did not have fully valid data to write into that block. + 9 The disk subsystem (controller and unit) shall, however, preserve + 10 the data so as to avoid further data corruption. + + 11 4.12.3 Performance Implications + + 12 As stated above, the host area of a disk is structured as a + 13 vector of logical blocks. From a performance viewpoint, however, + 14 it is more appropriate to view the host area as a four + 15 dimensional hyper-cube. The four dimensions are cylinder, group, + 16 track, and sector. Thus, it is possible to decompose a logical + 17 block number into a unique quadruple of numbers; namely the + 18 block's cylinder number, group number, track number, and sector + 19 number. Cylinder number is most significant and sector number is + 20 least significant. + + 21 Alternatively, we can define a track as consisting of a fixed + 22 number of blocks, a group as consisting of a fixed number of + 23 tracks, and a cylinder as consisting of a fixed number of groups. + 24 The position of a block within a track is the block's sector. + + 25 "Spindles" are physical entities across which both seek and + 26 rotational latencies are unpredictable. A unit consists of one + 27 or more spindles or spindle "groups." + + 28 The terms sector, track, cylinder, and spindle all come from the + 29 geometry of classical disk drives. Groups can be viewed as an + 30 optimization for short seeks whose seek time is easily + 31 predictable. + + 32 At any particular instant, the set of logical blocks that are + 33 instantaneously accessible is those blocks in all tracks that are + 34 in a particular sector, group, and cylinder. In the absence of + 35 transfers to a different group or cylinder, this set of + 36 instantaneously accessible blocks changes over time by keeping + 37 the group and cylinder constant while incrementing the sector + 38 modulo the number of blocks/sectors in a track. Referring to our + 39 hyper-cube analogy, the set of instantaneously accessible blocks + 40 form a line parallel to the track axis. This line moves parallel + 41 to the sector axis, wrapping around when it reaches the edge of + 42 the hyper-cube. A disk therefore provides cyclic access to the + 43 blocks in a particular group and cylinder. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-35 + Disk Geometry And Format 11 June 1992 + + + 1 This access structure to logical blocks implies that, to a close + 2 approximation, the track to which a block belongs has no effect + 3 upon performance. That is, switching tracks within the same + 4 group and cylinder effectively requires zero time. Two separate + 5 transfers in the same group and cylinder have similar + 6 performance, regardless of what tracks they are on. To a first + 7 order approximation, two separate transfers on successive sectors + 8 of different tracks in the same group and cylinder have the same + 9 performance as a single, two sector (block) transfer. + + 10 Changing cylinders, however, does require a certain amount of + 11 time. The amount of time required to switch between two + 12 cylinders is approximated by a monotonically increasing function + 13 of the difference between the two cylinder numbers. The time to + 14 switch between cylinders is typically not affected by whether or + 15 not groups are also being changed. After switching cylinders, + 16 the sector position of the disk (i.e., which sector's blocks are + 17 instantaneously accessible) is unpredictable. + + 18 Changing groups also requires a certain amount of time. + 19 Generally, the time to switch between groups in the same cylinder + 20 is no more than, and often less than, the time to switch between + 21 one cylinder and the next. If cylinders and groups are both + 22 changed at the same time, the time to switch groups is + 23 effectively zero, as it is included in the time to switch + 24 cylinders. + + 25 When changing from one group to the next (successive) group + 26 within the same cylinder, the time required to switch groups is + 27 predictable. Therefore the sector position following completion + 28 of the group switch is also predictable, and transfers can be + 29 optimized across group boundaries. If a transfer to sector S in + 30 group G is followed by a transfer in group G+1 of the same + 31 cylinder, then sector S+1 (modulo the number of sectors/blocks in + 32 a track) is the optimal sector for the new transfer and sector S + 33 is the least desirable. The main effect of this is to optimize + 34 continuous (spiral) transfers that cross group boundaries. + + 35 Note that what has been described herein is the model for disk + 36 logical geometry, which may have a tenuous relationship to a + 37 disk's actual physical geometry. Disk designers should devise a + 38 logical to physical geometry mapping which optimizes the accuracy + 39 of the model herein described. This will generally be done as + 40 follows. Head or track switches that effectively require zero + 41 time (i.e., that require less than the intersector time) will be + 42 reported as logical MSCP tracks. Head or track switches that + 43 require significant amounts of time will be divided into two + 44 classes: those that require only a little time (typically less + 45 than one rotation) and whose time is predictable, and those that + 46 require somewhat more time and/or a lot of time. The switches + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-36 + Disk Geometry And Format 11 June 1992 + + + 1 that require only a little time will be reported as logical MSCP + 2 groups. The switches that require more time will be reported as + 3 logical MSCP cylinders, where the switches should be mapped to + 4 cylinders in such a manner as to minimize the amount of time + 5 required to switch between cylinders that are numerically close + 6 together. + + 7 The effect of this geometry on multiblock transfers is as + 8 follows. A multiblock transfer requires a certain minimum time, + 9 which is the time to transfer one block or sector times the + 10 number of blocks in the transfer. Crossing track boundaries + 11 requires no additional time. Crossing a group boundary requires + 12 a small, relatively fixed additional amount of time. This time + 13 is typically less than the time to transfer an entire track + 14 (i.e., less than one rotation). Crossing a cylinder boundary + 15 requires a somewhat larger additional amount of time. This time + 16 is typically at least the time to transfer an entire track (i.e., + 17 at least one rotation). + + 18 The effect of this geometry on host allocation policies for + 19 random-access files is as follows. Whenever possible, a + 20 random-access file should be allocated within a single group. If + 21 this is not possible, the host should try to allocate it within a + 22 single cylinder. If this is also not possible, the host should + 23 allocate it in the minimum number of adjacent cylinders. + + 24 When a block has a high probability of being accessed immediately + 25 after another block, hosts should attempt to allocate both blocks + 26 in the same group or, if that is not possible, in the same + 27 cylinder. If both blocks cannot be allocated within the same + 28 cylinder, then they should be in cylinders that are as close + 29 together as possible. + + 30 Hosts obtain the size of a unit's tracks, groups, and cylinders + 31 from the GET UNIT STATUS command's end message. Some of these + 32 disk geometry concepts may not apply to all disk units. Units + 33 report the fact that a concept doesn't apply by specifying its + 34 size to be the same as the next larger concept. For example, a + 35 disk unit that doesn't have groups would specify one group per + 36 cylinder, implying that groups and cylinders are the same size. + 37 Note that the value of zero is reserved and illegal for track + 38 size, group size, and cylinder size. + + 39 Track size, in addition to being useful for performance + 40 prediction, is also used in the bad block replacement algorithm + 41 specified in the Digital Storage Architecture Disk Format + 42 Specification (DSDF). It is possible that the track size + 43 appropriate for performance considerations will be different from + 44 the track size required by bad block replacement. If this + 45 occurs, the track size required by bad block replacement shall be + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-37 + Disk Geometry And Format 11 June 1992 + + + 1 specified, as the performance effects are a secondary + 2 consideration. + + 3 Note that all of this performance oriented disk geometry only + 4 applies to the host area of a disk unit. The concepts need not + 5 apply to the Replacement Control Table (RCT) and any other areas + 6 of a disk, as access to those areas is not performance sensitive + 7 and/or not host visible. + + 8 4.13 Bad Block Replacement + + 9 Bad block replacement is a technique used with disk class devices + 10 to present each unit as a single logically contiguous set of + 11 usable blocks. + + 12 A unit may operate in one of two modes: Controller Initiated Bad + 13 Block Replacement or Host Initiated Bad Block Replacement. A + 14 unit's mode is determined by whether or not the controller + 15 requires host assistance in performing dynamic bad block + 16 replacement for that unit. Controllers report this to hosts via + 17 the "Controller Initiated Bad Block Replacement" unit flag (see + 18 Section 5.7, "Unit Flags" for more detail). + + 19 For a complete description of Controller Initiated Bad Block + 20 Replacement, see Chapter 8, "Controller Initiated Bad Block + 21 Replacement." + + 22 For a complete description of Host Initiated Bad Block + 23 Replacement, see the Digital Storage Architecture Disk Format + 24 (DSDF) specification section on "Host Initiated Bad Block + 25 Replacement." + + 26 4.14 Write Protection + + 27 There are three kinds of write protection that can apply to an + 28 MSCP device: Hardware Write Protection, Software Write + 29 Protection, and Data Safety Write Protection. Each kind of write + 30 protection is controlled from a separate source as follows: + + 31 Hardware Write Protection + + 32 Hardware Write Protection is controlled by the user + 33 or operator manipulating the unit's write protect + 34 mechanism. The status of Hardware Write Protection + 35 may change at unpredictable times in response to + 36 human intervention. + + 37 When Hardware Write Protection is established (i.e., + 38 when a user activates the unit's write protect + 39 mechanism), the controller shall provide a smooth + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-38 + Write Protection 11 June 1992 + + + 1 transition to the write protect state. That is, the + 2 controller shall complete all write operations + 3 (commands) that it has already initiated on the unit + 4 before actually prohibiting writes. Note, however, + 5 that the controller should immediately reject any + 6 new write operations that it receives after the user + 7 activates the unit's write protect mechanism. Write + 8 operations that the controller received before the + 9 write protect mechanism was activated, but that + 10 haven't been initiated yet, may either be rejected + 11 or completed at the controller's option. The end + 12 result of this is that each individual write command + 13 or operation is either completed in its entirety or + 14 else rejected before any of its data is written to + 15 the unit. Note that it is not possible for either + 16 the controller or the host to perform bad block + 17 replacement when a unit is Hardware Write Protected, + 18 since it requires writing to the unit's Replacement + 19 Control Table. + + 20 Software Write Protection + + 21 Software Write Protection is controlled by the host + 22 or hosts. Host(s) set or change the status of + 23 Software Write Protection via the ONLINE or SET UNIT + 24 CHARACTERISTICS commands ("Enable Set Write Protect" + 25 modifier and "Software Write Protect" unit flag). + 26 In general, the detailed causes of Software Write + 27 Protection are matters of host policy. However, + 28 Host Initiated Bad Block Replacement, as described + 29 in the Digital Storage Architecture Disk Format + 30 Specification (DSDF), requires that hosts use + 31 Software Write Protection to emulate certain causes + 32 of Data Safety Write Protection. + + 33 Unlike the transition to Hardware Write Protect the + 34 transition to Software Write Protect is a naturally + 35 smooth process since it is established by Sequential + 36 commands (i.e., ONLINE and SET UNIT + 37 CHARACTERISTICS), which implies that all write + 38 operations will have been completed prior to + 39 Software Write Protection being established. + + 40 Data Safety Write Protection + + 41 Data Safety Write Protection is controlled by the + 42 MSCP server. It is set whenever some condition in + 43 the unit or volume prevents reliable modification of + 44 data on the volume. Possible causes include: + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-39 + Write Protection 11 June 1992 + + + 1 o An incomplete bad block replacement. + + 2 o An invalid RCT. + + 3 o The unit is only capable of reading the + 4 volume's format (e.g., a single-density + 5 volume in a double-density drive). + + 6 Note that there can be multiple causes for a + 7 unit being Data Safety Write Protected. + 8 Furthermore, some causes represent errors while + 9 others represent normal occurrences. + + 10 Each individual cause can only be established + 11 when a unit is brought "Unit-Online." Causes + 12 can be eliminated -- possibly allowing the unit + 13 to cease being Data Safety Write Protected -- + 14 while the unit remains "Unit-Online." However, + 15 the server can only establish a new cause for + 16 the unit to be Data Safety Write Protected by + 17 forcing the unit to be "Unit-Available" to all + 18 class drivers. Thus class drivers are + 19 guaranteed that a unit will not spontaneously + 20 become Data Safety Write Protected while the + 21 unit is "Unit-Online." + + + 22 A unit's Write Protect Status Display Mechanism shall indicate + 23 the "inclusive or" of all forms of write protection. That is, + 24 the display shall indicate that the unit is write protected when + 25 it is Hardware or Software or Data Safety Write Protected. + + 26 4.15 Compare Operations + + 27 MSCP includes the following kinds of compare operations: + + 28 1. The COMPARE HOST DATA command. + + 29 2. Read-compare operations, invoked by the "Compare Reads" + 30 unit flag or by the "compare" modifier on a READ + 31 command. + + 32 3. Write-compare operations, invoked by the "Compare + 33 Writes" unit flag or by the "compare" modifier on a + 34 WRITE command. + + 35 The operation of these different types of compare operations is + 36 described below. Note that all of the compare operations report + 37 the first difference or other error starting from the beginning + 38 of the transfer. Therefore the compare operation at the end of + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-40 + Compare Operations 11 June 1992 + + + 1 the transfer may be aborted if a difference is discovered at the + 2 beginning. + + 3 The COMPARE HOST DATA command is used to verify that data in host + 4 memory matches data on a unit. The data is obtained from the + 5 unit in the manner that is most convenient or efficient for the + 6 controller. In this respect the COMPARE HOST DATA command + 7 operates identically to a READ command. Unlike the READ command, + 8 the data is not transferred to host memory. Instead, data is + 9 obtained from host memory and compared against the data obtained + 10 from the unit. Upon completion of the command the controller + 11 reports whether the data was identical or different. The data + 12 being different is reported as a "Compare Error" in the command's + 13 end message. No error log message is generated as this is not + 14 considered to be a "significant" error (since it can be + 15 deliberately caused by user programs). The controller may + 16 attempt retries or not at its option. As the retries will always + 17 fail (assuming the host is not modifying the buffer while the + 18 transfer is in progress), retries will have a deleterious effect + 19 on performance but will in no way effect the final outcome of the + 20 operation. + + 21 Read-compare and write-compare operations are performed at the + 22 conclusion of the appropriate transfer commands to verify that + 23 the data was correctly transferred and that the data can now be + 24 obtained from its destination. The general algorithm used is to + 25 obtain the data from its destination and compare it against the + 26 data reobtained from its source. + + 27 In particular, during a read-compare operation the controller + 28 reobtains the data from the unit and compares it against the data + 29 obtained from host memory. Conversely, for the write-compare + 30 operation the controller obtains the data from the unit and + 31 compares it against the data reobtained from host memory. + + 32 An additional requirement for performing read-compare and + 33 write-compare operations is that the controller should, to the + 34 maximum extent allowed by its architecture, operate all data + 35 transfer paths in the opposite direction from that of the + 36 original transfer, in order to maximize the probability of + 37 detecting a transfer error. + + 38 Ideally, to operate all transfer paths in the opposite direction, + 39 during a read-compare operation, the controller would obtain the + 40 data from the host and send it to the drive, and the drive would + 41 actually compare the data against the original. Conversely, + 42 during a write-compare operation, the data would be sent to the + 43 host port, which would actually perform the comparison. However, + 44 neither implementation is currently feasible since no drive nor + 45 communications mechanism provides such comparison capabilities. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-41 + Compare Operations 11 June 1992 + + + 1 So for now controllers must perform the actual compare functions. + + 2 If a read-compare or write-compare operation fails, the + 3 controller shall interpret this as implying that the original + 4 transfer failed and retry the original transfer if appropriate. + 5 If the controller successfully obtains the data from its source + 6 and destination, but the data is different, then the controller + 7 shall retry the original transfer and report the compare error in + 8 an error log message. If the controller cannot successfully + 9 obtain the data from its destination, but the error is one that + 10 may be eliminated by rewriting the data to the destination, then + 11 the controller shall also retry the original transfer and report + 12 the error (from the attempt to obtain the data from its + 13 destination) in an error log message. All other errors need not + 14 be retried, but shall be reported in an error log message. The + 15 only exception to the above is commands that have the "Suppress + 16 Error Recovery" modifier set. The controller may or may not, at + 17 the controller's option, retry the original transfer if a compare + 18 error occurs in such a command. + + 19 For example, "Data Errors," such as an uncorrectable ECC error, + 20 shall be retried on write-compare operations. They need not be + 21 retried on read-compare operations, since an unrecoverable "Data + 22 Error" implies that the READ itself will fail. "Compare Errors" + 23 shall always be retried. Note that the controller need not + 24 discriminate among types of errors -- it may always retry all + 25 errors during read-compare or write-compare operations, + 26 regardless of whether or not the error will inhibit the original + 27 transfer. + + 28 The number of retries required for read-compare and write-compare + 29 operations is controller dependent. However, all controllers + 30 shall retry such operations at least once. The exact number of + 31 retries that a controller implements should be chosen based on + 32 undetected error rate characteristics. The controller may either + 33 retry the entire transfer, or else only retry the portion that + 34 includes the error. + + 35 4.16 Special Drive Topologies + + 36 4.16.1 Multiaccess Drives + + 37 A multiaccess drive is a drive that may be physically connected + 38 to more than one controller simultaneously via separate physical + 39 paths (ports). The primary purpose of the multiaccess drive + 40 capability is to enhance the availability of data by providing + 41 alternate access paths to the data, thereby safeguarding against + 42 individual host, controller, or communications mechanism failure. + 43 High availability systems typically utilize multiaccess drives + 44 and the replication of some or all of the other major system + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-42 + Special Drive Topologies 11 June 1992 + + + 1 components in order to recover from such failures without human + 2 intervention. + + 3 Although a multiaccess drive may be physically connected to more + 4 than one controller, only one controller at any one time may + 5 establish the logical connection (i.e., bring it online) + 6 necessary for any unit of the drive to become "Unit-Online" or + 7 under the "Exclusive Access" of a host via that controller (see + 8 Section 4.3, "Unit States"). Note that the detailed definition + 9 of the logical connection between a controller and a drive is + 10 device dependent, and therefore not the concern of this + 11 specification. + + 12 Once the logical connection between a multiaccess drive and a + 13 controller is established, the unit of a drive or the units of a + 14 multiunit drive or formatter (see Section 4.16.2, "Multiunit + 15 Drives and Formatters") can only be accessed via that same + 16 controller and MSCP server. The unit or units therefore become + 17 inaccessible (i.e., "Unit-Offline") via all other controllers to + 18 which the multiaccess drive is physically connected. + + 19 A controller may only retain the logical connection with a drive + 20 as long as one or more units of that drive are "Unit-Online" or + 21 under "Exclusive Access" via that controller. That is, a + 22 controller shall release its logical connection with a drive as + 23 soon as all units of the drive cease to be "Unit-Online" to any + 24 host or under the "Exclusive Access" of a particular host. Host + 25 class drivers may therefore switch access paths to a multiaccess + 26 drive from one controller to another under program control by + 27 making all units of the drive "Unit-Available" through the + 28 controller to which the drive is currently logically connected, + 29 then bringing one of the units "Unit-Online" or under "Exclusive + 30 Access" via the other controller. + + 31 A controller shall also release the logical connections to all + 32 units of a multiaccess drive whenever the host access timeout + 33 (specified via the SET CONTROLLER CHARACTERISTICS command) + 34 expires, in order to permit access to the drive via another + 35 access path. See Section 4.9, "Host Access Timeouts" for + 36 complete details. + + 37 The logical connection between a controller and a multiaccess + 38 drive must exist in order for any unit of the drive to be + 39 "Unit-Online" or under "Exclusive Access" with respect to any + 40 host. However, certain status information must be available to + 41 all controllers without the existence of a logical connection. + 42 The specific cases are: + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-43 + Special Drive Topologies 11 June 1992 + + + 1 1. When no units of the drive are "Unit-Online" to or under + 2 the "Exclusive Access" of any class driver (that is, + 3 when they are all "Unit-Available" or "Unit-Offline"), + 4 the multiaccess drive shall report its existence, unit + 5 number(s), and certain characteristics to all + 6 controllers to which it is attached. The actual + 7 mechanism by which this information is reported is + 8 device dependent, and therefore may use such schemes as + 9 time-multiplexing or polling of a single communication + 10 path. However, controllers shall present the conceptual + 11 view to hosts that this information is reported + 12 continuously and simultaneously to all controllers. The + 13 drive characteristics that shall be reported are those + 14 returned in the AVAILABLE attention message and in the + 15 GET UNIT STATUS and SET UNIT CHARACTERISTICS command end + 16 messages for the current state of the drive's units + 17 ("Unit-Available" or "Unit-Offline"). + + 18 2. When a drive is logically connected to some controller, + 19 and that controller receives a DETERMINE ACCESS PATHS + 20 command for one of the units that is "Unit-Online," the + 21 drive shall report its existence, unit number, and + 22 certain characteristics to all other controllers to + 23 which it is attached. The characteristics that it shall + 24 report are those returned in the ACCESS PATH attention + 25 message. As detailed in Section 6.6.3, "DETERMINE + 26 ACCESS PATHS Command, Description" successful + 27 communication of the ACCESS PATH attention message may + 28 be probabilistic rather than guaranteed. Note that the + 29 drive need only make this report when instructed to do + 30 so by the controller. + + 31 Note that those two cases are only of concern with multiaccess + 32 drives, as a single access drive cannot have the problem of + 33 trying to communicate with two or more controllers at once. + 34 Also, if a multiaccess drive is logically connected to a + 35 controller, and that controller never receives a DETERMINE ACCESS + 36 PATHS command for a "Unit-Online" unit of that drive, then that + 37 drive need not communicate in any way with any other controller. + 38 The drive need not even report its existence until the logical + 39 connection is broken (i.e., it ceases to be "Unit-Online" or + 40 under "Exclusive Access") or the controller receives a DETERMINE + 41 ACCESS PATHS command. + + 42 4.16.2 Multiunit Drives And Formatters + + 43 A multiunit drive is a single physical disk drive that appears as + 44 several independent units to hosts. So-called fixed plus + 45 removable disk drives, providing one removable disk unit and one + 46 nonremovable disk unit, are the most common example of multiunit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-44 + Special Drive Topologies 11 June 1992 + + + 1 drives. A multiunit formatter is a single set of interface or + 2 read/write electronics that connects several otherwise + 3 independent units to controllers. Multiunit formatters are most + 4 commonly used with tape drives, although there is nothing that + 5 prevents their use with disk drives as well. + + 6 All the units of a multiunit drive or formatter share a single + 7 access path to controllers. This implies that all of the units + 8 must be "connected" to the same controller. In particular, if + 9 one unit of a multiunit drive or formatter is "Unit-Online" or + 10 under "Exclusive Access" via a controller, then all the other + 11 units of the multiunit drive or formatter may only be accessed by + 12 that same controller. That is, the other units are + 13 "Unit-Offline" to all other controllers. Awareness of this + 14 characteristic is critical for high availability systems -- if a + 15 failed operation on a multiaccess unit is to be retried via + 16 another controller, and the unit is part of a multiunit drive or + 17 formatter, then all units of the drive or formatter must be + 18 switched to the other controller. + + 19 Some units of a multiunit disk drive may share mechanical + 20 components as well as interface electronics. Such units are said + 21 to share a spindle. That is, the units must either be all + 22 spinning or all not spinning, just as if the units shared a drive + 23 motor or spindle (which they typically will). Such units must + 24 also share a single Run/Stop switch, since they are always + 25 spun-up and spun-down together. Hosts must also be aware of + 26 units which share a spindle, as dismounting one such unit + 27 requires that all units sharing the same spindle be spun-down. + + 28 The units of a multiunit drive or formatter are identified by the + 29 "multiunit code" unit characteristic field. Hosts obtain this + 30 two byte field via the AVAILABLE attention message or in the end + 31 message of a GET UNIT STATUS, ONLINE, or SET UNIT CHARACTERISTICS + 32 command. The low byte of this field contains a controller + 33 dependent encoding of the access path between the controller and + 34 the drive. The high byte of this field contains a controller + 35 dependent encoding of the spindle, on a particular access path, + 36 that the unit uses. Controllers may use any encoding whatsoever, + 37 provided that each access path and each spindle (within an access + 38 path) has a unique value. Note that the access path byte is + 39 implicitly qualified by the controller's or MSCP server's + 40 identity, and that the spindle byte is implicitly qualified by + 41 the access path. + + 42 Hosts use the "multiunit code" field as follows. When a host + 43 decides to spin-down a unit, it scans all other units that are + 44 "Unit-Online" via the same MSCP server for those units whose + 45 entire "multiunit code" field (both bytes) matches the unit being + 46 spun-down. Such units, if any, share a spindle or other + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-45 + Special Drive Topologies 11 June 1992 + + + 1 mechanical components with the unit being spun-down, so that they + 2 must be spun-down together. When a host decides to access a unit + 3 via a different controller, it scans all other units that are + 4 "Unit-Online" via the same MSCP server for those units whose low + 5 byte of the "multiunit code" field matches the unit being + 6 switched. Such units, if any, share an access path with the unit + 7 being switched, so that they must also be switched to the new + 8 controller. + + 9 Note that the low byte of the "multiunit code" field (the access + 10 path) is meaningless for units that are inherently restricted to + 11 a single controller. Controllers may return any fixed value as + 12 the access path encoding for such units, provided that it doesn't + 13 duplicate the value returned for any units on the same controller + 14 that are not inherently restricted to a single controller. + + 15 This use and format of the "multiunit code" field implies the + 16 following architectural restrictions on all controllers: + + 17 1. All units that share a spindle or other mechanical + 18 components shall also share an access path. Note that + 19 this is an essential restriction for multiunit drives, + 20 regardless of how shared components are communicated. + 21 If units that share a spindle did not share an access + 22 path, then they could be simultaneously "Unit-Online" + 23 via different controllers, making it impossible to + 24 coordinate a simultaneous spin-down. + + 25 2. There is a maximum of 256 access paths per controller. + 26 In the absence of multiunit drives or formatters, this + 27 implies a maximum of 256 units per controller. + + 28 3. There is a maximum of 256 spindles per access path. In + 29 the absence of shared spindles, this implies a maximum + 30 of 256 units per access path or formatter. + + + 31 4.17 Controller And Unit Identifiers + + 32 MSCP requires that all controllers and drives have unique + 33 identifiers, called controller identifiers and unit identifiers. + 34 The structure of these identifiers is as follows: + + 35 31 0 + 36 +-------------------------------+ + 37 | unique device number | + 38 +-------+-------+ + + 39 | class | model | | + 40 +-------+-------+---------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-46 + Controller And Unit Identifiers 11 June 1992 + + + 1 The fields in a controller or unit identifier are as follows: + + 2 unique device number + + 3 Uniquely identifies the device among all devices of that + 4 same class and model. The device serial number could be + 5 used as the "unique device number," though that isn't + 6 required. + + 7 model + + 8 Identifies the exact model of the subsystem within its + 9 class. All valid class and model codes are nonzero, + 10 implying that all valid identifiers are nonzero. Table + 11 C-2, "Mass Storage Controller 'Model' Values"contains the + 12 "model" values for both disk and tape controllers. + 13 Tables C-3, "Disk Drive/Media Identifier Values" and C-4, + 14 "Tape Drive/Media Identifier Values" contain the "model" + 15 values for disk and tape drives, respectively. + + 16 class + + 17 Identifies the type of the subsystem -- controller, disk + 18 drive, etc. Table C-1, "Controller and Unit 'Class' + 19 Values" contains the "class" values for both controllers + 20 and drives. + + + 21 The Storage Systems Architecture Group is responsible for + 22 assigning new values. Requests for additions to the tables + 23 should be addressed to SSAG::SSAG. Note that different units of + 24 multiunit drives are distinguished by having different "model" + 25 bytes; the "class" and "unique device number" fields are + 26 typically identical. Note also that all MSCP servers for the + 27 same device class within the same controller shall return the + 28 same controller identifier. + + 29 As previously stated, MSCP requires that controller and unit + 30 identifiers be unique across all devices accessible via MSCP. + 31 This clearly cannot be checked by controllers. Controllers can, + 32 however, enforce unique unit identifiers across the units that + 33 are attached to themselves. This is done using the following + 34 algorithms: + + 35 1. Controllers should detect and respond to duplicate unit + 36 identifiers across all units whose unit identifiers the + 37 controller can obtain, including all units that would + 38 otherwise be "Unit-Online" or "Unit-Available." + 39 Detection of a duplicate unit identifier on one unit of + 40 a multiunit drive is treated as a duplicate unit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-47 + Controller And Unit Identifiers 11 June 1992 + + + 1 identifier condition on all other units that share one + 2 or more of the following components with the unit having + 3 the duplicate unit identifier: + + 4 a. A unit number select mechanism. + + 5 b. A Run/Stop or Load/Unload switch. + + 6 c. A spindle or other mechanical components. + + 7 Note that duplicate unit identifiers are detected + 8 regardless of the state of a unit's Run/Stop or + 9 Load/Unload switch. + + 10 2. Whenever a controller becomes aware of a duplicate unit + 11 identifier, it immediately spins-down all units with the + 12 duplicate identifier and forces them to remain + 13 spun-down. The controller spins-down the units + 14 regardless of their current state. The controller + 15 typically forces them to remain spun-down by spinning + 16 them down again whenever an operator spins them up. + + 17 3. The controller reports "Unit-Offline (subcode + 18 'Inoperative')" status for all units with duplicate unit + 19 identifiers. In addition, if the unit might potentially + 20 be connected to another controller, the controller + 21 should flag the presence of the duplicate unit + 22 identifier in the drive. Other controllers, if any, + 23 should check this flag and also treat the unit as + 24 "Unit-Offline" if the flag is set. + + 25 Whether or not a controller does in fact check for duplicate unit + 26 identifiers is controller dependent. Note that a duplicate unit + 27 identifier is a drastic failure, indicative of some otherwise + 28 undiagnosed hardware malfunction. + + 29 4.18 Media Type Identifiers + + 30 Controllers return a media type identifier for each unit + 31 accessible via that controller. This identifier encodes two + 32 pieces of information: + + 33 1. The preferred device type name for use with the unit. + 34 These two alphabetic characters are conventionally used + 35 with the unit number and a controller designator as the + 36 fully qualified operating system identifier for the + 37 unit. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-48 + Media Type Identifiers 11 June 1992 + + + 1 2. The name (product name) of the media used on the unit. + 2 This name should be printed on the unit's front panel + 3 and on all removable media that may be used with the + 4 unit. + + 5 The primary reason for returning this information is to simplify + 6 operating system support for generic device allocation. + + 7 The media type identifier returned via MSCP is a 32 bit quantity + 8 encoded as follows: + + 9 31 26 21 16 11 7 6 0 + 10 +----+----+----+----+----+------+ + 11 | D0 | D1 | A0 | A1 | A2 | N | + 12 +----+----+----+----+----+------+ + + 13 where the fields are as follows: + + 14 D0 + 15 D1 The preferred device type name for the unit. D0 and D1 are + 16 five bit fields, each encoding one alphabetic character. "A" + 17 is encoded with the value 1, "B" with the value 2, etc. D0 + 18 encodes the left character of the device type name, D1 the + 19 right character. + + 20 A0 + 21 A1 + 22 A2 + 23 N The name of the media used on the unit. A0 through A2 are + 24 five bit fields, each encoding an alphabetic character or + 25 null. "A" is encoded with the value 1, "B" with the value 2, + 26 etc. Zero represents a null or the absence of a character. + 27 One to three characters of the media name are encoded, left + 28 justified, in A0 through A2. N is a seven bit field + 29 containing the value of two decimal digits. + + 30 Note that the encoding of the media name assumes that the name + 31 consists of one, two, or three alphabetic characters followed by + 32 exactly two digits (i.e., ann, aann, or aaann). MSCP requires + 33 that the product names for all mass storage devices adhere to + 34 this format. + + 35 Currently defined device type and media names (i.e., currently + 36 defined media type identifier values) are listed in Appendix C, + 37 "Controller, Unit, and Media Type Identifiers." Tables C-3, + 38 "Disk Drive/Media Identifier Values" and C-4, "Tape Drive/Media + 39 Identifier Values" contain the "media identifier" values for disk + 40 and tape drives, respectively. The Storage Systems Architecture + 41 Group is responsible for assigning new values. Requests for + 42 additions to the tables should be addressed to SSAG::SSAG. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-49 + Controller-based Cache 11 June 1992 + + + 1 | 4.19 Controller-based Cache + + 2 The purpose of a controller-based cache is to minimize the mean + 3 response time for the aggregate set of I/O requests serviced by + 4 the controller. Controller-based caches are intended to be + 5 invisible to the user except for this performance improvement. + 6 Implementations shall ensure the data integrity with the cache + 7 employed is comparable to the backing-store even through power + 8 failures, so that the only reason to use or avoid the cache is + 9 performance. Implementing controller-based cache does not waive + 10 any normal storage device responsibilities as defined in this + 11 specification. + + 12 This implies that a cached device has the same responsibility as + 13 any other device in terms of setting the forced error flag in an + 14 LBN if the data integrity of that LBN is in question. If it + 15 knows corrupt data exists on the device but does not know which + 16 data, it shall assume the Offline/Unit inoperative state and + 17 maintain this state even through power failure. In this case, it + 18 must provide a diagnostic or DUP path for recovery of user data. + 19 No single point of failure may allow the unreported return of the + 20 wrong or corrupt data. + + 21 The following are implementation examples that demonstrate the + 22 implications of these responsibilities. + + + 23 o If storage units are dual ported to two or more + 24 controllers, the controllers will write data to the unit + 25 backing-store as well as the cache before returning the + 26 command complete response so that the failure of one of + 27 the controllers cannot cause loss of user data or its + 28 consistency. + + 29 o Controllers whose cache may lose user data or its + 30 consistency in the event of power failure will write the + 31 data to the backing-store as well as the cache before + 32 returning the command complete response. For commands + 33 with the compare modifier, the command complete will not + 34 be sent until the compare has been made with the backing + 35 store. + + 36 o Controllers whose cache is capable of maintaining the + 37 user data integrity and its consistency at a level + 38 comparable to the backing-store, even through power + 39 failure, can return the command complete response as + 40 soon as the data is in the cache, before writing to the + 41 backing-store. For commands with the compare modifier, + 42 the command complete response may also be returned as + 43 soon as the user data is compared to the cache data. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + ALGORITHMS AND USAGE RULES Page 4-50 + Controller-based Cache 11 June 1992 + + + 1 o A controller-based cache implementation can degrade its + 2 cache actions in the event of component failure as long + 3 as the specified data integrity is maintained. For + 4 example, if a controller implementing a cache that can + 5 maintain its integrity through power failure recognizes + 6 its cache memory integrity is degrading, it can flush + 7 the cache and revert to a mode where it writes to the + 8 backing-store as well as the cache before returning the + 9 command complete response. + + + 10 The manner in which users access their data varies greatly. Some + 11 access it totally randomly, others walk through files + 12 sequentially. Some access the same data many times, others + 13 access each piece of data only once. These differing access + 14 patterns have a great effect on the performance of a cache + 15 algorithm. + + 16 Transfer commands are provided with a "Cache Access Attributes" + 17 field so that the cache action can be optimized for these + 18 patterns. This is an optional use field that allows users to + 19 provide "advice" as to the access patterns they expect. A + 20 particular cache implementation, knowing its specific caching + 21 algorithm and its current state, may make use of this advice to + 22 optimize its performance. No specific action is mandatory or + 23 architecturally defined. Each implementation shall specify its + 24 actions. + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-1 + 11 June 1992 + + + 1 CHAPTER 5 + + 2 MSCP CONTROL MESSAGES + + + 3 5.1 Generic Control Message Format + + 4 All MSCP control messages -- i.e., command, end, error log, and + 5 attention messages -- consist of a 12 byte header and a variable + 6 length parameter area. The generic control message format is as + 7 follows: + + 8 31 0 + 9 +--------------------------------+ + 10 | | + 11 +------- control message --------+ + 12 | type specific | + 13 +------- header --------+ + 14 | | + 15 +--------------------------------+ + 16 | | + 17 / parameters / + 18 / / + 19 | | + 20 +--------------------------------+ + + 21 The device class (disk or tape) does not appear in the control + 22 message. It is implied by the connection or MSCP server to/from + 23 which the control message is sent/received. + + 24 Multibyte numbers are stored least significant byte first (i.e., + 25 using the standard VAX number formats). + + 26 The communications mechanism conveys both the text of a message + 27 and its length. The receiver of a message uses the length to + 28 verify that all required parameters are in fact present. + + 29 The communications mechanism may restrict the allowable message + 30 lengths. For example, it might require that all messages have a + 31 fixed length (typically equal to the longest message supported) + 32 or that the length be an even multiple of bytes. For this reason + 33 the message lengths defined by MSCP are minimum lengths. Senders + 34 may pad messages as necessary to meet communications mechanism + 35 length restrictions. The contents of the padding (that is, the + 36 contents of any data past the end of the message formats shown in + 37 this document) are reserved and follow the rules for reserved + 38 fields defined in Section 5.2, "Reserved and Undefined Fields" + 39 (i.e., such padding contains zeros). + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-2 + Reserved And Undefined Fields 11 June 1992 + + + 1 5.2 Reserved And Undefined Fields + + 2 Reserved fields are those fields that are intended for possible + 3 future extensions to MSCP. The use of such fields shall follow + 4 certain rules, in order to ensure that such future extensions can + 5 be upwards compatible with the current version of MSCP. In + 6 general, the sender of a message shall supply the value zero in + 7 all reserved fields. The action for a message receiver varies, + 8 and is discussed below. + + 9 An undefined field is just that -- its contents are controller + 10 implementation dependent, and therefore cannot be used in any + 11 meaningful way by class drivers. Undefined fields are provided + 12 in order to simplify controller implementation. Class drivers + 13 shall ignore the contents of undefined fields. + + 14 A field, as used in this discussion, may have any length. In + 15 particular, it may be an individual bit of a flags word or byte + 16 as well as an entire byte, word, or whatever. + + 17 Class drivers shall supply the value zero in the reserved fields + 18 of all messages (commands) that they send to a controller, and + 19 shall also ignore the contents of reserved fields in all the + 20 messages (end messages, attention messages, and error log + 21 messages) that they receive from an MSCP server. MSCP servers + 22 shall supply the value zero in the reserved fields of all + 23 messages (end messages, attention messages, and error log + 24 messages) that they send to class drivers. MSCP servers shall + 25 either ignore the contents of reserved fields in the messages + 26 (commands) that they receive from class drivers or verify that + 27 the contents are zero. The command is treated as an "Invalid + 28 Command" ("reserved field" protocol error; see "Invalid Command" + 29 status in Section 5.5, "Status and Event Codes") if the + 30 controller chooses to verify and the contents are found to be + 31 nonzero. Whether an MSCP server verifies that reserved fields + 32 are zero is controller dependent, and need not be consistent for + 33 all reserved fields. + + 34 Many controllers generate command end messages by simply + 35 modifying the commands' command messages. That is, the + 36 controller copies a command message into an internal buffer, + 37 modifies it in place during execution of the command, then sends + 38 the resulting contents of the internal buffer as the command's + 39 end message. To simplify such an implementation, controllers may + 40 merely "echo" command message reserved fields when the + 41 corresponding field in the end message should be zero. More + 42 precisely, if some field in the end message of a command should + 43 be zero, and the corresponding (same position) field in the + 44 command's command message is a reserved field, the controller may + 45 copy the reserved field from the command message to the end + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-3 + Reserved And Undefined Fields 11 June 1992 + + + 1 message rather than explicitly zeroing the field in the end + 2 message. + + 3 The above paragraphs have listed all of the allowable controller + 4 actions when a controller receives a command message with a + 5 nonzero value in a reserved field. That is, when a controller + 6 receives a command message with a nonzero value in a reserved + 7 field it shall do one of the following: + + 8 1. Reject the command as an "Invalid Command" ("reserved + 9 field" protocol error; see "Invalid Command" status in + 10 Section 5.5, "Status and Event Codes"). + + 11 2. Totally ignore the nonzero contents of the reserved + 12 field. That is, the command's execution, results, and + 13 end message contents are totally unaffected by the + 14 nonzero value. + + 15 3. If the corresponding field in the end message should + 16 have a zero value, echo the contents of the reserved + 17 field in the command message as the value of the field + 18 in the end message. In all other ways totally ignore + 19 the nonzero contents of the reserved field. That is, + 20 the command's execution, results, and the contents of + 21 all other fields in the end message are totally + 22 unaffected by the nonzero value. + + 23 Note that option 3 is primarily of use when a field is reserved + 24 in both command and end messages. + + 25 It is recommended, although not required, that which of these + 26 options a controller implements be based on whether the + 27 controller's code is hard (ROM based) or soft (loadable + 28 microcode, implying it is easily altered). The purpose of this + 29 is to provide the maximum degree of error checking consistent + 30 with ease of future extensions to MSCP. Controllers whose code + 31 is soft or relatively easy to alter should implement option 1, + 32 verifying that reserved fields are in fact zero. Controllers + 33 whose code is hard or difficult to alter should implement option + 34 3 when the corresponding fields in command and end messages are + 35 both reserved and option 2 in all other cases. + + 36 Note that controllers shall implement option 1 whenever the + 37 internal functioning of the controller may be altered if a + 38 reserved field contains a nonzero value. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-4 + Command Messages 11 June 1992 + + + 1 5.3 Command Messages + + 2 A host class driver sends a command message to an MSCP server to + 3 have a certain operation performed. Note that command messages + 4 are flow controlled as described in Section 3.2, "Flow Control" + 5 and associated subsections. + + 6 The generic command message format is as follows: + + 7 31 0 + 8 +--------------------------------+ + 9 | command reference number | + 10 +---------------+----------------+ + 11 | reserved | unit number | + 12 +---------------+-------+--------+ + 13 | modifiers | caa | opcode | + 14 +---------------+-------+--------+ + 15 | | + 16 / parameters / + 17 / / + 18 | | + 19 +--------------------------------+ + + 20 The fields in the generic command message are as follows: + + 21 command reference number + + 22 A 32 bit, unique, nonzero number used to identify host + 23 commands. Class drivers should supply a unique reference + 24 number in each command that they send to an MSCP server. + 25 Command reference numbers are not interpreted in any way + 26 by MSCP servers. Their purpose is to provide a unique + 27 identifier by which class drivers can name commands. + 28 They are used by class drivers to match end messages and + 29 error log messages with the corresponding command message + 30 and to identify the object of an ABORT or GET COMMAND + 31 STATUS command. A class driver may supply a zero + 32 reference number if it does not need to associate a + 33 command with its end message. + + 34 Command reference numbers shall be unique across all + 35 commands that are outstanding on the same connection. + 36 I.e., they shall be unique across all outstanding + 37 commands issued by a single class driver (host) to a + 38 single MSCP server. The class driver may reuse a + 39 command's reference number when the command is no longer + 40 outstanding -- i.e., after receiving the command's end + 41 message or after resynchronizing with the MSCP server. + 42 Command reference numbers need not be unique for commands + 43 issued by different class drivers -- i.e., commands + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-5 + Command Messages 11 June 1992 + + + 1 issued by different hosts or commands for different MSCP + 2 servers from the same host. Therefore controllers shall + 3 internally use the combination of a command reference + 4 number and the connection on which the command was + 5 received as the unique identifier of an outstanding + 6 command. + + 7 unit number + + 8 Identifies the specific unit within the device class to + 9 which the message applies. This value is the binary + 10 equivalent of the decimal unit number displayed by the + 11 unit select mechanism. Note that the unit number field + 12 appears in all command messages with the exception of the + 13 ACCESS NONVOLATILE MEMORY and SET CONTROLLER + 14 CHARACTERISTICS commands. It is reserved in those + 15 messages. + + 16 opcode + + 17 Identifies the operation to be performed by the + 18 controller. The opcode implicitly specifies the length + 19 and format of the message, including the interpretation + 20 of any parameters that are present. + + 21 Appendix A, "Opcode, Flag, and Offset Definitions," Table + 22 A-1, "Control Message Opcodes," lists the valid opcodes + 23 and their meanings. + + 24 A command message is rejected as an "Invalid Command" + 25 ("invalid opcode" protocol error; see "Invalid Command" + 26 status in Section 5.5, "Status and Event Codes") if its + 27 opcode is: zero, any value not listed as a valid command + 28 message opcode in the "Standard Command Messages" portion + 29 of Table A-1, or an optional command listed in the + 30 "Optional Command Messages" portion of Table A-1 that is + 31 not supported by the controller. + + 32 The "Controller Implementation Specific Command Messages" + 33 portion of Table A-1 shows a range of opcodes reserved + 34 for implementation of controller specific special purpose + 35 functions. Implementation of any or all of those opcodes + 36 is a controller dependent option. Those opcodes will + 37 typically be used by control layers internal to a + 38 controller to invoke diagnostic or maintenance type + 39 functions. Controllers may also honor those opcodes from + 40 the host for use by manufacturing or other external + 41 diagnostics. In cases where such an opcode is available + 42 for host use, the command message format and operation + 43 associated with the opcode shall be described in the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-6 + Command Messages 11 June 1992 + + + 1 controller's functional specification. Although not an + 2 absolute requirement of MSCP, it is recommended that + 3 controllers implement a manually actuated control + 4 mechanism (e.g., the installation of a jumper) that + 5 explicitly enables and disables those opcodes available + 6 for host use in order to prevent unintentional execution + 7 of a special purpose function during normal operations. + + 8 A command message received from the host containing a + 9 "Controller Implementation Specific Command Message" + 10 opcode is rejected as an "Invalid Command" ("invalid + 11 opcode" protocol error; see "Invalid Command" status in + 12 Section 5.5, "Status and Event Codes") if the controller: + + 13 1. does not implement the opcode at all. + + 14 2. implements the opcode for internal use only. + + 15 3. implements a manually actuated control mechanism that + 16 enables and disables host use of the opcode and host + 17 use has not been explicitly enabled via that + 18 mechanism. + + + + 19 caa (cache access attributes) -- for transfer commands + 20 only + + 21 The cache access attributes field may contain a value + 22 that advises the controller-based cache manager of the + 23 user's expected future access of data. See Section + 24 5.3.1, "Transfer Command Message Format." + + 25 modifiers + + 26 The modifiers field contains bit flags that modify the + 27 operation identified by the command's opcode, or zero if + 28 no modifiers are specified. See Section 5.3.2, "Command + 29 Modifiers," for more details. + + 30 parameters + + 31 The parameter area is typically divided into distinct + 32 fields that convey the information necessary to perform + 33 the desired operation in a defined manner. The length + 34 and content of the parameter area varies depending upon + 35 the command's opcode. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-7 + Command Messages 11 June 1992 + + + 1 Chapter 6, "Minimal MSCP Command Set" describes the operation and + 2 command message format of the various commands required to be + 3 supported by an MSCP disk controller. + + 4 The following section describes the command message format common + 5 to many data transfer commands. + + 6 5.3.1 Transfer Command Message Format + + 7 Although the parameters and their layout are command (opcode) + 8 dependent, many commands perform data transfers and thus use + 9 similar sets of parameters. Therefore data transfer related + 10 command messages are typically laid out as follows: + + 11 31 0 + 12 +--------------------------------+ + 13 | command reference number | + 14 +---------------+----------------+ + 15 | reserved | unit number | + 16 +---------------+-------+--------+ + 17 | modifiers | caa | opcode | + 18 +---------------+-------+--------+ + 19 | byte count | + 20 +--------------------------------+ + 21 | | + 22 +--- buffer ---+ + 23 | | + 24 +--- descriptor ---+ + 25 | | + 26 +--------------------------------+ + 27 | logical block number | + 28 +--------------------------------+ + + 29 The fields in the transfer command message are as follows: + + 30 command reference number + 31 unit number + 32 opcode + + + 33 caa (cache access attributes) + + 34 The Cache Access Attributes (caa) field is only used with + 35 specified transfer commands. The individual command + 36 descriptions contained in Chapter 6, "Minimal MSCP + 37 Command Set" show the commands for which Cache Access + 38 Attributes are applicable. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-8 + Command Messages 11 June 1992 + + + 1 The Cache Access Attributes field contains a value that + 2 describes the access attributes of the data. The content + 3 of this field is not intended to be a command to the + 4 cache, but rather it is advice to the cache as to the + 5 access attributes of the data which may affect the manner + 6 in which the cache manages itself. Since this field is + 7 only advisory in nature, any device may ignore it. The + 8 implementor of the controller-based cache is responsible + 9 for defining the action an implementation takes in + 10 response to each Cache Access Attribute value. + + 11 Two generic attributes are defined and four values are + 12 assigned to the four combinations of these generic + 13 attributes. The assigned values are described in + 14 Appendix A, "Opcodes, Flags, and Offset Definitions," + 15 Table A-17, "Cache Access Attribute Values." The + 16 attributes are as follows: + + + 17 Random - A storage element implements prefetch with + 18 the assumption that it is worthwhile prefetching the + 19 data logically following user requested data. + + 20 - Random should be specified if the user believes + 21 this will not be true for his request. + + 22 - Otherwise, Random should not be specified. + + + 23 Single - A storage element implements a cache with + 24 the assumption that it is worthwhile caching data + 25 that has been previously accessed. + + 26 - Single should be specified if the user believes + 27 this will not be true for his request. + + 28 - Otherwise, Single should not be specified. + + + + 29 The zero value is defined as the default value. Each + 30 implementation shall define its action in terms of the + 31 generic attributes in response to this value. All + 32 unassigned values shall be acted upon as though they were + 33 the default value, unless modified by the System Manager. + + 34 Some users may have unique access patterns that require + 35 unique definition. In these cases, a user may be + 36 assigned one or more Cache Access Attribute values for + 37 the application. These values shall be assigned by the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-9 + Command Messages 11 June 1992 + + + 1 Responsible Architect. Its access pattern definition + 2 will be negotiated between the user and the cache + 3 implementors. + + 4 A system manager may modify a device action to a Cache + 5 Access Attribute value at configuration or + 6 reconfiguration. This modification consists of changing + 7 the action of a given value to that defined by another + 8 value. For example, the system manager could make the + 9 action in response to value 85 hex be the same as the + 10 action in response to value 80 hex. Implementations that + 11 allow such modification should allow all 256 Cache Access + 12 Attribute Values to be modified, including those that + 13 have not yet been assigned in this specification. + + 14 modifiers + + 15 | See Section 5.3.2, "Command Modifiers." + + 16 byte count + + 17 The total requested length of the data transfer in bytes. + 18 This length shall meet both architectural constraints and + 19 a server specified maximum. + + 20 An MSCP server may, at its option, return the maximum + 21 byte count size that it supports in the SET CONTROLLER + 22 CHARACTERISTICS end message (see Section 6.16.2, "SET + 23 CONTROLLER CHARACTERISTICS, End Message Format" for + 24 default values used if the size is not provided by the + 25 server). Class drivers should not issue commands with + 26 larger byte counts. The server response to a command + 27 whose byte count is larger than the server's maximum is + 28 undefined. If the server does not reject the command, it + 29 is subject to the following constraints: + + + 30 1. The server may not destroy hardware or do any + 31 other action that would require field service + 32 attention. + + 33 2. The server may alter host memory only in response + 34 to a READ command, and then only that portion of + 35 host memory implied by the command's buffer + 36 descriptor and specified byte count. See Section + 37 4.11, "Host Buffer Access." + + 38 3. The server may alter data on the unit only in + 39 response to a WRITE or ERASE command, and then + 40 only that portion of the unit implied by the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-10 + Command Messages 11 June 1992 + + + 1 logical block number and specified byte count. + + 2 4. Any error reported in the command's end message + 3 or in an error log message must have actually + 4 occurred at the position reported. + + 5 5. With one exception, any other commands that may + 6 be outstanding at the same time as the command + 7 whose byte count is too large may not be + 8 affected. The one exception is that the server + 9 need not properly implement the command timeout + 10 algorithm for any such command, not just the + 11 command whose byte count is too large. + + + 12 Byte counts shall also meet the following architectural + 13 constraints, which vary depending upon the device class. + + 14 | For tape class devices, if the "byte count" specified is + 15 | larger than a format dependent maximum block size or the + 16 | byte count is zero, the command is rejected as an + 17 | "Invalid Command" subcode "invalid byte count" parameter + 18 | error; (see "Invalid Command" status in TMSCP, Chapter 4, + 19 | Section "Status Codes"). + + 20 For disk class devices, the requirements depend on the + 21 contents of the "logical block number" field. + + 22 If the "logical block number" field identifies a logical + 23 block in the host area of the disk volume (i.e., the + 24 "logical block number" is less than the "unit size" + 25 returned in the ONLINE and SET UNIT CHARACTERISTICS end + 26 messages), then the "byte count" shall be less than or + 27 equal to the following maximum byte count: + + 28 ( unit size - logical block number ) * block size + + 29 where "unit size" is the unit's host area size (returned + 30 in the ONLINE and SET UNIT CHARACTERISTICS end messages), + 31 "logical block number" is the contents of the "logical + 32 block number" field in the command message, and "block + 33 size" is the volume's block size, either 512 or 576 + 34 bytes. The controller or MSCP server shall check that + 35 the "byte count" is less than or equal to the above + 36 maximum. That is, the controller or MSCP server shall + 37 reject or terminate any transfer command that begins in + 38 the host area of a disk volume and attempts to continue + 39 into the volume's Replacement Control Table (RCT). The + 40 command is rejected as an "Invalid Command" ("byte count" + 41 parameter error) if this restriction is violated. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-11 + Command Messages 11 June 1992 + + + 1 If the "logical block number" field identifies a logical + 2 block in the disk volume's RCT (i.e., the "logical block + 3 number" is greater than or equal to the "unit size" + 4 returned in the ONLINE and SET UNIT CHARACTERISTICS end + 5 messages), then the "byte count" shall be exactly the + 6 block size (either 512 or 576 bytes). The treatment of a + 7 "byte count" that does not match the block size differs + 8 depending on whether or not the controller performs bad + 9 block replacement. Section 8.4, "Replacement Control + 10 Table Access" describes the action a controller that + 11 performs bad block replacement will take. If the + 12 controller does not perform bad block replacement and a + 13 different (than block size) "byte count" value is + 14 provided, the controller may either attempt the transfer + 15 with the specified "byte count" or else reject the + 16 command as an "Invalid Command" ("byte count" parameter + 17 error). If the controller attempts the transfer, and the + 18 "byte count" causes the transfer to extend past some + 19 boundary within the RCT, then the controller performs the + 20 transfer up to that boundary and terminates the command + 21 as an "Invalid Command" ("byte count" parameter error). + 22 The location of the boundary or boundaries at which the + 23 controller terminates the transfer are controller + 24 dependent. + + 25 For all disk and tape transfer commands that contain + 26 "buffer descriptors" (i.e., all transfer commands except + 27 ACCESS and ERASE), the "byte count" shall also be less + 28 than or equal to the size of the buffer identified by + 29 "buffer descriptor." Note that "buffer descriptor," and + 30 thus the size of the buffer, is inherently communications + 31 mechanism dependent. The size of a buffer is not + 32 necessarily available to the MSCP server until it + 33 attempts to transfer past the end of the buffer. A "Host + 34 Buffer Access Error" status code is returned if the "byte + 35 count" exceeds the length of the buffer. Note that such + 36 errors are not necessarily distinguishable from other + 37 causes of "Host Buffer Access Errors." + + 38 For disk transfer commands only, some communications + 39 mechanisms may prohibit odd "byte count" values. Odd + 40 "byte count" values shall be allowed in tape transfer + 41 commands. A "Host Buffer Access Error" status code is + 42 returned if the "byte count" is an illegal odd byte + 43 count. For disk transfer commands that do not use a host + 44 buffer (ACCESS and ERASE), a controller may return this + 45 status code, or it may round the byte count up to the + 46 nearest whole sector size and perform the operation. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-12 + Command Messages 11 June 1992 + + + 1 "Byte count" values that exceed any of the architectural + 2 maximum values described above may be detected either + 3 before the transfer is initiated or when the transfer + 4 attempts to cross the boundary from legal to invalid byte + 5 counts. If detected before the transfer is initiated + 6 (the transfer is rejected), the MSCP server shall not + 7 transfer any data and shall return zero in the "byte + 8 count" field of the end message. If detected when the + 9 transfer attempts to cross the boundary (the transfer is + 10 terminated), the MSCP server shall transfer all data up + 11 to the maximum legal byte count and return the maximum + 12 legal byte count in the "byte count" field of the end + 13 message. Data shall not be transferred past the maximum + 14 legal byte count. In either case the command is treated + 15 as an "Invalid Command" ("byte count" parameter error). + 16 Which algorithm an MSCP server uses for detecting byte + 17 counts that are too large is controller dependent. + + 18 buffer descriptor + + 19 Communication mechanism dependent identification of the + 20 host buffer to use for the data transfer. The + 21 information encoded in this 12 byte (96 bit) field + 22 includes: + + 23 o A host identifier (port or node identification). + + 24 o The name of a buffer on the host. + + 25 Note that the inclusion of a host identifier allows for + 26 third party transfers. The buffer descriptor formats + 27 used by various communication mechanisms are listed in + 28 Appendix D, "Buffer Descriptor Formats." + + 29 logical block number + + 30 Not present in tape transfer commands. In disk transfer + 31 commands, the logical block number (position) on the disk + 32 volume at which to start the data transfer. This value + 33 shall not identify a block past the end of the volume's + 34 Replacement Control Table (RCT). Section 4.12, "Disk + 35 Geometry and Format," describes the mapping of logical + 36 block numbers to disk volume regions. If the command is + 37 a write operation and the controller is performing bad + 38 block replacement, this value also shall not identify a + 39 block within the volume's RCT (see Section 8.4, + 40 "Replacement Control Table Access"). Any of these errors + 41 cause the command to be rejected as an "Invalid Command" + 42 "logical block number" parameter error. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-13 + Command Messages 11 June 1992 + + + 1 5.3.2 Command Modifiers + + 2 The allowable modifiers on a command are command (opcode) + 3 dependent. The individual command descriptions contained in + 4 Chapters 6, "Minimal MSCP Command Set" and 7, "Multihost Support" + 5 list the allowable modifiers for each command. Modifiers that + 6 are only allowed on one command are described in that command's + 7 description. Modifiers that are common to many commands are + 8 described below: + + 9 Clear Serious Exception + + 10 Clears the "serious exception" condition on the specified + 11 unit. Ignored if there is no serious exception condition + 12 in effect. Serious exceptions only occur on tape class + 13 devices. See Tape Mass Storage Control Protocol + 14 Specification (TMSCP) for complete details. + + 15 Compare + + 16 Applicable to data transfer commands. After the + 17 transfer, the data will be read back from the transfer + 18 destination and verified against the original data + 19 reobtained from the source. Specifying this modifier is + 20 similar, but not identical, to following the transfer + 21 command with a COMPARE HOST DATA command. In particular, + 22 if the compare operation fails, an error log message is + 23 generated (if enabled) and the original transfer + 24 operation retried. (With the COMPARE HOST DATA command, + 25 an error log message is not generated on compare errors. + 26 Retries are unnecessary, although innocuous and therefore + 27 allowable.) See Section 4.15, "Compare Operations," for a + 28 more detailed description of this modifier's effects. + + 29 Express Request + + 30 Applicable to Non-Sequential commands. This modifier + 31 requests that the controller ignore its normal + 32 optimization policies in order to complete this command + 33 as quickly as possible. The exact implementation of + 34 express requests is controller dependent -- in general + 35 the controller will complete some or all of its + 36 outstanding commands before completing an express + 37 request. + + 38 Use of express requests disables the normal controller + 39 guarantees that ensure that all commands are serviced in + 40 a timely manner. If express requests are repeatedly + 41 issued, some or all other outstanding commands may time + 42 out (i.e., never be completed). + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-14 + Command Messages 11 June 1992 + + + 1 Express requests do NOT override sequential command + 2 execution guarantees. Some controllers may completely + 3 ignore the express request modifier. The exact treatment + 4 of express requests should be described in a controller's + 5 functional specification. + + 6 Force Error + + 7 Applicable only to write commands directed to disk class + 8 devices. Causes the data to be written with the forced + 9 error indicator set, so that all attempts to read the + 10 data will fail. The error will be preserved until the + 11 next time the block is written. The forced errors + 12 produced with this modifier shall be recognized by the + 13 controller as deliberate and never reported to the error + 14 log. Note that the data shall be written to the block so + 15 as to be obtainable by subsequent READ commands, exactly + 16 as if this modifier were not specified. The only + 17 difference is whether subsequent READ commands will + 18 return success or the forced error status code. + + 19 Suppress Error Correction + + 20 Suppresses error correction mechanisms, such as ECC + 21 correction. Error recovery mechanisms, such as retries, + 22 are not affected by this modifier. This modifier, in + 23 effect, lowers the threshold at which an error is + 24 considered to be uncorrectable. It typically lowers the + 25 threshold to zero, although that is not required. Since + 26 error correction is drive type dependent, the lowered + 27 error correction threshold is also drive type dependent. + 28 If a drive has several error correction mechanisms, it is + 29 permissible for this modifier to suppress some and not + 30 affect others. + + 31 Suppress Error Recovery + + 32 Suppresses most error recovery mechanisms, such as read + 33 retries. Error correction mechanisms, such as ECC + 34 correction, and some error recovery mechanisms, such as + 35 seek retry, are not affected by this modifier. The exact + 36 definition of which error recovery mechanisms are + 37 suppressed and which are not affected is drive type + 38 dependent. + + 39 Refer to Appendix A, "Opcode, Flag, and Offset Definitions," + 40 Table A-2, "Command Modifiers" for the values assigned to all + 41 command modifiers. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-15 + Command Messages 11 June 1992 + + + 1 All modifiers that are not explicitly allowed for a command are + 2 reserved, and shall be treated in accordance with the + 3 requirements for reserved fields described in Section 5.2, + 4 "Reserved and Undefined Fields." The only exception is that + 5 certain modifiers (allowable on certain commands) are either + 6 ignored or treated as reserved depending on whether or not a + 7 controller supports certain optional MSCP functions. See Table + 8 A-2 for complete details. Note that those modifiers are not + 9 listed in the individual command descriptions. + + 10 5.4 End Messages + + 11 An MSCP server sends an end message to a class driver to report + 12 completion of a command. Note that end messages are flow + 13 controlled as described in Section 3.2, "Flow Control" and + 14 associated subsections. + + 15 The generic end message format is as follows: + + 16 31 0 + 17 +--------------------------------+ + 18 | command reference number | + 19 +---------------+----------------+ + 20 |sequence number| unit number | + 21 +---------------+-------+--------+ + 22 | status | flags | endcode| + 23 +---------------+-------+--------+ + 24 | | + 25 / parameters / + 26 / / + 27 | | + 28 +--------------------------------+ + + 29 The fields in the generic end message are as follows: + + 30 command reference number + 31 unit number + + 32 Both of these fields are copied from the command message. + 33 See Section 5.3, "Command Messages." + + 34 sequence number + + 35 This field depends on the state of the "error log + 36 generated" flag in the "flags" field. If that flag is + 37 set, this field contains the "sequence number" of the + 38 LAST error log message that refers to this command -- + 39 i.e., that contains this command's command reference + 40 number. If that flag is clear, this field will be zero. + 41 (Note that MSCP servers meeting certain requirements need + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-16 + End Messages 11 June 1992 + + + 1 not implement error log sequence numbers. See Section + 2 5.9, "Error Log Messages." Servers that meet those + 3 requirements shall always return a zero in the sequence + 4 number field.) This field allows the host to determine + 5 when all error log messages for a particular command have + 6 been received and when the command's context saved for + 7 inclusion in the error log, if any, can be released. + 8 Section 5.9, "Error Log Messages" provides complete + 9 details regarding host and MSCP server error logging + 10 operation. + + 11 endcode + + 12 Identifies this message as an end message and the type of + 13 command (opcode) that this is an end message for. This + 14 field implicitly specifies the length, format, and + 15 interpretation of the parameters. + + 16 Normally the endcode is formed by adding the constant + 17 (OP.END) to the command opcode (see Table A-1, "Control + 18 Message Opcodes"). An exception is the Invalid Command + 19 End Message (see "Invalid Command" status in Section 5.5, + 20 "Status and Event Codes"). + + 21 flags + + 22 Bit flags, collectively called end flags, used to report + 23 various conditions detected due to this command but not + 24 directly related to success or failure. The following + 25 flags are defined: + + 26 Allocation Failure + + 27 Set if the server was unable to allocate a new + 28 "write history entry" in a History Log modified + 29 write type command. Indicates that no "write + 30 history entry" was generated for this command. + 31 This condition is recorded in the Allocation + 32 Failure Table in the controller. For more + 33 details, see Section 6.19.3, "WRITE HISTORY + 34 MANAGEMENT Command, Description," and the + 35 descriptions of the History Log and Reuse Entry + 36 modifiers in any write type command (WRITE, + 37 ERASE, and DISK COPY DATA). + + 38 Bad Block Reported + + 39 Set if one or more bad blocks were detected and + 40 the host is performing bad block replacement. + 41 Indicates that the host should replace the bad + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-17 + End Messages 11 June 1992 + + + 1 block identified in the "first bad block" field. + 2 Note that this end flag is applicable only to + 3 disk class devices. + + 4 Bad Blocks Unreported + + 5 Set if one or more bad blocks were detected and + 6 not reported in the "first bad block" field. If + 7 the "Bad Block Reported" flag is also set, this + 8 indicates that two or more bad blocks were + 9 detected, the host is performing bad block + 10 replacement, and the "first bad block" field only + 11 reports the first bad block in the transfer. If + 12 the "Bad Block Reported" flag is clear, this + 13 indicates that one or more bad blocks were + 14 detected and that the controller either already + 15 has or soon will replace them. Note that this + 16 end flag is applicable only to disk class + 17 devices. + + 18 Error Log Generated + + 19 Set if one or more error log messages were + 20 generated that refer to this command -- i.e., + 21 that contain this command's command reference + 22 number. When set this flag signals the host to + 23 save any command context that it wishes to + 24 include in its error log until all error log + 25 messages associated with the command have arrived + 26 (see also "sequence number" field described + 27 above). + + 28 History Logged + + 29 Set if the "write history log" contains a valid + 30 "write history entry" for this command. See + 31 Section 6.19.3, "WRITE HISTORY MANAGEMENT + 32 Command, Description," for details of write + 33 history logging. + + 34 Serious Exception + + 35 Set if an unrecoverable error or some other + 36 unusual exception condition requires that the + 37 host recognize the exception before additional + 38 commands are processed. The host shall clear the + 39 error before subsequent commands can be executed. + 40 Note that this end flag is applicable only to + 41 tape class devices. See Tape Mass Storage + 42 Control Protocol Specification (TMSCP) for + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-18 + End Messages 11 June 1992 + + + 1 complete details. + + 2 Refer to Appendix A, "Opcode, Flag, and Offset + 3 Definitions," Table A-3, "End Message Flags" for the + 4 values assigned to the defined flags. All other bits in + 5 the "flags" field are reserved, and shall be treated in + 6 accordance with the requirements for reserved fields + 7 described in Section 5.2, "Reserved and Undefined + 8 Fields." + + 9 status + + 10 The status field contains a status code that indicates + 11 whether the operation was successfully completed or, if + 12 it wasn't successful, what type of error occurred (see + 13 also Section 5.5, "Status and Event Codes"). Note that + 14 recoverable errors are reported as successful completion + 15 of the command. All errors, whether recoverable or not, + 16 are reported in a separate error log message if they + 17 should be logged (see Section 5.9, "Error Log Messages" + 18 for more detail). + + 19 Note that if several errors occur in a nontransfer + 20 operation, the error that is reported is controller + 21 dependent unless the individual command description + 22 states otherwise. See the "status" field description in + 23 Section 5.4.1, "Transfer Command End Message Format" for + 24 specifics of multiple error handling for transfer + 25 commands. + + 26 Chapter 6, "Minimal MSCP Command Set" describes the operation, + 27 command message format, and end message format of the various + 28 commands required to be supported by an MSCP disk controller. + 29 The following section describes the end message format common to + 30 many data transfer commands. + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-19 + End Messages 11 June 1992 + + + 1 5.4.1 Transfer Command End Message Format + + 2 Although the parameters and their layout are command (endcode) + 3 dependent, many commands perform data transfers and thus return + 4 similar sets of parameters. Therefore data transfer related end + 5 messages are typically laid out as follows: + + 6 31 0 + 7 +--------------------------------+ + 8 | command reference number | + 9 +---------------+----------------+ + 10 |sequence number| unit number | + 11 +---------------+-------+--------+ + 12 | status | flags |endcode | + 13 +---------------+-------+--------+ + 14 | byte count | + 15 +--------------------------------+ + 16 | | + 17 +--- ---+ + 18 | undefined | + 19 +--- ---+ + 20 | | + 21 +--------------------------------+ + 22 | first bad block | + 23 +--------------------------------+ + + 24 The fields in the transfer command end message are as follows: + + 25 command reference number + 26 unit number + 27 sequence number + 28 endcode + 29 flags + + 30 See Section 5.4, "End Messages." + + 31 status + + 32 If several errors occur in a transfer operation, the + 33 status code reports the first error starting from the + 34 beginning of the transfer (i.e., the lowest byte count or + 35 lowest logical block number). The only exception is + 36 transfer commands that include a compare operation (i.e., + 37 read-compare and write-compare operations); errors in the + 38 original transfer may take precedence over errors during + 39 the compare operation. + + 40 If a "Forced Error" and some other error occur at the + 41 same point (same byte count or logical block number) + 42 within a transfer operation, the other error shall be + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-20 + End Messages 11 June 1992 + + + 1 reported. If a "Compare Error" and some other error that + 2 is not a "Forced Error" occur at the same point within a + 3 transfer operation, the other error shall be reported. + 4 If a "Forced Error" and a "Compare Error" both occur at + 5 the same point, and no other error occurs at that point, + 6 the "Compare Error" shall be reported. Otherwise, which + 7 error of multiple errors occurring at the same point + 8 should be reported is controller dependent. An + 9 alternative way of stating this is that "Forced Errors" + 10 are the error of last resort and that "Compare Errors" + 11 | are the error of second to last resort. See also + 12 | "Section 5.5, "Status and Event Codes." + + 13 byte count + + 14 In transfer command end messages, the number of bytes + 15 successfully transferred, counting from the start of the + 16 transfer to the first error (i.e., the lowest byte count + 17 or lowest logical block number with an error). Data that + 18 follows the first error is not counted, even if + 19 transferred successfully. The only exception is transfer + 20 commands that include a compare operation (i.e., + 21 read-compare and write-compare operations); errors in the + 22 original transfer may take precedence over errors during + 23 the compare operation. + + 24 The error identified by "status" must have actually + 25 occurred at the position identified by "byte count." The + 26 controller must have successfully transferred all data up + 27 to that point. If Data Error (subcode "Forced Error") + 28 status is returned for a READ command (addressed to a + 29 disk class device), the controller must have also + 30 transferred all the data contained in the block marked + 31 with forced error. Beyond this point the state of the + 32 transfer is undefined. None of the transfer may have + 33 been performed or attempted, all of it may have been + 34 attempted (with unknown success), or some parts may have + 35 been attempted and others not. + + 36 Again, the only exception to this is transfer commands + 37 that include a compare operation. Such a command makes + 38 two passes over the data; one for the original transfer + 39 and another for the compare operation. For most errors, + 40 there is no way to determine in which pass the error was + 41 detected. Therefore the only guarantee is that the + 42 original transfer was performed up to the point + 43 identified by "byte count" without detecting any errors. + 44 The compare operation may or may not have been performed + 45 up to that point. If a "Compare Error" is reported, then + 46 both the original transfer and the compare operation have + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-21 + End Messages 11 June 1992 + + + 1 been successfully performed up to the point identified by + 2 "byte count." The state of both the original transfer + 3 and the compare operation after that point, however, is + 4 undefined. This implies that the compare pass of a + 5 transfer command that includes a compare operation may be + 6 done for the entire transfer as a unit, block by block, + 7 or anywhere in between. + + 8 For disk class devices, the granularity of the byte count + 9 on errors (i.e., the resolution with which the point of + 10 error is identified) need not be any smaller than the + 11 volume's block size. That is, the byte count need only + 12 identify the block in which the error occurred, rather + 13 than the exact word or byte. In particular, the byte + 14 count returned with such errors as "Compare Errors" and + 15 "Host Buffer Access Errors" need only identify the block + 16 in which the error occurred, rather than the exact word + 17 or byte. Note that a block is identified by the number + 18 of the first byte in the block. Controllers may + 19 optionally provide finer granularity for the byte count + 20 field on errors. If an error is not reported, + 21 controllers shall return the exact byte count that was in + 22 the command message. + + 23 For tape class devices, the granularity of the byte count + 24 on errors shall be either one word (two bytes) or one + 25 byte. If an error is not reported, controllers shall + 26 return the exact byte count that was transferred. For + 27 host buffer access details see Section 4.11, "Host Buffer + 28 Access." + + 29 first bad block + + 30 In disk transfer command end messages, the logical block + 31 number of the first bad block (i.e., the bad block with + 32 the lowest logical block number) detected during the + 33 transfer that the host should replace. Only valid if the + 34 "Bad Block Reported" flag is set. Undefined (garbage) if + 35 the "Bad Block Reported" flag is clear. + + 36 5.5 Status And Event Codes + + 37 | Status and Event codes are essentially identical except for the + 38 | manner in which they are returned. The "status code" field in + 39 | returned in end messages and is used to report whether an + 40 | operation was successfully completed or, if it was not + 41 | successfully completed, what type of error occurred. The "event + 42 | code" field is returned in error log messages and has the + 43 | identical structure and encoding of a status code, but identifies + 44 | the specific error or event being reported by the error log + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-22 + Status And Event Codes 11 June 1992 + + + 1 | message. Errors that are reported in both an end message and an + 2 | error log message use identical values for the "status code" and + 3 | "event code" fields. The same value may not be used to report + 4 | one type of event as a "status code" and a different type of + 5 | event as an "event code". + + 6 | There are, however, certain codes that are used as "status only" + 7 | codes and others used as "event only" codes. For example, if a + 8 | command is issued to a unit that is Unit-Offline, the result is + 9 | reported as a "status only" code. It is not necessary to report + 10 | this information in an error log; it is up to the program that + 11 | initiated the command to take the appropriate action. If a WRITE + 12 | command is issued and a bad block is encountered and is + 13 | successfully replaced, the end message for the command will + 14 | return the appropriate status outcome, in addition to setting the + 15 | flags for bad block reported and error log message generated. + 16 | The Bad Block Replacement Attempted event code will never be + 17 | returned as a status code; it will only be returned as an event + 18 | code in an error log message. + + 19 The "status code" and the "event code" fields are divided into a + 20 5-bit major status code and an 11-bit status and/or event subcode + 21 arranged as follows: + + 22 15 0 + 23 +-----------------+---------+ + 24 | subcode | code | + 25 +-----------------+---------+ + + 26 The 5-bit major status code conveys the status information that + 27 hosts need for normal operation. Therefore the major status + 28 codes are a formal part of MSCP. All controllers shall return + 29 the same major status codes for similar situations. + + 30 The 11-bit subcode exists to specify the exact error or unusual + 31 situation encountered with very fine detail. As such it is + 32 primarily used for diagnostic purposes, and hosts should not need + 33 to examine it during normal operation. + + 34 Subcodes related to protocol or state errors are a formal part of + 35 MSCP. All controllers shall return the same subcodes for + 36 protocol or state errors. These subcodes are generally bit + 37 flags, allowing several causes of the major status code to be + 38 reported. + + 39 Subcodes related to controller and/or drive errors, however, + 40 shall be allowed to vary from one controller or drive to another. + 41 There is no requirement that the same subcodes be returned for + 42 similar drive or controller errors. These subcodes are generally + 43 specific values, corresponding to one specific event or error. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-23 + Status And Event Codes 11 June 1992 + + + 1 Each subcode shall have the same meaning whenever it is used. It + 2 is the use of a subcode that may vary (i.e., whether or not a + 3 specific controller returns that subcode), not its meaning. The + 4 defined subcodes are listed in Appendix B, "Status and Event Code + 5 Definitions." This list may expand (via an ECO to MSCP) whenever + 6 a new drive or controller type is introduced. + + 7 The major status codes that may be returned in end message + 8 "status code" fields are listed below along with the general use + 9 made of subcodes. The actual subcodes used are listed in + 10 Appendix B, "Status and Event Code Definitions." Those subcodes + 11 that are a formal part of MSCP are also listed in the + 12 descriptions of the commands that may return them. + + 13 Success + + 14 The command was successfully completed. This status code + 15 may also be returned, for some commands, if the intended + 16 effect of the command has already been accomplished + 17 (e.g., requesting a drive that isn't spinning to + 18 spin-down). The subcode consists of bit flags used to + 19 report various "alternate" forms of success. See the + 20 individual command descriptions for details. + + 21 The status code value associated with "Success" is, by + 22 definition, zero. Subcode value zero (i.e., no subcode + 23 bits set) is "Normal" success, and implies normal + 24 completion of a command. One subcode bit, the "Duplicate + 25 Unit Number" bit, is common to many commands. This bit, + 26 when set, implies that the unit is "Unit-Online" and the + 27 command succeeded, but that the unit has a duplicate unit + 28 number. The unit will become "Unit-Offline," due to the + 29 duplicate unit number, as soon as it ceases to be + 30 "Unit-Online." Other "Success" subcode bits are unique + 31 to a particular command, and are described under the + 32 individual command descriptions. + + 33 Invalid Command + + 34 Controllers detect and report two different types of + 35 invalid command errors. + + 36 The first type is called a protocol error. The + 37 controller reports a protocol error if during initial + 38 command message validation it finds: 1) a message format + 39 violation, 2) an MSCP version number mismatch, or 3) that + 40 a field contains a value that specifies an undefined + 41 operation. + + 42 The following are MSCP protocol errors: + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-24 + Status And Event Codes 11 June 1992 + + + 1 Invalid Message Length + + 2 The command message is too short to contain the + 3 parameters required by the command's opcode. + + 4 Invalid Modifiers + + 5 An undefined modifier bit is set or a modifier + 6 that is defined but not supported by that + 7 controller is set. See the descriptions of the + 8 History Log and Reuse Entry modifiers in the DISK + 9 COPY DATA, ERASE, and WRITE Commands, Sections + 10 6.7.1, 6.9.1, and 6.18.1. + + 11 Invalid MSCP Version + + 12 The "MSCP version" field of a SET CONTROLLER + 13 CHARACTERISTICS command is nonzero (see Section + 14 6.16.1, "SET CONTROLLER CHARACTERISTICS Command, + 15 Command Message Format"). + + 16 Invalid Opcode + + 17 See "opcode" field in Section 5.3, "Command + 18 Messages" for possible causes. + + 19 Invalid Operation + + 20 The "operation" field of an ACCESS NONVOLATILE + 21 MEMORY command or WRITE HISTORY MANAGEMENT + 22 command contains an illegal value (see Section + 23 7.3.1, "Multihost ACCESS NONVOLATILE MEMORY + 24 Command, Command Message Format" and Section + 25 6.19.1, "WRITE HISTORY MANAGEMENT Command, + 26 Command Message Format"). + + 27 {reserved field violations} + + 28 A "reserved" field in the command message + 29 contains a nonzero value. Note that "reserved" + 30 field checking is optional (see Section 5.2, + 31 "Reserved and Undefined Fields"). + + 32 Note also that modifiers not explicitly allowed + 33 for a command received by the server and any + 34 undefined controller flag and unit flag bits are + 35 considered to be "reserved" fields. + + 36 The second type is a parameter error. After determining + 37 through initial command message validation that the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-25 + Status And Event Codes 11 June 1992 + + + 1 command message has a well defined meaning, the + 2 controller reports a parameter error if some parameter is + 3 found to be outside the range allowed. Note that some + 4 parameter errors are detected during follow-on command + 5 message validation before command execution begins, while + 6 others may be detected afterwards. + + 7 The following are parameter errors: + + 8 Invalid Byte Count + + 9 See "byte count" field in Section 5.3.1, + 10 "Transfer Command Message Format" for possible + 11 causes. Log modifier in the ERASE and WRITE + 12 Commands, Sections 6.9.1 and 6.18.1. + + 13 Invalid CRN + + 14 A value of zero was supplied in the crn + 15 (connection reference number) field of a SET + 16 CONTROLLER CHARACTERISTICS or TERMINATE CLASS + 17 DRIVER/SERVER CONNECTION command message. + + 18 Invalid Display Text + + 19 The specified display text is invalid or not + 20 implemented for the specified display item and + 21 mode. For more information, see Section 6.8.3, + 22 "DISPLAY Command, Description." + + 23 Invalid Entry Locator + + 24 The value specified in the "entloc (entry + 25 locator)" field of a WRITE HISTORY MANAGEMENT, + 26 ERASE, WRITE, or DISK COPY DATA command is not + 27 within the limits of the server's "write history + 28 entry" set. See Section 6.19.3, "WRITE HISTORY + 29 MANAGEMENT Command, Description" for more detail. + + 30 Invalid Entry Id + + 31 The value specified in the "entry id" field of a + 32 WRITE HISTORY MANAGEMENT, ERASE, WRITE, or DISK + 33 COPY DATA command does not match the value in the + 34 "write history entry" identified by the entry + 35 locator or the host supplied a value of FFFF + 36 (hex) in the "entry id" field of a History Log + 37 modified write type command. See Section 6.19.3, + 38 "WRITE HISTORY MANAGEMENT Command, Description" + 39 for more detail. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-26 + Status And Event Codes 11 June 1992 + + + 1 Invalid Item + + 2 The specified display item code is not + 3 implemented and the "Must Be Implemented" + 4 modifier was set. For more information, see + 5 Section 6.8.3, "DISPLAY Command, Description." + + 6 Invalid Length + + 7 The "length" field of an ACCESS NONVOLATILE + 8 MEMORY command contains an odd value and the + 9 "operation" field requested a "Test and Set" + 10 operation (see Section 7.3.1, "Multihost ACCESS + 11 NONVOLATILE MEMORY Command, Command Message + 12 Format"). + + 13 Invalid Logical Block Count + 14 Invalid Src Unit Number + 15 Invalid Source Unit Identifier + 16 Invalid Destination LBN + 17 Invalid Source LBN + 18 Invalid Source Unit's Storage Subsystem Port Address + 19 Invalid Source Unit's Storage Subsystem System + 20 Address + + 21 See Section 6.7.1, "DISK COPY DATA Command, + 22 Command Message Format" for descriptions of these + 23 command message fields. + + 24 Invalid Logical Block Number + + 25 See "logical block number" field in Section + 26 5.3.1, "Transfer Command Message Format" for + 27 possible causes. + + 28 Invalid Mode + + 29 The specified display mode is not implemented for + 30 the specified display item and the "Must Be + 31 Implemented" modifier was set. For more + 32 information, see Section 6.8.3, "DISPLAY Command, + 33 Description." + + 34 Invalid Replacement Block Number + + 35 See Section 6.15.2, "REPLACE Command, End Message + 36 Format" for possible causes. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-27 + Status And Event Codes 11 June 1992 + + + 1 Invalid Unit Flags + + 2 The the host-settable unit flags specified in the + 3 "unit flags" field of an ONLINE command message + 4 issued to a unit that is already "Unit-Online" + 5 are different from those already in effect on the + 6 unit (see Sections 6.13, "ONLINE Command" and + 7 7.7, "Multihost ONLINE Command"). + + 8 Note that an unknown unit number does not constitute an + 9 invalid parameter or command. Unknown unit numbers are + 10 treated as if the unit were "Unit-Offline." + + 11 In order for hosts to clearly distinguish the two types + 12 of invalid commands controllers use two different end + 13 message formats. + + 14 Protocol errors are reported via the Invalid Command End + 15 Message. The Invalid Command End Message is largely an + 16 image of the invalid command message that was received + 17 from the host. In order to construct the Invalid Command + 18 End Message, the controller makes the following changes + 19 to the invalid command message that it received: + + 20 1. The controller stores the constant (OP.END), + 21 defined in Appendix A, "Opcode, Flag, and Offset + 22 Definitions," Table A-1, "Control Message + 23 Opcodes," in the "endcode" field, in order to + 24 flag this as an Invalid Command End Message. + 25 (Note that the command opcode is not added to + 26 OP.END.) + + 27 2. The controller may, at its option, either copy + 28 the end message "flags" field from the + 29 corresponding field in the invalid command or + 30 else clear the end message "flags" field. + + 31 3. The controller stores the "Invalid Command" + 32 status code with an appropriate subcode in the + 33 end message "status" field. The subcode is set + 34 equal to the byte offset, from the start of the + 35 command message, of the field in error (any one + 36 field, at the controller's option, if several are + 37 in error). Multibyte fields are identified by + 38 the offset to their lowest byte. Single byte + 39 fields positioned at an odd offset may be + 40 identified, at the controller's option, by either + 41 their actual offset or their offset minus one. + 42 That is, offsets may be truncated to an even + 43 value. Subcode zero is used to report that the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-28 + Status And Event Codes 11 June 1992 + + + 1 command message was too short to contain the + 2 parameters required by the command's opcode. + 3 Note that any value is valid for the field at + 4 offset zero, the "command reference number." + + 5 4. The controller may optionally truncate the + 6 parameter fields ("echoed command parameters") to + 7 some length convenient for the controller. + 8 Controllers should try to echo as much of the + 9 parameters as possible. + + + 10 The contents of any field copied from the invalid command + 11 are undefined if the command message was too short to + 12 contain that field. This primarily applies to the + 13 "command reference number" and "unit number" fields. + + 14 Note that the controller may, at its option, enter the + 15 "Controller-Available" state relative to the issuing host + 16 class driver after it returns the Invalid Command End + 17 Message (see Section 4.1, "Controller States"). + + 18 Parameter errors are reported via the invalid command's + 19 normal (i.e., opcode dependent, see "endcode" field in + 20 Section 5.4, "End Messages") end message. The "status" + 21 field is set equal to the "Invalid Command" status code, + 22 with the subcode set equal to the byte offset, relative + 23 to the start of the command message, of the parameter + 24 field in error. Multibyte fields are identified by the + 25 offset to their lowest byte. All other fields (byte + 26 count, unit characteristics, etc.) reflect the state of + 27 the execution of the command up to the point the invalid + 28 parameter was detected. + + 29 Command Aborted + + 30 The command was aborted by an ABORT command. The end + 31 message for the aborted command (i.e., the end message + 32 containing the "Command Aborted" status code) has the + 33 normal format for the command and all fields are valid. + 34 In particular, the "byte count" field identifies how far + 35 a transfer command was completed before it was aborted. + 36 The status of the transfer beyond the returned byte count + 37 is undefined. Subcodes are not used. + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-29 + Status And Event Codes 11 June 1992 + + + 1 Unit-Offline + + 2 The unit identified by the "unit number" field of the end + 3 message is in the "Unit-Offline" state. The subcode + 4 consists of bit flags that indicate why the unit is + 5 "Unit-Offline." Note that there may be several reasons + 6 for the unit being "Unit-Offline." If the subcode is + 7 zero, it implies that the unit is unknown -- i.e., the + 8 controller knows of no unit with the specified unit + 9 number. + + 10 Unit-Available + + 11 The unit identified by the "unit number" field of the end + 12 message is in the "Unit-Available" state. The subcode is + 13 zero, except when "Exclusive Access" of the unit was + 14 denied. In that case the "Already In Use" subcode is + 15 returned (see the descriptions of the AVAILABLE, ONLINE, + 16 and SET UNIT CHARACTERISTICS commands in Chapter 7, + 17 "Multihost Support" for more detail). + + 18 Media Format Error + + 19 Only returned by the ONLINE command for disk class + 20 devices. The volume mounted on the unit appears to be + 21 formatted incorrectly, so that it must be reformatted + 22 (and all data lost) before it may be used. This error is + 23 also returned if the volume is formatted with 576 byte + 24 sectors and the controller only supports 512 byte + 25 sectors. Note that the volume may only "appear" to be + 26 formatted incorrectly; the typical cause of this error is + 27 a fault in the drive's read/write electronics. If this + 28 is the case, the volume can usually be successfully + 29 accessed on another drive. + + 30 Whenever they return this error code controllers shall + 31 treat the unit as if an AVAILABLE command with the + 32 "Spin-down" modifier set had been issued for it. The + 33 unit is therefore always in the "Unit-Available" state + 34 with AVAILABLE attention messages suppressed until a + 35 human operator changes the volume or spins-up the unit. + 36 The subcode reports which integrity check the volume + 37 failed; it is volume format, and therefore drive type, + 38 dependent. + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-30 + Status And Event Codes 11 June 1992 + + + 1 Write Protected + + 2 The unit identified by the "unit number" field of the end + 3 message is write protected and the command required that + 4 data be written onto the drive. The subcode consists of + 5 bit flags indicating the reasons why the unit is write + 6 protected. + + 7 Compare Error + + 8 A COMPARE HOST DATA command, a read compare operation, or + 9 a write compare operation found different data in the + 10 host buffer and the unit identified by the "unit number" + 11 field of the end message. The subcode is always zero. + + 12 Data Error + + 13 Invalid or uncorrectable data was obtained from a drive, + 14 as determined by internal error detecting or correcting + 15 codes. The subcode is used to report the exact error + 16 detected. Subcode zero is used for "Forced Errors." All + 17 errors caused by the "Force Error" modifier shall be + 18 reported with subcode zero. + + 19 Host Buffer Access Error + + 20 The controller encountered an error when attempting to + 21 access a buffer in host memory. The subcode is used to + 22 report the exact error encountered. This status code is + 23 also returned whenever the command's buffer descriptor or + 24 byte count violate any communications mechanism dependent + 25 restrictions. + + 26 Note that this status code is NOT used to report errors + 27 encountered when transferring command, end, attention, or + 28 error log messages between the controller and a host. + 29 Such errors are reported by terminating the connection + 30 between the class driver and MSCP server. The mechanism + 31 for reporting such errors to the host's error log is + 32 communications mechanism dependent. + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-31 + Status And Event Codes 11 June 1992 + + + 1 Controller Error + + 2 The controller encountered an internal controller error. + 3 The subcode is used to report the exact error + 4 encountered. An internal controller error is reported as + 5 a "Controller Error" if and only if the controller has + 6 reasonable grounds to trust its sanity and expects to + 7 complete, either successfully or with an appropriate + 8 error status code, all of its outstanding commands. All + 9 more severe controller errors are reported by terminating + 10 the connection between the controller's MSCP server and + 11 the host class driver. This is in addition, of course, + 12 to attempting to generate an error log message. + + 13 Subcode zero of this status code is reserved for host or + 14 non-MSCP entity (e.g., a controller's port driver) + 15 detected command timeouts. It is never generated by an + 16 MSCP server. All other subcodes are controller + 17 dependent. + + 18 Note that some controller errors may be reported using + 19 other error codes if an internal controller error causes + 20 the controller to misdiagnose the error. + + 21 Drive Error + + 22 The controller discovered an error within a drive. Such + 23 errors are typically, but not always, mechanical in + 24 nature, since most nonmechanical errors are reported as + 25 "Data Errors." The subcode is used to report the exact + 26 error encountered. + + 27 In many cases a "Drive Error" will indicate that the unit + 28 is broken or inoperative. If this occurs, the "Drive + 29 Error" should be reported once and the unit should + 30 subsequently be reported as being "Unit-Offline" due to + 31 being inoperative. + + 32 Invalid Parameter + + 33 The controller encountered an invalid parameter value for + 34 a parameter that is not passed directly in the command + 35 message. Invalid values in fields of a command message + 36 are reported with the "Invalid Command" status code. + 37 "Invalid Parameter" typically reports an invalid value in + 38 a field in a host-supplied buffer. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-32 + Status And Event Codes 11 June 1992 + + + 1 The status codes that may be returned for a specific command are + 2 command (opcode) dependent. The status codes that may be + 3 returned for each command and any special meaning that they have + 4 specific to the command are listed in the command descriptions + 5 contained in Chapter 6, "Minimal MSCP Command Set" and Chapter 7, + 6 "Multihost Support." Note that the format of a command's end + 7 message is solely determined by its opcode. The status code + 8 returned in the end message does not affect the end message's + 9 format. The only exception is the Invalid Command End Message + 10 (see "Invalid Command" status above), which contains a special + 11 endcode. + + 12 | "Event Only" event codes and subcodes shall only be used in error + 13 | log or informational messages and shall never be used as status + 14 | codes reported in end messages. The currently defined "Event + 15 | Only" event codes are: + + 16 | Bad Block Replacement Attempted + + 17 | This event code is used after every attempt (by the + 18 | controller or host) to replace a bad block, regardless of + 19 | the success or failure of that attempt (see Section + 20 | 5.8.7, "BAD BLOCK REPLACEMENT ATTEMPT Error Log Format"). + 21 | For details of bad block replacement, see Chapter 8, + 22 | "Controller Initiated Bad Block Replacement" and the + 23 | Digital Storage Architecture Disk Format (DSDF) + 24 | specification. + + 25 | Informational Log + + 26 | Informational Log messages are used by the server to + 27 | report such things as statistics or error log summary + 28 | information that may have been compiled in the device. + 29 | In all error log messages with this event code, the + 30 | "Informational" error log message flag (see Section + 31 | 5.9.2, "Generic Error Log Message Format") should + 32 | normally be set. + + 33 5.6 Controller Flags + + 34 Controllers maintain a set of bit flags, collectively known as + 35 the "controller flags," which represent the controller's + 36 operating characteristics. Two different types of controller + 37 flags are used to accommodate two different types of controller + 38 characteristics. Host-settable controller flags allow hosts to + 39 enable or disable the host selectable operating characteristics + 40 (e.g., Enable Attention Messages) supported by all controllers. + 41 Controllers use non-host-settable controller flags to indicate + 42 the presence or absence of implementation dependent optional + 43 functions (e.g., Multihost Support). The currently defined + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-33 + Controller Flags 11 June 1992 + + + 1 controller flags are described later in this section. + + 2 The SET CONTROLLER CHARACTERISTICS command is used to modify the + 3 host-settable controller flags according to the value supplied in + 4 the "controller flags" field of the command message. If a + 5 host-settable flag is set the controller enables the + 6 corresponding host selectable operating characteristic. A clear + 7 flag causes the controller to disable it. Controllers shall + 8 always ignore the values supplied for the non-host-settable + 9 controller flags. All host-settable controller flags are, by + 10 default, clear (i.e., all host selectable operating + 11 characteristics are disabled) whenever a class driver first + 12 becomes "Controller-Online" to an MSCP server. + + 13 The controller dependent values of the non-host-settable + 14 controller flags, as well as the current values of the + 15 host-settable controller flags, are returned in the "controller + 16 flags" field of the SET CONTROLLER CHARACTERISTICS command's end + 17 message. A controller shall set only those non-host-settable + 18 controller flags for the corresponding optional functions it + 19 supports, if any. + + 20 Controllers that provide Multihost Support shall maintain, and + 21 operate according to the setting of, a separate set of + 22 host-settable controller flags for each host class driver/MSCP + 23 server connection established. Each class driver is expressly + 24 permitted to specify different settings for the host-settable + 25 controller flags and as a result realize different controller + 26 operation. The non-host-settable controller flags remain fixed, + 27 and are therefore common to all class drivers of the same device + 28 class. + + 29 The host-settable controller flags are as follows: + + 30 Enable Attention Messages + + 31 When this flag is set the controller shall send attention + 32 messages to this host. If this flag is clear the + 33 controller discards attention messages. Note that this + 34 flag is applicable to all attention messages, regardless + 35 of type. + + 36 Enable Miscellaneous Error Log Messages + + 37 When this flag is set the controller shall send error log + 38 messages that do not relate to a specific command to this + 39 host. If this flag is clear the controller discards any + 40 such error logs. + + 41 Enable Other Hosts' Error Log Messages + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-34 + Controller Flags 11 June 1992 + + + 1 When this flag is set error log messages that relate to + 2 commands issued by other hosts should be sent to this + 3 host. Controllers that provide Multihost Support shall + 4 implement this characteristic separately for each host + 5 class driver connected. Even though this operation is + 6 only useful in a multihost environment, controllers that + 7 do not provide Multihost Support shall still honor this + 8 flag. That is, the flag may not be treated as reserved + 9 and the current state as set by the host shall be + 10 returned in the end message field. + + 11 Enable This Host's Error Log Messages + + 12 When this flag is set error log messages that relate to + 13 commands issued by this host should be sent to this host. + 14 If this flag is clear the controller discards those error + 15 logs, except in a multihost environment where another + 16 host has set the "Enable Other Hosts' Error Log Messages" + 17 flag. + 18 The non-host-settable controller flags are as follows: + + 19 Controller Initiated Bad Block Replacement + + 20 This flag shall be set if and only if the controller + 21 supports Controller Initiated Bad Block Replacement on + 22 all disk drives that can be connected to the controller. + 23 If this flag is set the host will never have to perform + 24 bad block replacement for disks accessed via this + 25 controller. Note that controllers may also support + 26 Controller Initiated Bad Block Replacement on certain + 27 individual disk drives and not others. In that case this + 28 flag shall be returned clear; the setting of the + 29 Controller Initiated Bad Block Replacement unit flag + 30 (described in Section 5.7, "Unit Flags") determines + 31 whether or not the host must perform bad block + 32 replacement on a particular disk drive. Note also that + 33 that unit flag shall always be returned set if this flag + 34 is returned set. + + 35 Support of Controller Initiated Bad Block Replacement, + 36 either on a single disk drive or all disk drives, is a + 37 controller implementation dependent option. See Chapter + 38 8, "Controller Initiated Bad Block Replacement" for + 39 complete details. + + 40 Local Disk Copy Data + + 41 This flag shall be returned set if and only if the + 42 controller supports interdevice transfer of data, via the + 43 DISK COPY DATA command (see Section 6.7), between all the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-35 + Controller Flags 11 June 1992 + + + 1 disk drives connected to the controller. + + 2 Support of Local Disk Copy Data is an implementation + 3 dependent option. Local Disk Copy Data may be + 4 implemented by controllers that provide Multihost Support + 5 as well as those that do not. However, for controllers + 6 that provide Multihost Support, support of Remote Disk + 7 Copy Data (see the Remote Disk Copy Data flag below) is + 8 preferred. + + 9 Controllers that implement Local Disk Copy Data shall + 10 also implement Controller Initiated Bad Block Replacement + 11 on all disk drives connected to them (see Controller + 12 Initiated Bad Block Replacement flag above). + + 13 Multihost Support + + 14 This flag shall be returned set if and only if the + 15 controller supports simultaneous access, by multiple + 16 hosts, to all drives (disk and tape) connected to the + 17 controller. See Chapter 7, "Multihost Support." + + 18 Remote Disk Copy Data + + 19 This flag shall be returned set if and only if the + 20 controller supports interdevice transfer of data, via the + 21 DISK COPY DATA command (see Section 6.7), between disk + 22 drives connected to itself and disk drives connected to + 23 another storage subsystem that is connected to the same + 24 communications mechanism. + + 25 Support of Remote Disk Copy Data is an implementation + 26 dependent option. Remote Disk Copy Data can only be + 27 implemented by controllers that also provide Multihost + 28 Support. + + 29 Controllers that implement Remote Disk Copy Data shall + 30 also implement Local Disk Copy Data (see Local Disk Copy + 31 Data flag above) and Controller Initiated Bad Block + 32 Replacement (see Controller Initiated Bad Block + 33 Replacement flag above) on all disk drives connected to + 34 them. + + 35 Restricted DISK COPY DATA Operations + + 36 This flag shall be returned set if and only if the + 37 controller does not support any of: + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-36 + Controller Flags 11 June 1992 + + + 1 o Local DISK COPY DATA between units with unlike + 2 geometries + + 3 o Local DISK COPY DATA where the source and destination + 4 LBNs differ + + 5 o DISK COPY DATA where the source and destination are + 6 the same unit + + + 7 Note that controllers either support all of the above + 8 operations and return this flag clear or support none of + 9 these options and return the flag set. + + 10 Write History Logging Support + + 11 This flag shall be returned set if and only if the + 12 controller supports "write history logging" as described + 13 in Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 14 Description." "Write history logging" was defined + 15 primarily for the purpose of assisting in the operation + 16 of host based volume shadowing implementations. Note + 17 that Write History Logging support includes support of + 18 the TERMINATE CLASS DRIVER/SERVER CONNECTION command. + + 19 576 Byte Sectors + + 20 This flag shall be set if and only if the controller + 21 supports disks formatted with 576 byte sectors as well as + 22 disks formatted with 512 byte sectors. Note that all + 23 controllers that support disk class devices must support + 24 disks formatted with 512 byte sectors. + + 25 Refer to Appendix A, "Opcode, Flag, and Offset Definitions," + 26 Table A-4, "Controller Flags" for the values assigned to the + 27 currently defined host-settable and non-host-settable controller + 28 flags. Those bits in the "controller flags" field that are not + 29 defined as controller flags are reserved, and shall be treated in + 30 accordance with the requirements for reserved fields described in + 31 Section 5.2, "Reserved and Undefined Fields." + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-37 + Unit Flags 11 June 1992 + + + 1 5.7 Unit Flags + + 2 For each unit connected to a controller, the controller maintains + 3 a set of bit flags, collectively known as the "unit flags," which + 4 represent the unit's operating characteristics. Two different + 5 types of unit flags are used to accommodate two different types + 6 of unit characteristics. Host-settable unit flags allow hosts to + 7 enable or disable certain host selectable operating + 8 characteristics (e.g., Compare Reads). The non-host-settable + 9 unit flags are used to indicate certain physical or logical + 10 characteristics (e.g., 576 Byte Sectors, Write Protect) as well + 11 as the presence or absence of certain controller implementation + 12 dependent optional functions (e.g., Controller Initiated Bad + 13 Block Replacement). The currently defined unit flags are + 14 described later in this section. Except as noted in those + 15 descriptions all controllers shall fully support all + 16 non-host-settable unit flags on all units. + + 17 The ONLINE and SET UNIT CHARACTERISTICS commands are used to + 18 modify the host-settable unit flags for the unit identified in + 19 the "unit" field of the command message, according to the value + 20 supplied in the "unit flags" field of the command message. If a + 21 host-settable unit flag is set the controller enables the + 22 corresponding host selectable operating characteristic for the + 23 unit. A clear flag causes the controller to disable it. Note + 24 that the state of the unit (Offline, Available, or Online) when + 25 the command is received affects the setting or clearing of the + 26 unit flags. See the descriptions of the ONLINE and SET UNIT + 27 CHARACTERISTICS commands in Chapters 6, "Minimal MSCP Command + 28 Set" and 7, "Multihost Support" for complete details. Except as + 29 noted in the individual flag descriptions below, controllers + 30 shall ignore the values supplied for the non-host-settable unit + 31 flags. + + 32 The non-host-settable unit flags, as well as the current values + 33 of the host-settable unit flags, are returned in the "unit flags" + 34 field of the ONLINE, GET UNIT STATUS, and SET UNIT + 35 CHARACTERISTICS command end messages and the AVAILABLE Attention + 36 message. Many unit flags, including all host-settable unit + 37 flags, are only valid when the unit is "Unit-Online." The values + 38 returned for such unit flags are undefined if the unit is + 39 "Unit-Offline" or "Unit-Available." A few non-host-settable unit + 40 flags are valid when the unit is "Unit-Available" and during + 41 certain "Unit-Offline" substates. These flags are identified in + 42 the individual flag descriptions below. + + 43 Controllers that provide Multihost Support maintain only one set + 44 of host-settable unit flags for a particular unit regardless of + 45 the number of hosts (class drivers) that have brought the unit + 46 into the "Unit-Online" state. The unit will operate in an + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-38 + Unit Flags 11 June 1992 + + + 1 identical manner (according to the setting of the host-settable + 2 unit flags) for each host that has brought the unit + 3 "Unit-Online." Any host may alter the setting of the + 4 host-settable unit flags (for itself and all others) only via the + 5 SET UNIT CHARACTERISTICS command and only after bringing the unit + 6 "Unit-Online." Attempts to change the host-settable unit flags + 7 from their current setting via an ONLINE command (regardless of + 8 whether the unit was already "Unit-Online" to the issuing host) + 9 will cause the ONLINE command to be rejected as an "Invalid + 10 Command" ("invalid unit flag" parameter error. See "Invalid + 11 Command" status in Section 5.5, "Status and Event Codes"). + + 12 The unit characteristics flags are as follows: + + 13 Compare Reads + + 14 A host-settable characteristic; set if all read transfers + 15 should be verified with a compare operation. Equivalent + 16 to specifying the "Compare" modifier on all READ + 17 commands. See Section 4.15, "Compare Operations" for + 18 complete details. + + 19 Compare Writes + + 20 A host-settable characteristic; set if all write + 21 transfers should be verified with a compare operation. + 22 Equivalent to specifying the "Compare" modifier on all + 23 WRITE commands. See Section 4.15, "Compare Operations" + 24 for complete details. + + 25 Controller Initiated Bad Block Replacement + + 26 A non-host-settable characteristic; set if the controller + 27 will perform bad block replacement for this disk drive + 28 (unit), clear if the host must perform bad block + 29 replacement for this disk drive. Note that controllers + 30 may support Controller Initiated Bad Block Replacement on + 31 all or some disk drives connected to it. If Controller + 32 Initiated Bad Block Replacement is provided for all disk + 33 drives this flag and the Controller Initiated Bad Block + 34 Replacement controller flag (described in Section 5.6, + 35 "Controller Flags") shall both be set. + + 36 Note that a host disk class driver shall check if the + 37 "Controller Initiated Bad Block Replacement" unit flag is + 38 set or clear after bringing a unit "Unit-Online." If it + 39 is clear (implying that the host is performing bad block + 40 replacement), then the class driver shall invoke a + 41 process that will access the unit's Replacement Control + 42 Table to determine if a bad block replacement operation + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-39 + Unit Flags 11 June 1992 + + + 1 has been partially performed or if the unit must be write + 2 protected. The details of this check and its + 3 consequences are described in the Digital Storage + 4 Architecture Disk Format specification (DSDF) in the + 5 section on "Host Initiated Bad Block Replacement." + 6 Controllers that support Controller Initiated Bad Block + 7 Replacement perform these checks themselves. + + 8 See Chapter 8, "Controller Initiated Bad Block + 9 Replacement" for complete details. + + 10 Exclusive Access + + 11 A non-host-settable characteristic; set if this unit is + 12 under the "Exclusive Access" of a particular host. That + 13 is, the unit although in a multihost environment and + 14 normally accessible by multiple hosts is now only + 15 accessible by the one host that requested and was granted + 16 exclusive access of the unit via an AVAILABLE, ONLINE or + 17 SET UNIT CHARACTERISTICS command. See the descriptions + 18 of those commands in Chapter 7, "Multihost Support." + + 19 This characteristic shall be fully supported by + 20 controllers that provide Multihost Support. + + 21 Removable Media + + 22 A non-host-settable characteristic; set if this unit has + 23 removable media. + + 24 This characteristic shall be fully supported by all + 25 controllers that support units with removable media. + + 26 Valid whenever the controller can determine the unit's + 27 characteristics. See the descriptions of the GET UNIT + 28 STATUS, ONLINE, and SET UNIT CHARACTERISTICS command end + 29 messages contained in Chapters 6, "Minimal MSCP Command + 30 Set" and 7, "Multihost Support" for complete details. + + 31 Write History Logging Support + + 32 A non-host-settable characteristic; shall be returned set + 33 if and only if the controller supports "write history + 34 logging" for this unit as described in Section 6.19.3, + 35 "WRITE HISTORY MANAGEMENT Command, Description." See the + 36 description of the Write History Logging Support + 37 controller flag in Section 5.6, "Controller Flags." + + 38 Write Protect (data safety) + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-40 + Unit Flags 11 June 1992 + + + 1 A non-host-settable characteristic; set by the controller + 2 whenever some condition in the unit or volume prevents + 3 reliable modification of data on the volume. Possible + 4 causes include: + + + 5 o An incomplete bad block replacement. + + 6 o An invalid Replacement Control Table (RCT). + + 7 o The unit is only capable of reading the volume's + 8 format (e.g., a single-density volume in a + 9 double-density drive). + + 10 The consequences of Write Protection are described in + 11 Section 4.14, "Write Protection." + + 12 This characteristic shall be fully supported if the + 13 controller provides Controller Initiated Bad Block + 14 Replacement support or supports units capable of only + 15 reading a volume's format (e.g., a single-density volume + 16 in a double-density drive). + + 17 Write Protect (hardware) + + 18 A non-host-settable characteristic; set if the unit's + 19 write protect mechanism is activated, causing the unit to + 20 be Hardware Write Protected. The consequences of Write + 21 Protection are described in Section 4.14, "Write + 22 Protection." + + 23 Write Protect (software) + + 24 Normally a non-host-settable characteristic; set if the + 25 unit is "Software" Write Protected. A host-settable + 26 characteristic if the "Enable Set Write Protect" command + 27 modifier is set in the ONLINE or SET UNIT CHARACTERISTICS + 28 command. If the "Enable Set Write Protect" command + 29 modifier is set the controller enables or disables + 30 "Software" Write Protection according to the state (set + 31 or clear, respectively) of the "Write Protect (software)" + 32 flag in the "unit flags" field. If the "Enable Set Write + 33 Protect" command modifier is clear the controller ignores + 34 the "Write Protect (software)" flag in the "unit flags" + 35 field; the state of "Software" Write Protection remains + 36 unchanged. The consequences of Write Protection are + 37 described in Section 4.14, "Write Protection." + + 38 576 Byte Sectors + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-41 + Unit Flags 11 June 1992 + + + 1 Normally a non-host-settable characteristic; set if the + 2 disk volume mounted on the unit has 576 byte sectors. A + 3 host-settable characteristic if the controller supports + 4 576 byte sectors and the "Ignore Media Format Error" + 5 command modifier is set in the ONLINE command (see + 6 Section 6.13.1, "ONLINE Command, Command Message Format" + 7 for complete details). + + 8 This characteristic shall be fully supported if the + 9 controller supports disks formatted with either 512 or + 10 576 byte sectors. If the controller only supports disks + 11 formatted with 512 byte sectors, the controller shall + 12 ignore any value the host specifies for this flag and + 13 always return it clear. Note that all controllers that + 14 support disk class devices shall support disks formatted + 15 with 512 byte sectors. + + 16 Refer to Appendix A, "Opcode, Flag, and Offset Definitions," + 17 Table A-5, "Unit Flags" for the values assigned to the currently + 18 defined host-settable and non-host-settable unit flags. Those + 19 bits in the "unit flags" field that are not defined as unit flags + 20 are reserved, and shall be treated in accordance with the + 21 requirements for reserved fields described in Section 5.2, + 22 "Reserved and Undefined Fields." + + 23 5.8 Attention Messages + + 24 MSCP servers report duplicate unit number conditions and the + 25 availability of units spontaneously to hosts via attention + 26 messages. Hosts may enable or disable attention messages via the + 27 setting of the "Enable Attention Messages" flag in the + 28 "controller flags" field of the SET CONTROLLER CHARACTERISTICS + 29 command (see Section 5.6, "Controller Flags"). Note that + 30 attention messages are flow controlled as described in Section + 31 3.2, "Flow Control" and associated subsections. Hosts shall + 32 discard any attention messages that they do not recognize. + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-42 + Attention Messages 11 June 1992 + + + 1 The generic attention message format is as follows: + + 2 31 0 + 3 +--------------------------------+ + 4 | reserved | + 5 +---------------+----------------+ + 6 | reserved | unit number | + 7 +---------------+-------+--------+ + 8 | reserved | rsvd |atncode | + 9 +---------------+-------+--------+ + 10 | | + 11 / parameters / + 12 / / + 13 | | + 14 +--------------------------------+ + + 15 The fields in the generic attention message are as follows: + + 16 unit number + + 17 Identifies the specific unit within the device class to + 18 which the attention message applies. This value is the + 19 binary equivalent of the decimal unit number displayed by + 20 the unit select mechanism. + + 21 atncode + + 22 Identifies the attention message type. The atncode + 23 implicitly specifies the length and format of the + 24 message, including the interpretation of any parameters + 25 that are present. + + 26 Appendix A, "Opcode, Flag, and Offset Definitions," Table + 27 A-1, "Control Message Opcodes," lists the valid atncodes + 28 and their meanings. + + 29 Appendix A, "Opcode, Flag, and Offset Definitions," Table A-7, + 30 "End and Attention Message Offsets" defines the preferred + 31 mnemonic and numeric value of the offset within the attention + 32 message of the various attention message parameter fields, as + 33 well as the size of each field. + + 34 The following sections describe the specific attention message + 35 formats. + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-43 + Attention Messages 11 June 1992 + + + 1 5.8.1 ACCESS PATH Attention Message + + 2 5.8.1.1 Attention Message Format + + 3 31 0 + 4 +--------------------------------+ + 5 | reserved | + 6 +---------------+----------------+ + 7 | reserved | unit number | + 8 +---------------+-------+--------+ + 9 | reserved | rsvd |atncode | + 10 +---------------+-------+--------+ + + 11 | The fields in the ACCESS PATH attention message are as follows: + + 12 unit number + + 13 Identifies the unit for which an alternate access path is + 14 being reported. + + 15 atncode + + 16 See Section 5.8, "Attention Messages." + + + 17 5.8.1.2 Description + + 18 MSCP servers use this attention message to report alternate + 19 access paths to multiaccess units. This message reports that the + 20 specified unit is potentially accessible via the sending MSCP + 21 server -- i.e., it would be "Unit-Available" if it and all units + 22 that share its access path ceased being "Unit-Online" or under + 23 "Exclusive Access" via another controller. The specific event + 24 that causes an MSCP server to send this attention message is the + 25 receipt, by the controller to which the unit is "Unit-Online" or + 26 is under "Exclusive Access," of a DETERMINE ACCESS PATHS command. + 27 This attention message is sent to all class drivers that are + 28 "Controller-Online" to the MSCP server and have enabled attention + 29 messages. See Section 4.16.1, "Multiaccess Drives," for more + 30 information. + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-44 + Attention Messages 11 June 1992 + + + 1 5.8.2 AVAILABLE Attention Message + + 2 5.8.2.1 Attention Message Format + + 3 31 0 + 4 +--------------------------------+ + 5 | reserved | + 6 +---------------+----------------+ + 7 | reserved | unit number | + 8 +---------------+-------+--------+ + 9 | reserved | rsvd |atncode | + 10 +---------------+-------+--------+ + 11 | unit flags | multiunit code | + 12 +---------------+----------------+ + 13 | undefined | + 14 +--------------------------------+ + 15 | | + 16 +--- unit identifier ---+ + 17 | | + 18 +--------------------------------+ + 19 | media type identifier | + 20 +---------------+----------------+ + + 21 | The fields in the AVAILABLE attention message are as follows: + + 22 unit number + + 23 Identifies the unit that just became "Unit-Available." + + 24 atncode + + 25 See Section 5.8, "Attention Messages." + + 26 multiunit code + 27 unit flags + 28 unit identifier + 29 media type identifier + + 30 Identical to the corresponding fields in the GET UNIT + 31 STATUS or SET UNIT CHARACTERISTICS command end messages. + 32 These fields shall be valid as defined for the unit being + 33 "Unit-Available," regardless of the actual state of the + 34 unit when the message is sent. That is, the "multiunit + 35 code," "unit identifier," and "media type identifier" + 36 shall all be valid and the "Removable Media" unit flag + 37 shall be valid. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-45 + Attention Messages 11 June 1992 + + + 1 5.8.2.2 Description + + 2 An MSCP server sends an AVAILABLE attention message to a + 3 "Controller-Online" class driver when a unit asynchronously + 4 becomes "Unit-Available" to that class driver, unless AVAILABLE + 5 attention messages have been suppressed for that unit by an + 6 AVAILABLE command with the "Spin-down" modifier or by an error or + 7 other condition with similar side effects. Changes to the + 8 "Unit-Available" state due to the class driver itself issuing an + 9 AVAILABLE command are synchronous. All other changes to + 10 "Unit-Available" are asynchronous. See Section 4.3, "Unit + 11 States." + + 12 The actual sending of an AVAILABLE attention message may be + 13 delayed for an arbitrarily long time, due to communications + 14 mechanism flow control, from the time that the unit actually + 15 becomes "Unit-Available." The message shall not be sent if the + 16 class driver ceases to be "Controller-Online" during this delay. + 17 The message shall be sent anyway if the unit, or any unit with + 18 which it shares an access path, becomes "Unit-Online" or under + 19 "Exclusive Access" via another controller during this delay. The + 20 message may or may not be sent, at the controller's option, if + 21 the unit ceases to be "Unit-Available" for any other reason + 22 during this delay. + + 23 Note that, due to these delays, it is possible for an AVAILABLE + 24 attention message to be received after the class driver has + 25 already brought the unit "Unit-Online" or under "Exclusive + 26 Access." Therefore class drivers shall not use AVAILABLE + 27 attention messages to flag such units as having become + 28 "Unit-Available." The proper procedure is to issue a command, + 29 such as a GET UNIT STATUS, to a "Unit-Online" unit for which an + 30 AVAILABLE attention message has been received, and only flag the + 31 unit as having become "Unit-Available" if the command returns + 32 that status code. + + 33 AVAILABLE attention messages are not sent for units that are + 34 already "Unit-Available" when a class driver enables attention + 35 messages. Class drivers that need to be aware of all + 36 "Unit-Available" units shall enable attention messages, then scan + 37 all units via the GET UNIT STATUS command with the "Next Unit" + 38 modifier set to locate all units that are already + 39 "Unit-Available." All units that subsequently become + 40 "Unit-Available" will be reported with an AVAILABLE attention + 41 message. + + 42 An MSCP server may send redundant or erroneous AVAILABLE + 43 attention messages at any time. The frequency of such messages + 44 shall be low enough that they do not represent a significant + 45 overhead for either hosts or the communications mechanism. The + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-46 + Attention Messages 11 June 1992 + + + 1 information contained in such messages (unit number, unit + 2 identifier, media type identifier, etc.) shall correspond to an + 3 actual, physical unit that is potentially accessible via that + 4 MSCP server (i.e., connected to the controller), although the + 5 unit need not be "Unit-Available." Note that hosts must be able + 6 to handle seemingly erroneous AVAILABLE attention messages in any + 7 case, since the unit's state may change before the host can act + 8 on an otherwise correct message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-47 + Attention Messages 11 June 1992 + + + 1 5.8.3 DUPLICATE UNIT NUMBER Attention Message + + 2 5.8.3.1 Attention Message Format + + 3 31 0 + 4 +--------------------------------+ + 5 | reserved | + 6 +---------------+----------------+ + 7 | reserved | unit number | + 8 +---------------+-------+--------+ + 9 | reserved | rsvd |atncode | + 10 +---------------+-------+--------+ + + 11 The fields in the DUPLICATE UNIT NUMBER attention message are as + 12 follows: + + 13 unit number + + 14 Identifies the unit number that is duplicated on two or + 15 more units. + + 16 atncode + + 17 See Section 5.8, "Attention Messages." + + 18 5.8.3.2 Description + + 19 An MSCP server sends DUPLICATE UNIT NUMBER attention messages to + 20 notify hosts that two or more units of the same device class have + 21 the same unit number. This allows the hosts to complain to an + 22 operator, who can correct the condition. The DUPLICATE UNIT + 23 NUMBER attention messages are sent to all hosts that are + 24 "Controller-Online" and have enabled attention messages. See + 25 Section 4.4, "Unit Numbers," for a detailed discussion of the + 26 handling of duplicate unit numbers. Note that a DUPLICATE UNIT + 27 NUMBER attention message is sent regardless of whether or not one + 28 of the units is "Unit-Online" or under "Exclusive Access." + + 29 The actual sending of a DUPLICATE UNIT NUMBER attention message + 30 may be delayed for an arbitrarily long time, due to + 31 communications mechanism flow control, from the time that the + 32 controller first detects the duplicate unit number. The message + 33 shall not be sent if the class driver ceases to be + 34 "Controller-Online" during this delay. The message may or may + 35 not be sent, at the controller's option, if the duplicate unit + 36 number condition disappears during this delay. + + 37 DUPLICATE UNIT NUMBER attention messages are not sent for + 38 duplicate unit number conditions that already exist when a class + 39 driver enables attention messages. Class drivers that need to be + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-48 + Attention Messages 11 June 1992 + + + 1 aware of all duplicate unit number conditions shall enable + 2 attention messages, then scan all units via the GET UNIT STATUS + 3 command with the "Next Unit" modifier set to locate all duplicate + 4 unit numbers. All duplicate unit numbers that the controller + 5 subsequently detects will be reported with a DUPLICATE UNIT + 6 NUMBER attention message. + + 7 An MSCP server may send redundant DUPLICATE UNIT NUMBER attention + 8 messages. The frequency of such messages shall be low enough + 9 that they do not represent a significant overhead for either + 10 hosts or the communications mechanism. Furthermore, the + 11 duplicate unit number condition being reported must actually + 12 exist at the time the MSCP server decides to generate the + 13 DUPLICATE UNIT NUMBER attention message. Note, however, that the + 14 duplicate unit number condition may have disappeared by the time + 15 the host receives or acts upon the message. + + 16 5.9 Error Log Messages + + 17 MSCP controllers report errors and unusual occurrences in two + 18 ways: end messages and error log messages. Unrecoverable errors + 19 are reported in the end message of the command that encountered + 20 the error. Such errors should be reported back to the program + 21 that initiated the command so that it can take appropriate + 22 action. Additionally, all "significant" errors are reported in + 23 error log messages so that they can be recorded in the host's + 24 error log for eventual use by Field Service. The definition of + 25 what constitutes a "significant" error is controller and/or + 26 device specific. In general, anything that would be of interest + 27 to Field Service is a "significant" error. The errors reported + 28 by error log messages may be either recoverable or unrecoverable. + 29 Note that hosts should not record errors reported in end messages + 30 in the error log. If the error is "significant," a separate + 31 error log message will be generated. + + 32 When a host receives an error log message, the host port driver + 33 passes the class driver the error log message text and the length + 34 of the error log message. In addition, the device class (i.e., + 35 disk or tape) of the error log message is implicit in the + 36 connection on which the message was received. Note that the + 37 order of receipt of error log messages relative to end or + 38 attention messages is expressly undefined. Therefore, an error + 39 log message may be received either before or after an end message + 40 that reports the same error or that has the "Error Log Generated" + 41 flag set. + + 42 MSCP servers assign a sequence number to every error log message + 43 they generate. The sequence number assigned is reported to the + 44 host in the "Sequence Number" field in each error log message and + 45 in each command end message that has the "Error Log Generated" + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-49 + Error Log Messages 11 June 1992 + + + 1 flag set. This sequence number serves the following purposes: + + 2 1. It permits the host to determine when all error log + 3 messages associated with a particular command have been + 4 received. The host can then release any of the command's + 5 context it may have saved for inclusion in its error log. + 6 An example of how a host might use the error log sequence + 7 number for this purpose appears later in this section. + + 8 2. If the same error log message is sent to multiple hosts, + 9 which then record it in a common error log file, it + 10 allows the multiple copies of the same message to be + 11 recognized as describing the same error. + + 12 3. If a host requests that it receive every error log + 13 message that an MSCP server generates, it allows that + 14 host to detect missing or lost error log messages by + 15 detecting gaps in the sequence numbers. In this case the + 16 host is required to set all three error log enable flags + 17 in the "controller flags" field of the SET CONTROLLER + 18 CHARACTERISTICS command (see Section 5.6, "Controller + 19 Flags"). + + + 20 Some controllers can achieve these purposes via other means, and + 21 therefore need not implement error log sequence numbers. The + 22 requirements such controllers must meet are described later in + 23 this section. + + 24 Each MSCP server implements a single error log sequence number, + 25 which it uses for all error log messages for all class drivers. + 26 The server increments its sequence number each time it attempts + 27 to generate an error log message. (Note that sequence numbers + 28 may wrap around, so that sequence number 0 comes after sequence + 29 number 65535.) + + 30 Multiple copies of the same error log message shall all have the + 31 same sequence number. On each individual connection, the MSCP + 32 server shall send error log messages in the same order as their + 33 sequence numbers. The relative order of error log messages sent + 34 on different connections is undefined (and therefore a controller + 35 option). + + 36 Whenever an MSCP server has pending error log messages for a + 37 connection, it shall send at least one error log message on that + 38 connection within the controller timeout interval. + + 39 An MSCP server has pending error log messages for a connection + 40 whenever it has notified the class driver on that connection that + 41 one or more error log messages are forthcoming (i.e., set the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-50 + Error Log Messages 11 June 1992 + + + 1 "Error Log Generated" flag in an end message), but has not yet + 2 sent or dropped all error log messages up to the one whose + 3 sequence number was reported in the end message. The term + 4 "dropped" refers to the MSCP server determining that it will not + 5 send a message due to lack of some internal resource. + + 6 The sequence number is reset whenever the MSCP server loses + 7 context. The first error log message after such a loss of + 8 context has sequence number zero. The sequence number shall not + 9 be reset as a normal result of the MSCP server becoming + 10 "Controller-Online" or "Controller-Available" to a class driver. + 11 Note that each MSCP server (i.e., each device class) within a + 12 controller has its own error log sequence number. + + 13 As stated above, the error log sequence number is only reset when + 14 the MSCP server loses context. The MSCP server reports the fact + 15 that it has lost context by setting the "Sequence Number Reset" + 16 flag (see Section 5.9.2, "Generic Error Log Message Format") in + 17 the first error log message it sends to each class driver after + 18 said loss of context. This means, in effect, that the MSCP + 19 server must keep track of all class drivers to which it has sent + 20 an error log message since its last loss of context, regardless + 21 of whether or not it is currently "Controller-Online" to those + 22 class drivers. + + 23 An example of how a host might use the error log sequence number + 24 to correlate error log messages with outstanding command context + 25 follows. + + 26 The class driver keeps track of the sequence number of + 27 the most recent error log message it has received. This + 28 sequence number should be initialized to zero when the + 29 connection is established. Furthermore, in use command + 30 slots (containing command context) come in two forms -- + 31 active commands and commands waiting for error log + 32 messages. The class driver also keeps track of whether + 33 or not it has received an error log message within each + 34 controller timeout interval for its command timeout + 35 algorithm. + + 36 When the class driver receives an end message, it first + 37 checks the "Error Log Generated" flag. If that flag is + 38 clear, it releases the command slot as no longer in use. + 39 If that flag is set, it calls the RELEASE_SLOT procedure + 40 (see pseudo-code below) with the "sequence number" from + 41 the command's end message and the sequence number of the + 42 most recent error log message the class driver has + 43 received. If RELEASE_SLOT returns TRUE, the class driver + 44 releases the command slot as no longer in use. If that + 45 procedure returns FALSE, the class driver marks the slot + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-51 + Error Log Messages 11 June 1992 + + + 1 as waiting for error log messages. + + 2 When the class driver receives an error log message, it + 3 calls the RELEASE_SLOT procedure, with the error log + 4 sequence number from the command slot (copied from the + 5 command's end message) and the sequence number of the new + 6 error log message, once for each command slot that is + 7 waiting for error log messages. If RELEASE_SLOT returns + 8 TRUE, the class driver releases the command slot as no + 9 longer in use. If RELEASE_SLOT returns FALSE, the slot + 10 remains marked as waiting for error log messages. + + 11 Command slots that are waiting for error log messages + 12 participate in the class driver's command timeout + 13 algorithm (see Section 4.10, "Command Timeouts") just the + 14 same as slots for outstanding commands. If the oldest + 15 outstanding command slot is waiting for error log + 16 messages, the class driver checks if any error log + 17 messages have been received within the controller timeout + 18 interval. If one or more error log messages have been + 19 received, the slot remains in use. If no error log + 20 messages have been received, the command slot is released + 21 -- the error log message for which the slot was waiting + 22 has been lost. + + 23 The RELEASE_SLOT procedure accepts an error log sequence + 24 number from an end message and a sequence number from an + 25 error log message. It returns TRUE if the error log + 26 number comes after the end message number and FALSE + 27 otherwise. This comparison takes into account sequence + 28 number wrap-around. The procedure (pseudo-code) is: + + 29 function RELEASE_SLOT ( + 30 end_msg_number : 0..65535 ; + 31 err_log_number : 0..65535 ) : boolean ; + 32 const + 33 FUDGE = 1 ; + 34 var + 35 i : -65535..65535 ; + 36 begin ; + 37 { following three lines are just a 16 bit } + 38 { signed subtract operation, ignoring } + 39 { integer overflow (i.e., the PDP-11 SUB } + 40 { instruction). } + 41 i := err_log_number - end_msg_number ; + 42 if i < -32768 then i := i + 65536 ; + 43 if i > 32767 then i := i - 65536 ; + 44 RELEASE_SLOT := (i >= FUDGE-1) ; + 45 end ; + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-52 + Error Log Messages 11 June 1992 + + + 1 The constant FUDGE is the maximum degree of + 2 communications mechanism nonsequentiality for datagrams. + 3 Assume that datagrams n, n+1, n+2, etc. are sent in that + 4 order across a connection. FUDGE is the smallest value + 5 for which the communications mechanism guarantees that, + 6 if both datagram n and datagram n+FUDGE are received, + 7 then datagram n is received before datagram n+FUDGE. All + 8 current and proposed communications mechanisms have + 9 sequential datagrams, for which FUDGE is one. The only + 10 type of communications mechanism for which FUDGE might + 11 have a different value is one that has multiple paths + 12 between nodes, and allows datagrams for a single + 13 connection to follow different paths. + + 14 As mentioned earlier, controllers need not implement error log + 15 sequence numbers, since their purposes can be achieved via other + 16 means. Controllers that meet all of the following requirements + 17 need not implement error log sequence numbers: + + 18 1. The MSCP server never drops error log messages. That + 19 is, whenever it has an error log message to generate, it + 20 blocks or deadlocks until it is able to generate the + 21 message. + + 22 2. The communications mechanism between the MSCP server and + 23 the class driver guarantees all error log messages will + 24 be delivered without loss or duplication in the order + 25 that they were generated. That is, the communications + 26 mechanism provides the same guarantees for datagrams + 27 (error log messages) that it provides for sequential + 28 messages (control messages). + + 29 3. The MSCP server and communications mechanism guarantee + 30 that the class driver will receive all error log + 31 messages that reference a particular command's reference + 32 number before receiving that command's end message. + + 33 4. The MSCP server and communications mechanism are + 34 inherently incapable of communicating with more than one + 35 class driver. + + 36 MSCP servers that meet the above four requirements may generate + 37 all error log messages with a sequence number of zero and with + 38 the "Sequence Number Reset" flag set, rather than actually + 39 implementing sequence numbers. All other MSCP servers shall + 40 implement an actual error log sequence number. Such other MSCP + 41 servers may not lose context solely to reset the error log + 42 sequence number. All losses of context must be caused by some + 43 external event such as a power failure. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-53 + Error Log Messages 11 June 1992 + + + 1 Since error log messages are not subject to flow control (see + 2 Section 3.2, "Flow Control"), it is possible for a controller to + 3 generate error log messages faster than a host can record them in + 4 its error log. In order to minimize the probability of this + 5 happening, and thus minimize the probability of losing error log + 6 information, controllers shall generate no more than three error + 7 log messages in response to a single error. Note that the + 8 definition of what constitutes an error is necessarily controller + 9 and/or drive dependent. The three message limit encompasses an + 10 original error and all error recovery / correction / retry + 11 sequences associated with that error. Seemingly unrelated errors + 12 that occur in a recovery sequence are generally considered to be + 13 different errors, and are therefore not covered by the three + 14 message limit. + + 15 For example, consider an uncorrectable ECC error on a read. + 16 Rereads using offset head positioning and the like are part of + 17 the retry sequence, and thus fall under the three message limit + 18 for the original error. However, failure of the command + 19 directing the drive to use offset head positioning (i.e., the + 20 command itself fails, indicating that the heads could not be + 21 offset) would be considered a separate error, even though both it + 22 and the original read error might have a common cause (such as a + 23 bad cable between the controller and the drive). + + 24 In order to achieve this three message limit, most error log + 25 messages summarize the results of an entire retry sequence. This + 26 approach generally results in exactly one error log message per + 27 error. The other approach is to generate a separate error log + 28 message for each attempt or retry that fails. This approach can + 29 only be used with errors for which the number of retries is small + 30 (i.e., three or fewer attempts total), as otherwise the three + 31 message limit will be exceeded. + + 32 5.9.1 Maximum Error Log Message Size + + 33 MSCP and TMSCP do not place any explicit limit on the maximum + 34 size of an error log message. Rather, they simply require that + 35 in any supported or operational configuration, the maximum error + 36 log message size generated by a device's MSCP or TMSCP server + 37 must be less than or equal to the maximum supported by the host + 38 class driver and any intervening adapters. In essence, error log + 39 message size limits are outside the scope of this specification. + + 40 In order to assist in determining if maximum error log message + 41 sizes are compatible in a particular configuration, all MSCP and + 42 TMSCP entities shall register their error log message size limits + 43 with the SSAG Architectural Compliance Registry. Information on + 44 procedures for using the registry may be obtained by sending mail + 45 to SSAG::SSAG. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-54 + Error Log Messages 11 June 1992 + + + 1 Each MSCP or TMSCP class driver shall register the maximum error + 2 log message size they support. They shall list multiple sizes + 3 with appropriate qualification if they support different sizes in + 4 different circumstances, such as with different port drivers or + 5 adapters. Any limits imposed by adapters shall be included in + 6 the class driver's registered limits, since such limitations are + 7 extremely few in number. + + 8 Each MSCP or TMSCP server shall register the maximum size of any + 9 error log message it may generate. It is reasonable to list + 10 multiple sizes if class drivers and/or system configurations can + 11 affect what sizes are used. For example, if the longest messages + 12 will only be generated if a particular option is used, it is + 13 reasonable to list limits both with and without that option being + 14 used. An MSCP or TMSCP server shall not generate an error log + 15 message longer than what it has registered, under whatever + 16 conditions or qualifications are included in its registration. + 17 Furthermore, an MSCP or TMSCP server may not register a maximum + 18 error log message size unless a corresponding class driver is + 19 already registered as supporting at least that maximum. + + 20 The purpose of this last restriction is to make it clear that the + 21 burden of obtaining support for a new, longer maximum error log + 22 message size lies upon the device wishing to use those longer + 23 messages. The device development group must first obtain + 24 agreement from some host OS group to support the longer messages, + 25 leading to the host OS group changing its Architectural + 26 Compliance Registry entry to indicate the longer size. Only then + 27 may the device group register its device and begin to generate + 28 the longer messages. + + 29 Notwithstanding the above requirements, the following guidelines + 30 should be followed by all new or significantly modified products. + 31 Adherence to these guidelines will minimize support and + 32 compatibility problems with regard to error log message sizes. + + + 33 1. For SSP devices, all class drivers should be designed to + 34 support a maximum error log message size of 124 bytes or + 35 larger. This corresponds to a 128 byte SSP message + 36 buffer less 4 bytes overhead. Note, however, that at + 37 the time this was written the KFQSA adapter imposed a + 38 limit of 88 bytes on MSCP or TMSCP error log messages. + + 39 2. For all other devices, all class drivers should be + 40 designed to support a maximum error log message size of + 41 512 bytes or larger. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-55 + Error Log Messages 11 June 1992 + + + 1 3. For SSP devices, servers should be designed to use error + 2 log messages no longer than 60 bytes. Longer messages + 3 may encounter compatibility problems with older + 4 software. + + 5 4. For all other devices, servers should be designed to use + 6 error log messages no longer than 128 bytes. Longer + 7 messages may encounter compatibility problems with older + 8 software. + + + 9 These are only recommended guidelines, and may be violated + 10 without affecting MSCP or TMSCP compliance. But special care + 11 should be taken to consider the risk of incompatibility whenever + 12 these recommendations are not followed. + + 13 As has already been stated, in any supported or operational + 14 configuration, the maximum error log message size generated by a + 15 device's MSCP or TMSCP server must be less than or equal to the + 16 maximum supported by the host class driver and any intervening + 17 adapters. The converse of this is that if a device might + 18 generate an error log message longer than an adapter or host + 19 class driver supports, then their combination is not a supported + 20 configuration and need not be operational. All the same, such + 21 mis-configured systems will occur in practice, so defensive + 22 programming techniques should be used to simplify diagnosis and + 23 minimize problems with mis-configurations. A system crash or + 24 weird behavior that only occurred when a particular error log + 25 message arrived would be extremely difficult to diagnose. + + 26 To this end it is strongly recommended that all entities + 27 participating in an MSCP or TMSCP connection explicitly check + 28 error log message sizes, rather than implicitly assuming they are + 29 valid. Ideally an explicit message would be displayed to report + 30 the mis-configuration, although this may be impractical for most + 31 devices. If the communications mechanism allows it, error log + 32 message sizes should be checked when a connection is established + 33 rather than waiting for an overly long error log message to be + 34 generated. If a mis-configuration is present, the connection + 35 should be rejected, rather than establishing the connection only + 36 to have a problem at the unpredictable time a long error log + 37 message is generated. + + 38 If an error log message longer than that which is supported is + 39 nonetheless generated, it should be truncated to the supported + 40 maximum size on that connection. The actual truncation may occur + 41 in the server, class driver, an adapter, or anywhere else + 42 convenient. With most communications mechanisms, any truncation + 43 should be performed by the sender before the error log message is + 44 sent. For example, truncation to the SCA maximum datagram size + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-56 + Error Log Messages 11 June 1992 + + + 1 should occur in the server sending the error log message, before + 2 it is passed to SCA. Similarly, truncation to the size of an SSP + 3 message buffer should occur in the SSP adapter. Truncation to + 4 the maximum size supported by the host's error logging subsystem + 5 would normally be done in the host. + + 6 The truncated size should be recorded with the error log message, + 7 so that undefined data is not mistakenly interpreted as belonging + 8 to the message. Error log analysis tools might subsequently use + 9 device dependent knowledge to recognize that the message has been + 10 truncated and report the mis-configuration. Connections should + 11 not be broken if an overly long error log message is generated, + 12 nor should such messages be discarded due to their size. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-57 + Error Log Messages 11 June 1992 + + + 1 5.9.2 Generic Error Log Message Format + + + + 2 31 0 + 3 +--------------------------------+ + 4 | command reference number | + 5 +---------------+----------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+--------+ + 8 | event code | flags | format | + 9 +---------------+-------+--------+ + 10 | | + 11 +--- controller identifier ---+ + 12 | | + 13 +---------------+-------+--------+ + 14 | multiunit code|chvrsn | csvrsn | + 15 +---------------+-------+--------+ + 16 | | + 17 +--- unit identifier ---+ + 18 | | + 19 +---------------+-------+--------+ + 20 | fmt dependent |uhvrsn | usvrsn | + 21 +---------------+-------+--------+ + 22 | volume serial number | + 23 +--------------------------------+ + 24 | | + 25 / format dependent / + 26 / information / + 27 | | + 28 +--------------------------------+ + + 29 The fields in the generic error log message are as follows: + + 30 command reference number + + 31 The command reference number of the MSCP command that + 32 caused the error reported by this error log message, or + 33 zero if the error does not correspond to a specific + 34 outstanding command. If this field contains a command + 35 reference number, then the command's end message will + 36 also have the "error log generated" end message flag set. + 37 Note that the error log message may be received either + 38 before or shortly after the command's end message. + + 39 unit number + + 40 The unit number of the unit to which the error log + 41 message relates, or zero if the message does not relate + 42 to a specific unit. This field may contain the unit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-58 + Error Log Messages 11 June 1992 + + + 1 number of any unit of the drive or formatter if the error + 2 relates to an entire multiunit drive or formatter. The + 3 validity of this field is determined by the value in the + 4 "format" field. + + 5 sequence number + + 6 The sequence number of this error log message since the + 7 last time the MSCP server lost context, or zero if the + 8 MSCP server does not implement error log sequence + 9 numbers. Note that error log sequence numbers are common + 10 to all class drivers, and are not reset by class driver + 11 resynchronization. Note also that the class driver may + 12 receive error log messages out of sequence. + + 13 format + + 14 The value in this field identifies the detailed format of + 15 the error log message, as defined in the following + 16 sections. + + 17 Refer to Appendix A, "Opcode, Flag, and Offset + 18 Definitions," Table A-9, "Error Log Message Format Codes" + 19 for the values assigned to the currently defined formats. + + 20 flags + + 21 Bit flags, collectively called error log message flags, + 22 used to report various attributes of the error. The + 23 following flags are defined: + + 24 Bad Block Replacement Request + + 25 If set, the block identified by the error log + 26 message is a bad block, and the Controller + 27 Initiated Bad Block Replacement layer will soon + 28 attempt to replace it. Note that this flag is + 29 reported only by controllers that support + 30 Controller Initiated Bad Block Replacement for + 31 disk class devices. + + 32 Disk Copy Data Correlate + + 33 If set, the reported error occurred during the + 34 execution of a DISK COPY DATA command where the + 35 source unit is located in a remote subsystem as + 36 described in Section 6.7.3, "DISK COPY DATA + 37 Command, Description." Note that the server + 38 sends a DISK COPY DATA CORRELATION error log as + 39 described in Section 5.9.9, prior to sending the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-59 + Error Log Messages 11 June 1992 + + + 1 end message for a particular DISK COPY DATA + 2 command. See that section for related + 3 information. + + 4 Error During Replacement + + 5 If set, the reported error occurred during an + 6 access initiated by the bad block replacement + 7 process. Note that this flag is reported only by + 8 controllers that support Controller Initiated Bad + 9 Block Replacement for disk class devices. + + 10 Operation Successful + + 11 If set, the operation causing this error log + 12 message has been successfully completed. The + 13 error log message summarizes the retry sequence + 14 that was necessary to successfully complete the + 15 operation. If clear, the operation has not yet + 16 been successfully completed. + + 17 Operation Continuing + + 18 If set, the retry sequence for this operation + 19 will be continued. This error log message + 20 reports the unsuccessful completion of one or + 21 more retries. If clear, the retry sequence for + 22 this operation has terminated. Provided + 23 "Operation Successful" is also clear, the retry + 24 limit for this operation has been reached and an + 25 unrecoverable error will be reported. Undefined + 26 (meaningless) if "Operation Successful" is set. + + 27 Sequence Number Reset + + 28 If set, then the error log sequence number + 29 ("sequence number" field) has been reset by the + 30 MSCP server since the last error log message sent + 31 to the receiving class driver. If clear, the + 32 sequence number has not been reset, implying that + 33 the "sequence number" field may be used to detect + 34 missing error log messages. Always set if the + 35 MSCP server does not implement error log sequence + 36 numbers. + + 37 Informational + + 38 If set, the data contained in this error log + 39 message is informational only. The information + 40 is not necessarily related to any single command + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-60 + Error Log Messages 11 June 1992 + + + 1 or event. Note that the error log message does + 2 NOT signify the occurrence of an error and shall + 3 not be included in device error counts. + + 4 If "Operation Successful" and "Operation Continuing" are + 5 both clear, then the error log message reports a hard + 6 (unrecoverable) error. If "Operation Successful" is + 7 clear and "Operation Continuing" is set, then the error + 8 log message reports an intermediate step within an error + 9 recovery operation. It is not yet certain whether the + 10 error is hard or soft. If "Operation Successful" is set, + 11 then the error log message summarizes the retry sequence + 12 used to recover from a soft error. + + 13 Refer to Appendix A, "Opcode, Flag, and Offset + 14 Definitions," Table A-10, "Error Log Message Flags" for + 15 the values assigned to the currently defined flags. + + 16 event code + + 17 Identifies the specific error or event being reported by + 18 | this error log message. See Section 5.5, "Status and + 19 | Event Codes." + + 20 The subcode portion of the event code is potentially + 21 controller and/or device specific. However, the same + 22 major code / subcode combination, whenever it is used, + 23 must always have the same meaning. Therefore, new + 24 subcodes may be defined as new devices are introduced, + 25 but the meaning of old subcodes should not change. Event + 26 code values are listed in Appendix B, "Status and Event + 27 Code Definitions." + + 28 controller identifier + + 29 Uniquely identifies the controller among all devices + 30 accessible via MSCP. See Section 4.17, "Controller and + 31 Unit Identifiers." + + 32 csvrsn + + 33 The controller's software, firmware, or microcode + 34 revision number. Always zero if the product's + 35 development and maintainability groups determine that + 36 there is no benefit from supporting machine readable + 37 revision numbers. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-61 + Error Log Messages 11 June 1992 + + + 1 chvrsn + + 2 The controller's hardware revision number. Always zero + 3 if the product's development and maintainability groups + 4 determine that there is no benefit from supporting + 5 machine readable revision numbers. + + 6 multiunit code + + 7 The multiunit code, as defined in Section 4.16.2, + 8 "Multiunit Drives and Formatters," of the unit to which + 9 the error log message relates. This field may contain + 10 the multiunit code of any unit of the drive or formatter + 11 if the error relates to an entire multiunit drive or + 12 formatter. + + 13 unit identifier + + 14 Uniquely identifies the unit among all devices accessible + 15 via MSCP. See Section 4.17, "Controller and Unit + 16 Identifiers." This field is only present for errors that + 17 relate to a specific unit. + + 18 usvrsn + + 19 The unit's software, firmware, or microcode revision + 20 number. This field is only present for errors that + 21 relate to a specific unit. Always zero if the product's + 22 development and maintainability groups determine that + 23 there is no benefit from supporting machine readable + 24 revision numbers. + + 25 uhvrsn + + 26 The unit's hardware revision number. This field is only + 27 present for errors that relate to a specific unit. + 28 Always zero if the product's development and + 29 maintainability groups determine that there is no benefit + 30 from supporting machine readable revision numbers. + + 31 volume serial number + + 32 The low order 32 bits of the serial number of the volume + 33 that is mounted on the unit. Zero if the unit's format + 34 does not provide for a volume serial number. Undefined + 35 (garbage) if there is no volume mounted in the unit, the + 36 area of the volume that contains the serial number cannot + 37 be read successfully, the error occurred before the + 38 volume serial number could be determined while bringing + 39 the unit "Unit-Online," the unit is not "Unit-Online" to + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-62 + Error Log Messages 11 June 1992 + + + 1 any host, or if the "Ignore Media Format Error" modifier + 2 was specified in the ONLINE command that first brought + 3 the unit "Unit-Online." This field is only present for + 4 errors that relate to a specific disk unit. + + 5 fmt dependent + 6 format dependent information + + 7 The format of the remainder of the error log message + 8 depends upon the value of the "format" field. Note that + 9 the fields "unit number" and "multiunit code" through + 10 "volume serial number" also depend on the value of the + 11 "format" field, as they are only present for those + 12 formats used to report errors that relate to a specific + 13 unit. + + 14 Appendix A, "Opcode, Flag, and Offset Definitions," Table A-8, + 15 "Error Log Message Offsets" defines the preferred mnemonic and + 16 numeric value of the offset within the error log message of the + 17 various error log parameter fields, as well as the size of each + 18 field. + + 19 The following sections describe the specific error log message + 20 formats. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-63 + Error Log Messages 11 June 1992 + + + 1 5.9.3 CONTROLLER ERRORS Error Log Format + + 2 The following error log message format is used to report + 3 controller errors: + + 4 31 0 + 5 +--------------------------------+ + 6 | command reference number | + 7 +---------------+----------------+ + 8 |sequence number| reserved | + 9 +---------------+-------+--------+ + 10 | event code | flags | format | + 11 +---------------+-------+--------+ + 12 | | + 13 +--- controller identifier ---+ + 14 | | + 15 +---------------+-------+--------+ + 16 | |chvrsn | csvrsn | + 17 | +-------+--------+ + 18 | controller | + 19 / dependent / + 20 / information / + 21 | | + 22 +--------------------------------+ + + 23 The fields in the CONTROLLER ERRORS error log message are as + 24 follows: + + 25 command reference number + 26 sequence number + 27 format + 28 flags + 29 event code + 30 controller identifier + 31 csvrsn + 32 chvrsn + + 33 See Section 5.9.2, "Generic Error Log Message Format." + + 34 controller dependent information + + 35 A variable (controller dependent) amount of information. + 36 Often no controller dependent information is provided. + 37 The length of this information is implied by the total + 38 length of the error log message, passed to the class + 39 driver by the port driver. This information will + 40 typically not be interpreted by error log formatting + 41 programs, instead being printed as a series of values. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-64 + Error Log Messages 11 June 1992 + + + 1 5.9.4 MEMORY ERRORS Error Log Format + + 2 The following error log message format is used to report memory + 3 errors when the address of the offending location is available to + 4 the controller. This format is used for either host or internal + 5 controller memory access errors. The format is: + + 6 31 0 + 7 +--------------------------------+ + 8 | command reference number | + 9 +---------------+----------------+ + 10 |sequence number| reserved | + 11 +---------------+-------+--------+ + 12 | event code | flags | format | + 13 +---------------+-------+--------+ + 14 | | + 15 +--- controller identifier ---+ + 16 | | + 17 +---------------+-------+--------+ + 18 | reserved |chvrsn | csvrsn | + 19 +---------------+-------+--------+ + 20 | memory address | + 21 +--------------------------------+ + 22 | | + 23 / controller / + 24 / dependent / + 25 / information / + 26 / (optional) / + 27 | | + 28 +--------------------------------+ + + 29 The fields in the MEMORY ERRORS error log message are as follows: + + 30 command reference number + 31 sequence number + 32 format + 33 flags + 34 event code + 35 controller identifier + 36 csvrsn + 37 chvrsn + + 38 See Section 5.9.2, "Generic Error Log Message Format." + + 39 event code + + 40 The event code identifies whether the error being + 41 reported occurred in host or controller memory. For + 42 errors in host memory the event code contains an + 43 appropriate "Host Buffer Access Error" subcode (see Table + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-65 + Error Log Messages 11 June 1992 + + + 1 B-6, "'Host Buffer Error' Status or Event Code Subcode + 2 Values"). For errors in controller memory the event code + 3 contains an appropriate "Controller Error" subcode (see + 4 Table B-7, "'Controller Error' Status or Event Code + 5 Subcode Values"). + + 6 memory address (host memory access error) + + 7 For errors accessing host memory the "memory address" + 8 field contains the address in the host's physical address + 9 space at which the error occurred. + + 10 The units of "memory address" are those natural to the + 11 host -- bytes for 16 and 32 bit systems or words for 36 + 12 bit systems. The resolution to which a controller + 13 identifies the address at which the error occurred is + 14 controller dependent, and shall be described in the + 15 controller's functional specification. Disk controllers + 16 will typically provide a resolution of one disk block. + + 17 memory address (controller memory access error) + + 18 For errors accessing controller memory the "memory + 19 address" field contains the location in the controller's + 20 memory at which the error occurred. + + 21 Only errors that do not affect the controller's ability + 22 to properly generate end and error log messages are + 23 reported via MSCP and this error log format. Errors that + 24 might affect end and error log messages are reported via + 25 some mechanism other than MSCP. + + 26 The units of "memory address" are those natural to the + 27 memory in which the error occurred. This necessarily + 28 implies that the units are memory dependent. Bytes are + 29 the preferred units whenever there is any ambiguity as to + 30 what are the natural units. The resolution to which the + 31 address of the error is reported is also memory + 32 dependent. It is acceptable for some memories to have no + 33 address resolution. That is, errors in such memories are + 34 reported with a fixed address of zero regardless of the + 35 address at which the error occurred. This will typically + 36 be used for memories in which any error renders the + 37 entire memory unusable. + + 38 Controllers with multiple memories may identify the + 39 particular memory in which the error occurred either by + 40 embedding the identification (as a subfield) in the + 41 "memory address" field or by providing the identification + 42 in the "controller dependent information" field + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-66 + Error Log Messages 11 June 1992 + + + 1 (described below). The units of "memory address," + 2 address resolution, and memory identification (where + 3 required) are controller dependent and shall be described + 4 in the controller's functional specification. + + 5 controller dependent information + + 6 An optional, variable length field containing controller + 7 dependent information. The length of this field is + 8 implied by the total length of the error log message, + 9 passed to the class driver by the port driver. This + 10 field may be used to provide additional information when + 11 reporting either controller or host memory errors or + 12 both. The use and contents shall be described in the + 13 controller's functional specification. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-67 + Error Log Messages 11 June 1992 + + + 1 5.9.5 DISK TRANSFER ERRORS Error Log Format + + 2 The following error log message format is used to report errors + 3 that occur during a disk transfer. Note that this format is + 4 generally used to report the results of a sequence of retries. + + 5 31 0 + 6 +--------------------------------+ + 7 | command reference number | + 8 +---------------+----------------+ + 9 |sequence number| unit number | + 10 +---------------+-------+--------+ + 11 | event code | flags | format | + 12 +---------------+-------+--------+ + 13 | | + 14 +--- controller identifier ---+ + 15 | | + 16 +---------------+-------+--------+ + 17 |multiunit code |chvrsn | csvrsn | + 18 +---------------+-------+--------+ + 19 | | + 20 +--- unit identifier ---+ + 21 | | + 22 +-------+-------+-------+--------+ + 23 | retry | level |uhvrsn | usvrsn | + 24 +-------+-------+-------+--------+ + 25 | volume serial number | + 26 +--------------------------------+ + 27 | header code | + 28 +--------------------------------+ + 29 | | + 30 / controller or disk / + 31 / dependent information / + 32 | | + 33 +--------------------------------+ + + 34 The fields in the DISK TRANSFER ERRORS error log message are as + 35 follows: + + 36 command reference number + 37 unit number + 38 sequence number + 39 format + 40 flags + 41 event code + 42 controller identifier + 43 csvrsn + 44 chvrsn + 45 multiunit code + 46 unit identifier + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-68 + Error Log Messages 11 June 1992 + + + 1 usvrsn + 2 uhvrsn + 3 volume serial number + + 4 See Section 5.9.2, "Generic Error Log Message Format." + + 5 level + + 6 The error recovery level used for the most recent attempt + 7 at the transfer. The error recovery level is a device + 8 dependent encoding of the special error recovery + 9 procedures, such as offset head positioning, used for the + 10 most recent transfer attempt. The values zero and 255 + 11 (all ones) are reserved to indicate that no special error + 12 recovery procedures were used. + + 13 retry + + 14 The retry count, within the current error recovery level, + 15 of the most recent attempt at the transfer. This value + 16 starts at one for the first attempt using a particular + 17 error recovery level and increments for each subsequent + 18 attempt at the same level. This continues up to some + 19 drive dependent maximum, at which time the retry count is + 20 reset to one and the next error recovery level (if any) + 21 is tried. + + 22 header code + + 23 Identifies the physical disk location at which the error + 24 occurred. If the high four bits are 0000 (binary), then + 25 the low 28 bits are the logical block number at which the + 26 error occurred. If the high four bits are 0110 (binary), + 27 then the low 28 bits are the replacement block number at + 28 which the error occurred. All other patterns of the high + 29 four bits of "header code" are reserved, and may not be + 30 returned without an ECO to this specification to define + 31 their interpretation. The 28 bit logical or replacement + 32 block number may be decomposed, using the disk geometry + 33 parameters returned by the GET UNIT STATUS command, to + 34 obtain the cylinder, group, track, and sector position at + 35 which the error occurred. + + 36 controller or disk dependent information + + 37 A variable (controller or disk dependent) amount of + 38 information. Often no controller or disk dependent + 39 information is provided. The length of this information + 40 is implied by the total length of the error log message, + 41 passed to the class driver by the port driver. This + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-69 + Error Log Messages 11 June 1992 + + + 1 information will typically not be interpreted by error + 2 log formatting programs, instead being printed as a + 3 series of values. + + 4 5.9.6 SDI ERRORS Error Log Format + + 5 The following error log message format is used by Standard Disk + 6 Interconnect (SDI) disk controllers to report drive detected + 7 errors and SDI communication errors. Note that the controller + 8 retries these errors only once or twice, so a separate error log + 9 message will be generated for each attempt that fails. + + 10 31 0 + 11 +--------------------------------+ + 12 | command reference number | + 13 +---------------+----------------+ + 14 |sequence number| unit number | + 15 +---------------+-------+--------+ + 16 | event code | flags | format | + 17 +---------------+-------+--------+ + 18 | | + 19 +--- controller identifier ---+ + 20 | | + 21 +---------------+-------+--------+ + 22 |multiunit code |chvrsn | csvrsn | + 23 +---------------+-------+--------+ + 24 | | + 25 +--- unit identifier ---+ + 26 | | + 27 +---------------+-------+--------+ + 28 | reserved |uhvrsn | usvrsn | + 29 +---------------+-------+--------+ + 30 | volume serial number | + 31 +--------------------------------+ + 32 | header code | + 33 +--------------------------------+ + 34 | | + 35 +--- SDI status ---+ + 36 | information | + 37 +--- (12 bytes) ---+ + 38 | | + 39 +--------------------------------+ + + 40 The fields in the SDI ERRORS error log message are as follows: + + 41 command reference number + 42 unit number + 43 sequence number + 44 format + 45 flags + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-70 + Error Log Messages 11 June 1992 + + + 1 event code + 2 controller identifier + 3 csvrsn + 4 chvrsn + 5 multiunit code + 6 unit identifier + 7 usvrsn + 8 uhvrsn + 9 volume serial number + + 10 See Section 5.9.2, "Generic Error Log Message Format." + + 11 header code + + 12 Identifies the physical disk location at which the error + 13 occurred. If the high four bits are 0000 (binary), then + 14 the low 28 bits are the logical block number at which the + 15 error occurred. If the high four bits are 0110 (binary), + 16 then the low 28 bits are the replacement block number at + 17 which the error occurred. All other patterns of the high + 18 four bits of "header code" are reserved, and may not be + 19 returned without an ECO to this specification to define + 20 their interpretation. The 28 bit logical or replacement + 21 block number may be decomposed, using the disk geometry + 22 parameters returned by the GET UNIT STATUS command, to + 23 obtain the cylinder, group, track, and sector position at + 24 which the error occurred. + + 25 SDI status information + + 26 Twelve bytes of status information returned by the SDI + 27 GET STATUS command or by the SDI UNSUCCESSFUL response. + 28 The unit number information returned by the SDI command + 29 or response is not included, as that information is + 30 provided elsewhere in the error log message. Otherwise, + 31 all of the SDI status information is included. See the + 32 SDI specification for the format of this information. + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-71 + Error Log Messages 11 June 1992 + + + 1 5.9.7 SMALL DISK ERRORS Error Log Format + + 2 The following error log message format is used by low-end disk + 3 controllers to report drive detected errors and other errors not + 4 amenable to the Disk Transfer Error error log message format. + 5 Note that this format can only be used with disks that have no + 6 more than 65535 cylinders. + + 7 31 0 + 8 +--------------------------------+ + 9 | command reference number | + 10 +---------------+----------------+ + 11 |sequence number| unit number | + 12 +---------------+-------+--------+ + 13 | event code | flags | format | + 14 +---------------+-------+------- + + 15 | | + 16 +--- controller identifier ---+ + 17 | | + 18 +---------------+-------+--------+ + 19 |multiunit code |chvrsn | csvrsn | + 20 +---------------+-------+--------+ + 21 | | + 22 +--- unit identifier ---+ + 23 | | + 24 +---------------+-------+--------+ + 25 | cylinder |uhvrsn | usvrsn | + 26 +---------------+-------+--------+ + 27 | volume serial number | + 28 +--------------------------------+ + 29 | controller or | + 30 / drive dependent / + 31 / information / + 32 | | + 33 +--------------------------------+ + + 34 The fields in the SMALL DISK ERRORS error log message are as + 35 follows: + + 36 command reference number + 37 unit number + 38 sequence number + 39 format + 40 flags + 41 event code + 42 controller identifier + 43 csvrsn + 44 chvrsn + 45 multiunit code + 46 unit identifier + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-72 + Error Log Messages 11 June 1992 + + + 1 usvrsn + 2 uhvrsn + 3 volume serial number + + 4 See Section 5.9.2, "Generic Error Log Message Format." + + 5 cylinder + + 6 The cylinder to which the current transfer is directed. + 7 This field may or may not be meaningful, depending on the + 8 value in "event code." + + 9 controller or drive dependent information + + 10 A variable (controller or drive dependent) amount of + 11 information. The length of this information is implied + 12 by the total length of the error log message, passed to + 13 the class driver by the port driver. This information + 14 will typically not be interpreted by error log formatting + 15 programs, instead being printed as a series of values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-73 + Error Log Messages 11 June 1992 + + + 1 5.9.8 BAD BLOCK REPLACEMENT ATTEMPT Error Log Format + + 2 The following error log message format is used by the (Controller + 3 Initiated) Bad Block Replacement layer to report completion of a + 4 bad block replacement attempt. Note that a message of this + 5 format is always generated regardless of the success or failure + 6 of the replacement attempt. + + 7 31 0 + 8 +--------------------------------+ + 9 | command reference number | + 10 +---------------+----------------+ + 11 |sequence number| unit number | + 12 +---------------+-------+--------+ + 13 | event code | flags | format | + 14 +---------------+-------+--------+ + 15 | | + 16 +--- controller identifier ---+ + 17 | | + 18 +---------------+-------+--------+ + 19 |multiunit code |chvrsn | csvrsn | + 20 +---------------+-------+--------+ + 21 | | + 22 +--- unit identifier ---+ + 23 | | + 24 +---------------+-------+--------+ + 25 | replace flags |uhvrsn | usvrsn | + 26 +---------------+-------+--------+ + 27 | volume serial number | + 28 +--------------------------------+ + 29 | Bad LBN | + 30 +--------------------------------+ + 31 | Old RBN | + 32 +--------------------------------+ + 33 | New RBN | + 34 +---------------+----------------+ + 35 | cause | + 36 +----------------+ + + 37 The fields in the BAD BLOCK REPLACEMENT ATTEMPT error log message + 38 are as follows: + + 39 unit number + 40 sequence number + 41 format + 42 flags + 43 controller identifier + 44 csvrsn + 45 chvrsn + 46 multiunit code + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-74 + Error Log Messages 11 June 1992 + + + 1 unit identifier + 2 usvrsn + 3 uhvrsn + 4 volume serial number + + 5 See Section 5.9.2, "Generic Error Log Message Format." + + 6 command reference number + + 7 Either zero or the command reference number of the + 8 command that caused the bad block to be detected and + 9 replaced. Controllers need not save this value, in which + 10 case this field will always be zero. + + 11 event code + + 12 Reports the completion status of the bad block + 13 replacement attempt. The major code is always "Bad Block + 14 Completion." Subcodes are defined in Table B-9, "'Bad + 15 Block Replacement Completion' Event Only Subcode + 16 Values." + + 17 replace flags + + 18 Bit flags reporting in detail the outcome of the bad + 19 block replacement attempt. See Table A-11, "Bad Block + 20 Replacement Attempt 'Replace Flags'" for the definitions + 21 of those flags. + + 22 Bad LBN + + 23 The LBN that was the target of the replacement attempt. + + 24 Old RBN + + 25 If the "Bad RBN" replace flag is set, the RBN with which + 26 the Bad LBN was formerly replaced. Zero otherwise. + + 27 New RBN + + 28 If the "Replacement Attempted" replace flag is set, the + 29 RBN with which the Bad LBN is now replaced. Zero + 30 otherwise. + + 31 Cause + + 32 The event code from the original error that caused the + 33 replacement to be attempted. Zero if that event code is + 34 not available. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-75 + Error Log Messages 11 June 1992 + + + 1 5.9.9 DISK COPY DATA CORRELATION Error Log Format + + + 2 The following error log message format is used to report specific + 3 context related to errors detected during the execution of a DISK + 4 COPY DATA command. See Section 6.7.3, "DISK COPY DATA Command, + 5 Description." + + 6 This error log shall be generated if one or more error logs was + 7 generated by a remote source. In this case, the event code + 8 returned will be Informational (subcode "Disk Copy Data + 9 Correlation"). The error logs generated by the remote source + 10 will have the Disk Copy Data Correlate error log flag set and + 11 will have the same "command reference number" as this + 12 Informational error log. This error log allows all error logs + 13 related to such a DISK COPY DATA command to be correlated with + 14 that command's context. + + 15 This error log is also sent for certain classes of fatal errors + 16 detected by the server during attempted execution of the DISK + 17 COPY DATA command. See the descriptions of the status codes in + 18 Section 6.7.2, "DISK COPY DATA Command, End Message Format" for + 19 specifics. In these cases, this error log shall contain the + 20 appropriate event code/subcode. Note that for most of these + 21 fatal errors, this will be the only error log related to this + 22 DISK COPY DATA command generated by the server. + + 23 Note that in either case this error log is only sent once for a + 24 particular DISK COPY DATA command. + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-76 + Error Log Messages 11 June 1992 + + + 1 31 0 + 2 +--------------------------------+ + 3 | command reference number | + 4 +---------------+----------------+ + 5 |sequence number|dst unit number | + 6 +---------------+-------+--------+ + 7 | event code | flags | format | + 8 +---------------+-------+--------+ + 9 | | + 10 +--- controller identifier ---+ + 11 | | + 12 +---------------+-------+--------+ + 13 | undefined |chvrsn | csvrsn | + 14 +---------------+-------+--------+ + 15 | destination | + 16 +--- unit ---+ + 17 | identifier | + 18 +---------------+----------------+ + 19 | undefined |src unit number | + 20 +---------------+----------------+ + 21 | source | + 22 +--- controller ---+ + 23 | identifier | + 24 +---------------+-------+--------+ + 25 | undefined |schvrsn|scsvrsn | + 26 +---------------+-------+--------+ + 27 | source | + 28 +--- unit ---+ + 29 | identifier | + 30 +--------------------------------+ + 31 |source unit's storage subsystem | + 32 +--- port ---+ + 33 | address | + 34 +--------------------------------+ + 35 |source unit's storage subsystem | + 36 +--- system ---+ + 37 | address | + 38 +--------------------------------+ + 39 | | + 40 / event dependent / + 41 / information / + 42 | | + 43 +--------------------------------+ + + 44 The fields in the DISK COPY DATA CORRELATION error log message + 45 are as follows: + + 46 command reference number + 47 sequence number + 48 format + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-77 + Error Log Messages 11 June 1992 + + + 1 controller identifier + 2 csvrsn + 3 chvrsn + + 4 See Section 5.9.2, "Generic Error Log Message Format." + + 5 The contents of the "command reference number" field in + 6 this message shall be identical to the contents of the + 7 "command reference number" field of the DISK COPY DATA + 8 command for which this message is sent. + + 9 dst unit number (destination unit number) + 10 destination unit identifier + 11 src unit number + 12 source unit identifier + 13 source unit's storage subsystem port address + 14 source unit's storage subsystem system address + + 15 The values of these fields are copied without + 16 modification from the corresponding fields of the DISK + 17 COPY DATA command message identified in the "command + 18 reference number" field of this message. See Section + 19 6.7.1, "DISK COPY DATA Command, Command Message Format" + 20 for descriptions of these fields. + + 21 flags + + 22 See Section 5.9.2, "Generic Error Log Message Format." + + 23 The Informational error log flag shall be set in this + 24 message if the event code is Informational. + + 25 event code + + 26 For DISK COPY DATA commands that terminate with an end + 27 message major status code of Controller Error, Host + 28 Buffer Access Error, or Subcommand Error, the event code + 29 shall be set to the corresponding event code/subcode. + + 30 Otherwise, the event code is Informational (subcode "Disk + 31 Copy Data Correlation"). + + 32 source controller identifier + 33 scsvrsn (source csvrsn) + 34 schvrsn (source chvrsn) + + 35 The values of these fields are from the end message of + 36 the SET CONTROLLER CHARACTERISTICS command issued when + 37 bringing the remote server "Controller-Online." Zero if + 38 that information is not available. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MSCP CONTROL MESSAGES Page 5-78 + Error Log Messages 11 June 1992 + + + 1 event dependent information + + 2 A variable amount of information dependent on the event + 3 that caused this error log message to be generated. The + 4 length of this information is implied by the total length + 5 of the error log message, passed to the class driver by + 6 the port driver. This information will typically not be + 7 interpreted by error log formatting programs, instead + 8 being printed as a series of values. See Sections 6.7.2, + 9 "DISK COPY DATA Command, End Message Format," and 6.7.3, + 10 "DISK COPY DATA Command, Description" for details on + 11 what, if anything, should be placed in this field. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-1 + 11 June 1992 + + + 1 CHAPTER 6 + + 2 MINIMAL MSCP COMMAND SET + + + 3 6.1 Overview + + 4 This chapter describes the minimal MSCP command set implemented + 5 by an MSCP disk controller. Refer to the Tape Mass Storage + 6 Control Protocol Specification (TMSCP) for details of the minimal + 7 command set implemented by MSCP tape controllers. A number of + 8 commands operate identically on both disk and tape class devices. + 9 TMSCP relies on the descriptions contained in this chapter for + 10 those commands. + + 11 Controllers that support only the minimal MSCP command set + 12 implicitly provide single host operation and rely on the host for + 13 the replacement of bad blocks. + + 14 General purpose disk class drivers shall at the very minimum + 15 implement both the minimal MSCP command set, described in this + 16 chapter, and Controller Initiated Bad Block Replacement, + 17 described in Chapter 8. + + 18 Note that with the exception of the commands noted in Section + 19 6.1.1, "No-Operation Commands" controllers that support only the + 20 minimal MSCP command set reject any command not described in this + 21 chapter as an "Invalid Command" ("invalid opcode" protocol error. + 22 See "Invalid Command" status in Section 5.5, "Status Codes"). + + 23 Within this chapter a separate major section is dedicated to each + 24 minimal command set command. The major section identifies the + 25 command by name as well as its permissible command category(s) + 26 (see Section 4.5, "Command Categories and Execution Order"). + 27 Separate subordinate sections describe the command's command + 28 message format, end message format, and (operation) description. + + 29 The command message format subsection shows the layout of the + 30 command message fields and describes their use. (Appendix A, + 31 "Opcode, Flag, and Offset Definitions," Table A-6, "Command + 32 Message Offsets" defines the size and the preferred mnemonic and + 33 numeric value of the offset of the command message fields.) Note + 34 that the omission of a parameter field description implies that + 35 it functions as described elsewhere in this specification. In + 36 particular, the command message header fields (i.e., the "command + 37 reference number," "unit number," "opcode," and "modifiers") are + 38 described in Section 5.3, "Command Messages" and the fields + 39 common to data transfer commands (i.e., "byte count," "buffer + 40 descriptor," and "logical block number") are described in Section + 41 5.3.1, "Transfer Command Message Format." + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-2 + Overview 11 June 1992 + + + 1 The command message format subsection also lists the modifiers + 2 allowed for the command (modifier use is opcode dependent) and + 3 describes their use. Note that the omission of a modifier + 4 description implies that it functions as described in Section + 5 5.3.2, "Command Modifiers." Note also that any command modifiers + 6 other than the ones listed for an individual command are reserved + 7 and treated in accordance with the requirements for reserved + 8 fields described in Section 5.2, "Reserved and Undefined Fields." + + 9 The end message format subsection shows the layout of the end + 10 message fields and describes their use. (Appendix A, "Opcode, + 11 Flag, and Offset Definitions," Table A-7, "End and Attention + 12 Message Offsets" defines the size and the preferred mnemonic and + 13 numeric value of the offset of the end message fields.) Note that + 14 the omission of a parameter field description implies that it + 15 functions as described elsewhere in this specification. In + 16 particular, the end message header fields (i.e., the "command + 17 reference number," "unit number," "sequence number," "endcode," + 18 "flags," and "status") are described in Section 5.4, "End + 19 Messages" and the fields common to data transfer commands (i.e., + 20 "status," "byte count," and "first bad block") are described in + 21 Section 5.4.1, "Transfer Command End Message Format." + + 22 The end message format subsection also lists all the status codes + 23 (and subcodes) possible for the command and describes their + 24 meaning. Note that the omission of a status description implies + 25 that its meaning is defined in Section 5.5, "Status Codes." Note + 26 also that the MSCP protocol violation "Invalid Command" statuses + 27 are not listed for any of the commands but can occur for each. + 28 See "Invalid Command" status in Section 5.5, "Status Codes" for + 29 more detail. + + 30 The description subsection defines the purpose of the command and + 31 provides details about the command's operation. In some cases + 32 the description subsection relies heavily on the other + 33 subsections associated with the command for specific operational + 34 details. + + 35 6.1.1 No-Operation Commands + + 36 The opcodes listed in the "Standard Command Messages" portion of + 37 Appendix A, "Opcode, Flag, and Offset Definitions," Table A-1 as + 38 "allocated for future use" act as place holders in anticipation + 39 of their use in Volume Shadowing and/or Data Caching. Volume + 40 Shadowing and Data Caching have not yet been formalized for disk + 41 class devices. Data Caching has, however, been formalized for + 42 tape class devices (see the Tape Mass Storage Control Protocol + 43 Specification (TMSCP) for details). In order to ensure + 44 compatibility with controllers that support Volume Shadowing + 45 and/or Data Caching, controllers which do not shall treat those + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-3 + Overview 11 June 1992 + + + 1 opcodes as no-operations. In other words, controllers that do + 2 not support Volume Shadowing and/or Data Caching shall recognize + 3 those opcodes and not reject them as "Invalid Commands" and + 4 furthermore shall not perform any action that alters the state of + 5 the unit, its media, or the controller. + + 6 The particular actions such a controller may perform in treating + 7 those opcodes as no-operations are as follows: + + 8 1. Treat those opcodes as either Immediate commands or as + 9 Non-Sequential commands at its option. (Host command + 10 timeout algorithms shall treat them as non-Immediate + 11 commands.) + + 12 2. Construct the end message by making the following + 13 changes to the command message: + + 14 a. Substitute the proper "endcode" for the "opcode." + + 15 b. Clear the "flags" (end flags) byte, unless the + 16 controller has previously verified that the + 17 corresponding "rsvd" byte in the command message was + 18 zero. (Most controllers will verify that the + 19 corresponding "rsvd" byte is zero as part of + 20 checking for invalid opcodes.) + + 21 c. Substitute the "Success" status code combined with + 22 the "Normal" status subcode for the "modifiers." + 23 The controller may optionally validate the "byte + 24 count" and "logical block number" fields to see if + 25 they are within proper limits and return the + 26 "Invalid Command" status with appropriate subcode if + 27 they are not (i.e., validate the command as a + 28 transfer command similar to the ACCESS and ERASE + 29 commands). + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-4 + ABORT Command 11 June 1992 + + + 1 6.2 ABORT Command + + 2 Command Category: + + 3 Immediate + + 4 6.2.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | outstanding reference number | + 14 +-------------------------------+ + + + 15 unit number + + 16 Shall be the same as the "unit number" field in the + 17 outstanding command to be aborted. This allows + 18 controllers to optimize their search for the outstanding + 19 command. If the incorrect unit number is supplied, some + 20 controllers may erroneously conclude that the command is + 21 no longer outstanding and therefore not abort the + 22 command. + + 23 outstanding reference number + + 24 Command reference number of the command to be aborted. + + + 25 Allowable modifiers: + + 26 none + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-5 + ABORT Command 11 June 1992 + + + 1 6.2.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | outstanding reference number | + 11 +-------------------------------+ + + 12 outstanding reference number + + 13 The command reference number of the command that was + 14 aborted. Identical to the value supplied in the ABORT + 15 command message. + + + 16 Status Codes: + + 17 Success (subcode "Normal") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-6 + ABORT Command 11 June 1992 + + + 1 6.2.3 Description + + 2 The ABORT command causes a specified command to be aborted at the + 3 earliest time convenient for the controller. The specified + 4 command shall, however, either be aborted or be completed within + 5 the controller timeout interval. See Section 4.10, "Command + 6 Timeouts," for a discussion of the interaction between ABORT and + 7 command timeouts. + + 8 The ABORT command always succeeds. If the command to be aborted + 9 is not known to the controller, this implies that it has already + 10 completed and the ABORT command will be ignored. The controller + 11 always returns the Success (subcode "Normal") status code/subcode + 12 in the ABORT command's end message. + + 13 The controller may ignore the ABORT command if the command being + 14 aborted will always complete within the controller timeout + 15 interval. + + 16 The class driver shall wait for the aborted command's end + 17 message, or else resynchronize with the MSCP server, before + 18 reusing the aborted command's command reference number or + 19 releasing the aborted command's context. If the command was + 20 aborted, its end message will contain the "Command Aborted" + 21 status code. Otherwise, the command was completed. The class + 22 driver may ignore the ABORT command's end message. Note that the + 23 class driver may receive the ABORT command's end message either + 24 before or after the aborted command's end message. + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-7 + ACCESS Command 11 June 1992 + + + 1 6.3 ACCESS Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.3.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | caa | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +-------------------------------+ + + + 23 Allowable modifiers: + + 24 Express Request + 25 Clear Serious Exception (ignored for disk class devices) + 26 Suppress Error Correction + 27 Suppress Error Recovery + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-8 + ACCESS Command 11 June 1992 + + + 1 6.3.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +-------------------------------+ + 18 | first bad block | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success (subcode "Normal") + 22 Success (subcode "Duplicate Unit Number") + 23 Invalid Command (subcode "Invalid Byte Count") + 24 Invalid Command (subcode "Invalid Logical Block Number") + 25 Command Aborted + 26 Unit-Offline + 27 Unit-Available + 28 Data Error + 29 Host Buffer Access Error (subcode "Odd Byte Count") + + 30 If the communications mechanism does not allow odd byte + 31 transfers, the controller may return this status + 32 code/subcode despite there being no host buffer. This + 33 allows the use of common code for command validation of + 34 all transfer commands. Alternatively, the controller may + 35 round the byte count up to the nearest whole sector size + 36 and perform the operation. + + 37 Controller Error + 38 Drive Error + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-9 + ACCESS Command 11 June 1992 + + + 1 6.3.3 Description + + 2 Data is read from the unit, checked for errors, and discarded. + 3 The purpose of this command is to verify that the designated data + 4 can be accessed (read) without error. + + 5 This command is exactly equivalent in function, although not in + 6 performance, to a READ whose data is ignored by the host. + + 7 The caa field will be ignored and the backing store will be read. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-10 + AVAILABLE Command 11 June 1992 + + + 1 6.4 AVAILABLE Command + + 2 Command Category: + + 3 Sequential + + 4 6.4.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable modifiers: + + 14 All Class Drivers (ignored in single host case) + 15 Clear Serious Exception (ignored for disk class devices) + + 16 Spin-down + + 17 Requests that the disk stop spinning and that the heads + 18 be unloaded. Note that the command completes as soon as + 19 the spin-down has been initiated, rather than waiting for + 20 the disk to stop spinning. The spin-down will not be + 21 initiated if this unit belongs to a multiunit drive and + 22 this unit shares a spindle with some other unit that is + 23 "Unit-Online." See Section 4.16.2, "Multiunit Drives and + 24 Formatters." Regardless of whether or not the spin-down + 25 is actually initiated, AVAILABLE attention messages will + 26 be suppressed for this unit, both for this controller and + 27 for any other controllers to which the unit may be + 28 connected. See Section 4.3, "Unit States." + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-11 + AVAILABLE Command 11 June 1992 + + + 1 6.4.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success (subcode "Normal") + 12 Success (subcode "Duplicate Unit Number") + + 13 Success (subcode "Spin-down Ignored") + + 14 The "Spin-down Ignored" subcode bit flag is set if and + 15 only if the "Spin-down" modifier was specified and one or + 16 more other units with which this unit shares a spindle is + 17 still "Unit-Online," preventing this unit from spinning + 18 down. See Section 4.16.2, "Multiunit Drives and + 19 Formatters," for an explanation of shared spindles. + + 20 Success (subcode "Still Connected") + + 21 The "Still Connected" subcode bit flag is set if and only + 22 if this unit may potentially be accessed via another + 23 controller and one or more other units with which this + 24 unit shares an access path is still "Unit-Online," + 25 preventing this unit from being accessed via the other + 26 controller (if any). The "Still Connected" subcode bit + 27 flag will always be set if the "Spin-down Ignored" bit + 28 flag is set. See Section 4.16.1, "Multiaccess Drives," + 29 for a discussion of access paths. + + 30 Command Aborted + + 31 The command has been rejected and the unit's state has + 32 not changed. If the unit was "Unit-Online" prior to + 33 issuing this command, then the unit is still + 34 "Unit-Online" and it is still spinning. + + 35 Unit-Offline + 36 Controller Error + 37 Drive Error + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-12 + AVAILABLE Command 11 June 1992 + + + 1 6.4.3 Description + + 2 All outstanding commands for the specified unit are completed, + 3 then the unit becomes "Unit-Available." If the "Spin-down" + 4 modifier was not specified, the unit is not already + 5 "Unit-Available," and no other units that share this unit's + 6 access path are "Unit-Online" (i.e., the "Still Connected" status + 7 subcode bit flag is clear), then an AVAILABLE attention message + 8 is sent by any other controller to which the unit is connected. + 9 The controller to which this command was sent need not itself + 10 send an AVAILABLE attention message. + + 11 If the "Spin-down" modifier is specified, the disk spins down and + 12 its heads are unloaded, unless some other unit with which this + 13 unit shares a spindle is "Unit-Online." The disk may be spun up + 14 with an ONLINE command or by operator intervention. The + 15 "Spin-down" modifier also suppresses AVAILABLE attention messages + 16 for this unit, both for this controller and any other controllers + 17 to which the unit may be connected. See Section 4.3, "Unit + 18 States," for a discussion of suppressing AVAILABLE attention + 19 messages. + + 20 This command will be accepted if the unit is "Unit-Online" or + 21 "Unit-Available." It is nugatory to issue this command to a unit + 22 that is "Unit-Available" unless the "Spin-down" modifier is + 23 specified. Assuming no other errors occur, the "Success" status + 24 code will be returned regardless of whether the unit was + 25 previously "Unit-Online" or "Unit-Available." + + 26 If the unit was "Unit-Online" but had a duplicate unit number + 27 prior to the AVAILABLE command being issued, the AVAILABLE + 28 command may complete, at the controller's option, with either a + 29 "Success" or a "Unit-Offline" status code. The "Unit-Offline" + 30 status code shall have the "Duplicate Unit Number" subcode flag + 31 set. The "Success" status code may or may not, at the + 32 controller's option, have the "Duplicate Unit Number" subcode + 33 flag set. Subsequent attempts to access the unit will return + 34 "Unit-Offline" status with the "Duplicate Unit Number" subcode + 35 flag set unless the duplicate unit number has been eliminated. + + 36 When a unit with controller-based write-back cache ceases to be + 37 Online, it should write to the media all data contained in the + 38 cache but not yet written to the backing store. + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-13 + COMPARE HOST DATA Command 11 June 1992 + + + 1 6.5 COMPARE HOST DATA Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.5.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | caa | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +-------------------------------+ + + + 23 Allowable modifiers: + + 24 Clear Serious Exception (ignored for disk class devices) + 25 Express Request + 26 Suppress Error Correction + 27 Suppress Error Recovery + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-14 + COMPARE HOST DATA Command 11 June 1992 + + + 1 6.5.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +-------------------------------+ + 18 | first bad block | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success (subcode "Normal") + 22 Success (subcode "Duplicate Unit Number") + 23 Invalid Command (subcode "Invalid Byte Count") + 24 Invalid Command (subcode "Invalid Logical Block Number") + 25 Command Aborted + 26 Unit-Offline + 27 Unit-Available + 28 Compare Error + 29 Data Error + 30 Host Buffer Access Error + 31 Controller Error + 32 Drive Error + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-15 + COMPARE HOST DATA Command 11 June 1992 + + + 1 6.5.3 Description + + 2 Data is read from the unit and compared with the data in the host + 3 buffer. A "Compare Error" is reported unless the data is + 4 identical. Note that the occurrence of any other error, except a + 5 "Forced Error," at the same point as the "Compare Error" will + 6 override the "Compare Error." Note also that any "Compare + 7 Errors" detected by this command shall NOT be reported to the + 8 error log. Controllers may retry compare errors detected by this + 9 command. Provided the host does not modify the buffer while the + 10 transfer is in progress, such retries will have a deleterious + 11 effect on performance but cannot alter the final outcome of the + 12 command. + + 13 If a controller-based cache exists, the cache manager may use the + 14 Cache Access Attribute advice in managing the caching and + 15 comparing of the requested data area. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-16 + DETERMINE ACCESS PATHS Command 11 June 1992 + + + 1 6.6 DETERMINE ACCESS PATHS Command + + 2 Command Category: + + 3 Controller implementation dependent. See Section 6.6.3. + + 4 6.6.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable modifiers: + + 14 none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-17 + DETERMINE ACCESS PATHS Command 11 June 1992 + + + 1 6.6.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status codes: + + 11 Success (subcode "Normal") + 12 Success (subcode "Duplicate Unit Number") + 13 Command Aborted + 14 Unit-Offline + 15 Unit-Available + 16 Controller Error + 17 Drive Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-18 + DETERMINE ACCESS PATHS Command 11 June 1992 + + + 1 6.6.3 Description + + 2 Class drivers use this command to determine the topology of + 3 multiaccess drive configurations (described in Section 4.16.1, + 4 "Multiaccess Drives"). When sent to a unit that is + 5 "Unit-Online," it causes that unit and any other units that share + 6 its access path to identify themselves to any other controller to + 7 which they are connected. The MSCP servers in the other + 8 controllers will, as a result, become aware that the unit is + 9 online via the controller receiving this command. They will then + 10 send an ACCESS PATH attention message to their + 11 "Controller-Online" class drivers, informing the class drivers of + 12 alternate access paths to the unit. This command shall be + 13 treated as a no-op that always succeeds if the unit is incapable + 14 of being connected to more than one controller. + + 15 The actual notification to another controller, and thus the + 16 sending of an ACCESS PATH attention message, is dependent on the + 17 proper functioning of the unit and both controllers. + 18 Furthermore, it need not be 100% reliable. That is, assuming the + 19 unit and both controllers are functioning properly, there need + 20 only be a high probability (better than 50%) that the other + 21 controller will in fact be notified and send an ACCESS PATH + 22 attention message. For this reason, plus the fact that the + 23 topology may change while the unit remains "Unit-Online," hosts + 24 that need to know multiaccess drive topology must issue DETERMINE + 25 ACCESS PATHS commands to all "Unit-Online" units on a periodic + 26 basis, such as once every 5 to 15 minutes. + + 27 This command in no way affects the unit's actual state with + 28 respect to any controller. The unit remains "Unit-Online" via + 29 the receiving controller and remains "Unit-Offline" via other + 30 controllers. Note, however, that this command may affect the + 31 unit's "Unit-Offline" substate that is perceived by other + 32 controllers. + + 33 The processing of this command may, and often will, cause a + 34 transient performance degradation for the specified unit. + 35 Controllers shall consider this performance degradation when + 36 specifying their controller timeout interval. + + 37 A controller may, at its option, treat this as either an + 38 Immediate, Sequential, or Non-Sequential command. Host command + 39 timeout algorithms shall treat this as a non-Immediate command. + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-19 + DISK COPY DATA Command 11 June 1992 + + + 1 6.7 DISK COPY DATA Command + + 2 Command Category: + + 3 Non-Sequential (except as described in Section 6.7.3) + + + 4 6.7.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | logical block count | + 14 +---------------+---------------+ + 15 | reserved |src unit number| + 16 +---------------+---------------+ + 17 | source | + 18 +--- unit ---+ + 19 | identifier | + 20 +-------------------------------+ + 21 | destination lbn | + 22 +---------------+---------------+ + 23 | entry id | hrn or entloc | + 24 +---------------+---------------+ + 25 | reserved | + 26 +-------------------------------+ + 27 | source lbn | + 28 +-------------------------------+ + 29 |source unit's storage subsystem| + 30 +--- port ---+ + 31 | address | + 32 +-------------------------------+ + 33 |source unit's storage subsystem| + 34 +--- system ---+ + 35 | address | + 36 +-------------------------------+ + + + 37 unit number + + 38 Identifies the destination unit -- i.e., the device to + 39 which data is to be copied. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-20 + DISK COPY DATA Command 11 June 1992 + + + 1 | Allowable modifiers: + + 2 Clear Serious Exception (ignored) + + 3 Establish Communications Paths + + 4 To perform a copy operation the server establishes a + 5 communications path to the source unit in the same manner + 6 as a host class driver -- i.e., establishes a + 7 "Controller-Online" connection with the source unit's + 8 server (possibly itself) and brings the source unit into + 9 the "Unit-Online" state. The server already has a + 10 communications path established to the destination; if + 11 not, it would reject the command with a status of + 12 "Unit-Available" or "Unit-Offline." The communications + 13 path is established on behalf of the issuing host class + 14 driver. See Section 6.7.3, "DISK COPY DATA Command, + 15 Description" for details of the establish communications + 16 paths operation. + + 17 The server rejects the command as an "Invalid Command" + 18 ("invalid modifier" protocol error. See "Invalid + 19 Command" status in Section 5.5, "Status Codes") if either + 20 of the following conditions exist: + + 21 1. This modifier is clear and communications paths + 22 have not been established on behalf of the + 23 issuing host class driver. + + 24 2. This modifier is set and communications paths + 25 previously established on behalf of the issuing + 26 host class driver are still intact. + + + 27 History Log + 28 Reuse Entry + + 29 The History Log and Reuse Entry modifiers are + 30 interdependent and described together here to avoid + 31 confusion. + + 32 Note that the History Log modifier, the Reuse Entry + 33 modifier, the "hrn or entloc" field, and the "entry id" + 34 field are valid only for servers that provide "write + 35 history logging" support (see Section 5.6, "Controller + 36 Flags" for related information). + + 37 The setting of the History Log modifier determines + 38 whether information about this command is to be stored in + 39 a "write history entry." + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-21 + DISK COPY DATA Command 11 June 1992 + + + 1 The setting of the Reuse Entry modifier determines + 2 whether the server is to allocate a new "write history + 3 entry" or reuse one that was previously allocated. + + 4 If "write history logging" is supported, the History Log + 5 modifier is set, and the Reuse Entry modifier is clear, + 6 the server allocates a new "write history entry" and then + 7 stores the value contained in the "hrn (host reference + 8 number)" field, "entry id" field, and other information + 9 related to this command into the "write history entry" + 10 just allocated. If the server has no "write history + 11 entry" to allocate, it shall remember this fact. See + 12 Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 13 Description" for more details. To report this allocation + 14 failure to the host, the server returns FFFF(hex) in the + 15 "entry locator" field of the end message and sets the + 16 Allocation Failure end flag. See Section 5.4, "End + 17 Messages," for a description of this flag. + + 18 If "write history logging" is supported, the History Log + 19 modifier is set, and the Reuse Entry modifier is set, the + 20 server uses the value contained in the "entloc (entry + 21 locator)" field to locate the associated "write history + 22 entry" and then stores the other information related to + 23 this command into that "write history entry." + + 24 See Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 25 Description" for details regarding the maintenance and + 26 format of "write history entries." + + 27 If "write history logging" is supported and the History + 28 Log modifier is clear, the server ignores the setting of + 29 the Reuse Entry modifier and the contents of the "hrn or + 30 entloc" and "entry id" fields. + + 31 If "write history logging" is not supported and the + 32 History Log modifier or the Reuse Entry modifier is set, + 33 the server rejects the command as an "Invalid Command" + 34 ("invalid modifier" protocol error. See "Invalid + 35 Command" status in Section 5.5, "Status Codes"). + + 36 If "write history logging" is supported, the History Log + 37 modifier is set, and the "logical block count" field is + 38 zero, the server reject the command as an Invalid Command + 39 ("invalid logical block count" parameter error. See + 40 "Invalid Command" status in Section 5.5, "Status Codes"). + + 41 The server shall set the History Logged end flag in this + 42 command's end message if it has caused the write history + 43 log to contain a valid "write history entry" for this + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-22 + DISK COPY DATA Command 11 June 1992 + + + 1 command. See Section 5.4, "End Messages," for + 2 descriptions of all end message flags. + + 3 Local Source Unit + + 4 Host class drivers set this modifier to indicate that the + 5 source unit is served by the server that received this + 6 command. If this modifier is set, the server ignores the + 7 contents of the "source unit's subsystem port address" + 8 and the "source unit's subsystem system address" fields. + + 9 Host class drivers clear this modifier to indicate that + 10 the source unit is served by a server located in another + 11 storage subsystem. + + 12 This modifier is ignored by servers that only support + 13 Local Disk Copy Data. + + 14 Retain Communications Paths + + 15 See the description of the Establish Communications Paths + 16 modifier above for information about establishing + 17 communications paths. + + 18 The setting of this modifier determines whether the + 19 server should retain the communications paths established + 20 on behalf of the issuing host class driver after the copy + 21 operation has been aborted, completed, or terminated. + + 22 If this modifier is set, the server retains the + 23 communications paths established on behalf of the issuing + 24 host class driver. A host class driver may therefore + 25 issue subsequent DISK COPY DATA commands without + 26 incurring the overhead associated with the server + 27 re-establishing the communications paths. + + 28 If this modifier is clear, the server performs the + 29 operations necessary to disconnect the communications + 30 paths established on behalf of the issuing host class + 31 driver, upon completion of the request. See Section + 32 6.7.3, "DISK COPY DATA Command, Description" for details + 33 of the disconnect operation. + + 34 Note that under certain circumstances the server will + 35 disconnect the communications paths established on behalf + 36 of the issuing host class driver regardless of the + 37 setting of this modifier. The particular circumstances + 38 are described in Section 6.7.3, "DISK COPY DATA Command, + 39 Description." + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-23 + DISK COPY DATA Command 11 June 1992 + + + 1 Note also that the Communications Paths Retained end flag + 2 reflects the state of the communications paths relative + 3 to the issuing host as described in the "flags" field + 4 description contained in Section 6.7.2, "DISK COPY DATA + 5 Command, End Message Format." + + 6 | logical block count + + 7 Zero or the total number of logical blocks to be copied + 8 from the source unit to the destination unit. + + 9 If this value is nonzero, certain architectural + 10 constraints imposed by the destination unit and the + 11 source unit shall be met. The constraints depend on the + 12 contents of the "destination lbn" or "source lbn" fields. + 13 Those fields shall identify a logical block in the host + 14 area of the associated disk volume (i.e., the "lbn" is + 15 less than the "unit size" returned in the ONLINE end + 16 message) and the "logical block count" shall be less than + 17 or equal to the following maximum: + + 18 unit size - logical block number + + 19 where "unit size" is the unit's host area size (returned + 20 in the ONLINE end message) and "logical block number" is + 21 the contents of the associated "lbn" field in the command + 22 message. If the "logical block count" is greater than + 23 the above maximum for either the destination unit or the + 24 source unit, the server rejects the command as an + 25 "Invalid Command" ("invalid logical block count" + 26 parameter error. See "Invalid Command" status in Section + 27 5.5, "Status Codes"). + + 28 A host class driver should specify a zero value in this + 29 field when it is necessary to manipulate the + 30 communications paths established on its behalf without + 31 performing a copy operation. See the descriptions of the + 32 Establish Communications Paths and Retain Communications + 33 Paths modifiers later in this section for related + 34 information. The server ignores the contents of the + 35 "source lbn" and "destination lbn" fields when this field + 36 is zero. In addition, if this field is zero and the + 37 Local Source Unit modifier is set or the server only + 38 supports Local Disk Copy Data, the server ignores the + 39 contents of the "source unit's storage subsystem port + 40 address" and "source unit's storage subsystem system + 41 address" fields as well as the other fields listed above. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-24 + DISK COPY DATA Command 11 June 1992 + + + 1 src unit number + + 2 Identifies the source unit -- i.e., the device from which + 3 data is to be copied. + + 4 If the server does not support local copies between units + 5 with unlike geometries and copies where the source and + 6 destination are the same unit, has indicated this lack of + 7 support by setting the Restricted DISK COPY DATA + 8 Operations controller flag (see Section 5.6, "Controller + 9 Flags") in the SET CONTROLLER CHARACTERISTICS end + 10 message, and receives a local DISK COPY DATA command in + 11 which either of these conditions exists, it rejects the + 12 command as an "Invalid Command" ("invalid src unit + 13 number" parameter error. See "Invalid Command" status in + 14 Section 5.5, "Status Codes"). + + 15 If the server supports Remote Disk Copy Data the source + 16 unit may be the same as the destination unit, one of the + 17 other units served by the server that received this + 18 command, or a unit served by a (disk) MSCP server located + 19 in another storage subsystem, depending on the the + 20 setting of the Local Source Unit modifier and the values + 21 specified in this field, the "source unit's storage + 22 subsystem port address" field, and the "source unit's + 23 storage subsystem system address" field. Note that + 24 servers that provide Remote Disk Copy Data support + 25 implicitly provide Local Disk Copy Data support. + + 26 source unit identifier + + 27 The unique identifier assigned to the source unit as + 28 returned in the "unit identifier" end message field of a + 29 GET UNIT STATUS, ONLINE, or SET UNIT CHARACTERISTICS + 30 command addressed to the source unit. + + 31 Host class drivers should obtain this information + 32 directly from the source unit, via one of the commands + 33 listed above, prior to issuing this command. + + 34 The server compares the value of this field against the + 35 "unit identifier" it obtains directly from the source + 36 unit. If the values do not match exactly, the server + 37 rejects the command as an "Invalid Command" ("invalid + 38 source unit identifier" parameter error. See "Invalid + 39 Command" status in Section 5.5, "Status Codes"). + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-25 + DISK COPY DATA Command 11 June 1992 + + + 1 destination lbn + + 2 The logical block number (position) on the destination + 3 unit's disk volume at which the copy operation is to + 4 start. Write access to the destination unit's disk + 5 volume Replacement Control Table as part of the copy + 6 operation is prohibited. Therefore, this value shall + 7 identify a logical block in the host area of the + 8 destination unit's disk volume (i.e., the "destination + 9 lbn" is less than the "unit size" returned in the ONLINE + 10 end message). If this value is not in the host area, the + 11 server rejects the command as an "Invalid Command" + 12 ("invalid destination lbn" parameter error. See "Invalid + 13 Command" status in Section 5.5, "Status Codes"). + + 14 hrn or entloc + 15 entry id + + 16 These fields are used in conjunction with the History Log + 17 and Reuse Entry modifiers. See the description of those + 18 modifiers below. + + 19 source lbn + + 20 The logical block number (position) on the source unit's + 21 disk volume at which the copy operation is to start. + 22 Read access to the source unit's disk volume Replacement + 23 Control Table as part of the copy operation is + 24 prohibited. Therefore, this value shall identify a + 25 logical block in the host area of the source unit's disk + 26 volume (i.e., the "source lbn" is less than the "unit + 27 size" returned in the ONLINE end message). If this value + 28 is not in the host area, the server rejects the command + 29 as an "Invalid Command" ("invalid source lbn" parameter + 30 error. See "Invalid Command" status in Section 5.5, + 31 "Status Codes"). + + 32 If the server does not support local DISK COPY DATA for + 33 transfers in which the source and destination LBNs are + 34 different and has indicated this lack of support by + 35 setting the Restricted DISK COPY DATA Operations + 36 controller flag (see Section 5.6, "Controller Flags") in + 37 the SET CONTROLLER CHARACTERISTICS end message, the + 38 server rejects the command as an "Invalid Command" + 39 ("invalid source lbn" parameter error). + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-26 + DISK COPY DATA Command 11 June 1992 + + + 1 source unit's storage subsystem port address + + 2 The communications mechanism dependent port address of + 3 the storage subsystem to which the source unit is + 4 physically connected. The information encoded in this 8 + 5 byte (64 bit) field is the port address formatted as + 6 required by the communications mechanism being used. See + 7 Appendix F, "Port Address And System Address Formats" for + 8 a description of the formats currently defined. + + 9 The server ignores this field if either of the following + 10 conditions exists: + + 11 1. The server does not provide Remote Disk Copy + 12 Data support -- i.e., only Local Disk Copy Data + 13 is supported. + + 14 2. The server supports Remote Disk Copy Data but + 15 the Local Source Unit modifier is set. Note + 16 that servers that provide Remote Disk Copy Data + 17 support implicitly provide Local Disk Copy Data + 18 support. + + + 19 If Remote Disk Copy Data is supported and the Local + 20 Source Unit modifier is clear, the server rejects the + 21 command as an "Invalid Command" ("source unit's storage + 22 subsystem port address" parameter error. See "Invalid + 23 Command" status in Section 5.5, "Status Codes") if the + 24 content of this field: + + 25 1. Is not formatted correctly for the + 26 communications mechanism being used. + + 27 2. Identifies the subsystem in which the server + 28 receiving this command is located. (Host class + 29 drivers shall set the Local Source Unit + 30 modifier to request a Local Disk Copy Data + 31 operation.) + + + 32 source unit's storage subsystem system address + + 33 The communications protocol dependent system address of + 34 the storage subsystem to which the source unit is + 35 physically connected. The information encoded in this 8 + 36 byte (64 bit) field is the system address value formatted + 37 as required by the communications protocol being used. + 38 See Appendix F, "Port Address And System Address Formats" + 39 for a description of the formats currently defined. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-27 + DISK COPY DATA Command 11 June 1992 + + + 1 The server ignores this field if either of the following + 2 conditions exists: + + 3 1. The server does not provide Remote Disk Copy + 4 Data support -- i.e., only Local Disk Copy Data + 5 is supported. + + 6 2. The server supports Remote Disk Copy Data but + 7 the Local Source Unit modifier is set. Note + 8 that servers that provide Remote Disk Copy Data + 9 support implicitly provide Local Disk Copy Data + 10 support. + + 11 If Remote Disk Copy Data is supported, the Local Source + 12 Unit modifier is clear, and this field is not formatted + 13 correctly for the communications protocol being used, the + 14 server rejects the command as an "Invalid Command" + 15 ("source unit's storage subsystem system address" + 16 parameter error. See "Invalid Command" status in Section + 17 5.5, "Status Codes"). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-28 + DISK COPY DATA Command 11 June 1992 + + + 1 6.7.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | logical block count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | | + 15 +--- subcommand status ---+ + 16 | | + 17 +--- ---+ + 18 | | + 19 +---------------+---------------+ + 20 | entry id | entry locator | + 21 +---------------+---------------+ + + + 22 flags + + 23 Communications Paths Retained + + 24 The setting of this end flag indicates whether the + 25 communications paths the server established on behalf + 26 of the issuing host class driver have been retained. + 27 If this end flag is set, the communications paths + 28 have been retained. If this end flag is clear, the + 29 communications paths have been disconnected. + + 30 Note that the Communications Paths Retained end flag is + 31 only valid in this end message. Furthermore, only the + 32 Communications Paths Retained, Error Log Generated, + 33 Allocation Failure, and Bad Block Unreported end flags + 34 may be returned set in this end message; all other end + 35 flags are reserved. + + 36 logical block count + + 37 The number of logical blocks successfully copied from the + 38 source unit to the destination unit. + + 39 If an unrecoverable error occurs, the server sets this + 40 value equal to the number of contiguous logical blocks + 41 beginning with the "destination lbn" that were + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-29 + DISK COPY DATA Command 11 June 1992 + + + 1 successfully copied to the destination unit prior to the + 2 occurrence of the unrecoverable error. + + 3 If no unrecoverable errors occur during the copy + 4 operation, the server sets this value equal to the exact + 5 "logical block count" that was specified in the command + 6 message. + + 7 subcommand status + + 8 This field contains information related to the failure of + 9 a subcommand issued by the server to the source unit or + 10 the destination unit. + + 11 The contents of this field are undefined unless this + 12 command was terminated with a Subcommand Error status + 13 code. If this command is terminated with that status + 14 code, the "Destination" or "Source" bit flag (contained + 15 in the subcode portion of the status field) identifies + 16 which device encountered the condition or error. In + 17 cases where multiple conditions or errors have occurred, + 18 either on one or on both devices, the server only records + 19 and reports the first condition or error detected; all + 20 other condition or error context is discarded. + + 21 The information supplied when this field is valid (i.e., + 22 defined) is a portion of the command or end message + 23 (depending on the Subcommand Error subcode reported; see + 24 the descriptions of those subcodes for more detail) of + 25 the subcommand that encountered the condition or error. + 26 The portion of the command or end message supplied begins + 27 with the message's "unit number" field and ends with the + 28 highest field capable of being stored in the space + 29 allotted for this field. + + 30 The purpose of this field is to provide host class + 31 drivers with information to aid in recovering from + 32 failures that occur during the copy operation. However, + 33 when a failure occurs information is only provided for + 34 one of the devices involved in the copy operation. The + 35 state of the other device cannot be deduced from that + 36 information. Host class drivers should therefore query + 37 the other device for its current state to determine + 38 whether copy operation recovery should be attempted. + + 39 entry locator + + 40 If "write history logging" is supported and the History + 41 Log modifier is set in the command message, this field + 42 contains the value assigned by the server that uniquely + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-30 + DISK COPY DATA Command 11 June 1992 + + + 1 identifies the internal location of the "history entry" + 2 where this command's information was stored. If, + 3 however, an allocation failure occurred, this field + 4 contains the value FFFF(hex). Otherwise, this field is + 5 undefined. + + 6 This field contains a valid entry locator of a "write + 7 history entry" for this command if and only if the + 8 History Logged end flag is set in the "flags" field of + 9 this end message. + + 10 See the description of the History Log and Reuse Entry + 11 modifiers in Section 6.7.1, "DISK COPY DATA Command, + 12 Command Message Format" and Section 6.19.3, "WRITE + 13 HISTORY MANAGEMENT Command, Description" for more detail. + + 14 entry id + + 15 If "write history logging" is supported and the History + 16 Log modifier is set in the command message, the contents + 17 of the corresponding command message field is copied + 18 without modification to this field. Otherwise this field + 19 is undefined. + + 20 See the description of the History Log and Reuse Entry + 21 modifies in Section 6.7.1, "DISK COPY DATA Command, + 22 Command Message Format" and Section 6.19.3, "WRITE + 23 HISTORY MANAGEMENT Command, Description" for more detail. + + 24 Status Codes: + + 25 Success (subcode "Normal") + 26 Success (subcode "Duplicate Unit Number") + + 27 Before returning this status the server performs the + 28 following: + + 29 1. Sets the "logical block count" end message + 30 field as described in that field's description. + + 31 2. If the the Retain Communication Paths modifier + 32 is clear, performs the operations necessary to + 33 disconnect the communications paths established + 34 on behalf of the issuing host class driver. + 35 See Section 6.7.3, "DISK COPY DATA Command, + 36 Description" for details of the disconnect + 37 operations. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-31 + DISK COPY DATA Command 11 June 1992 + + + 1 Invalid Command (subcode "Invalid Modifier") + + 2 See the description of the Establish Communications Paths + 3 modifier in Section 6.7.1, "DISK COPY DATA Command, + 4 Command Message Format" for specific information about + 5 this error. Note that if the command is rejected with + 6 this status, communications paths are retained only if + 7 already established by a previous DISK COPY DATA command. + + 8 Invalid Command (subcode "Invalid Logical Block Count") + 9 Invalid Command (subcode "Invalid Destination LBN") + 10 Invalid Command (subcode "Invalid Source LBN") + + 11 See the descriptions of the "logical block count," + 12 "destination lbn," and "source lbn," command message + 13 fields in Section 6.7.1, "DISK COPY DATA Command, Command + 14 Message Format" for specific information about these + 15 errors. + + 16 Note that communications paths are retained even when the + 17 command is rejected with one of these status codes. + + 18 Invalid Command (subcode "Invalid Src Unit Number") + 19 Invalid Command (subcode "Invalid Source Unit Identifier") + + 20 See the description of the "src unit number" and "source + 21 unit identifier" command message fields in Section 6.7.1, + 22 "DISK COPY DATA Command, Command Message Format" for + 23 specific information about these errors. Note that if + 24 the command is rejected with one of these status codes, + 25 the communications paths are not retained, regardless of + 26 the setting of the Retain Communications Path command + 27 modifier. + + 28 Invalid Command (subcode "Invalid Source Unit's Storage + 29 Subsystem Port Address") + 30 Invalid Command (subcode "Invalid Source Unit's Storage + 31 Subsystem System Address") + + 32 See the descriptions of the "source unit's storage + 33 subsystem port address," and "source unit's storage + 34 subsystem system address" command message fields in + 35 Section 6.7.1, "DISK COPY DATA Command, Command Message + 36 Format" for specific information about these errors. + + 37 Invalid Command (subcode "Invalid Entry Locator") + + 38 The value specified in the "entloc (entry locator)" field + 39 is not within the limits of the server's "write history + 40 entry" set. Note that if the command is rejected with + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-32 + DISK COPY DATA Command 11 June 1992 + + + 1 this status, communications paths are retained only if + 2 already established by a previous DISK COPY DATA command. + + 3 See the description of the History Log and Reuse Entry + 4 modifiers in Section 6.7.1, "DISK COPY DATA Command, + 5 Command Message Format" and Section 6.19.3, "WRITE + 6 HISTORY MANAGEMENT Command, Description" for more detail. + + 7 Note that this error can only occur if "write history + 8 logging" is supported and the History Log and Reuse Entry + 9 modifiers are both set in the command message. + + 10 Invalid Command (subcode "Invalid Entry Id") + + 11 The server located the "write history entry" identified + 12 in the "entloc (entry locator)" field but found that the + 13 "entry id" contained in that entry does not equal the + 14 value supplied by a host class driver when that entry was + 15 allocated. This status may also be returned if the + 16 History Log modifier was set, the Reuse Entry modifier + 17 was clear, and the host supplied a value of FFFF (hex) in + 18 the "entry id" field. Note that if the command is + 19 rejected with this status, communications paths are + 20 retained only if already established by a previous DISK + 21 COPY DATA command. + + 22 See the description of the History Log and Reuse Entry + 23 modifiers in Section 6.7.1, "DISK COPY DATA Command, + 24 Command Message Format" and Section 6.19.3, "WRITE + 25 HISTORY MANAGEMENT Command, Description" for more detail. + + 26 Note that this error can only occur if "write history + 27 logging" is supported and the History Log modifier is set + 28 in the command message. + + 29 Command Aborted + + 30 Before returning this status code the server performs the + 31 following: + + 32 1. Ceases issuing transfer subcommands to the + 33 destination unit and the source unit. + + 34 2. Allows all transfer subcommands that are + 35 currently outstanding on the destination unit + 36 to complete. Outstanding transfer subcommands + 37 issued to the source may be aborted or allowed + 38 to complete. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-33 + DISK COPY DATA Command 11 June 1992 + + + 1 3. Discards any and all data obtained from the + 2 source unit and buffered prior to the receipt + 3 of the ABORT command as well as any data + 4 obtained from the source unit as a result of + 5 allowing outstanding transfer subcommands to + 6 complete in Step 2 above. + + 7 4. Sets the "logical block count" end message + 8 field as if an unrecoverable error had occurred + 9 as described in that field's description. + + 10 5. If the Retain Communication Paths modifier is + 11 clear, performs the operations necessary to + 12 disconnect the communications paths established + 13 on behalf of the issuing host class driver. + 14 See Section 6.7.3, "DISK COPY DATA Command, + 15 Description" for details of the disconnect + 16 operations. + + + 17 Unit-Available + 18 Unit-Offline + 19 Write Protected + + 20 If any of these conditions is detected on the destination + 21 unit prior to initiating the copy operation, the server + 22 shall reject the command with the appropriate status + 23 code. + + 24 If any of these conditions is detected on the destination + 25 unit after the copy operation has been initiated, the + 26 server reports it via the Subcommand Error status code. + + 27 In the case of the Unit-Available and Unit-Offline + 28 conditions, the server shall perform the operations + 29 necessary to disconnect the communications paths + 30 previously established on behalf of the issuing host + 31 class driver, if any. See Section 6.7.3, "DISK COPY DATA + 32 Command, Description" for details of the disconnect + 33 operations. + + 34 In the case of the Write Protected condition, + 35 communications paths are not retained, regardless of the + 36 setting of the Retain Communications Paths command + 37 modifier. + + 38 Controller Error (subcode "Remote Connection Lost") + + 39 The "Controller-Online" connection between the server and + 40 a remote source unit's server was spontaneously lost (for + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-34 + DISK COPY DATA Command 11 June 1992 + + + 1 any reason). + + 2 Note that unlike a host class driver the server will not + 3 attempt to recover from a remote connection lost + 4 condition (e.g., re-establish the communications path, + 5 reissue previously outstanding commands, etc.). Instead, + 6 the server performs the following before returning this + 7 status: + + 8 1. Ceases issuing transfer subcommands to the + 9 destination unit. + + 10 2. Allows all transfer subcommands that are + 11 currently outstanding on the destination unit + 12 to complete. + + 13 3. Discards any and all data obtained from the + 14 source unit and buffered prior to the + 15 occurrence of the connection lost condition. + + 16 4. Sets the "logical block count" end message + 17 field as if an unrecoverable error had occurred + 18 as described in that field's description. + + 19 5. Performs the operations necessary to disconnect + 20 the destination unit communications path + 21 established on behalf of the issuing host class + 22 driver (regardless of the setting of the Retain + 23 Communication Paths modifier). See Section + 24 6.7.3, "DISK COPY DATA Command, Description" + 25 for details of the disconnect operations. + + 26 6. Sends a DISK COPY DATA CORRELATION information + 27 log message with the Controller Error (subcode + 28 "Remote Connection Lost") event code to the + 29 appropriate host class driver. See Section + 30 6.7.3, "DISK COPY DATA Command, Description, + 31 Error Logs and Correlation Logs," for related + 32 information. + + 33 Note also that this error can only occur if the source + 34 unit is located in a remote subsystem. + + 35 Controller Error (subcode "Remote Connection Request Failed, + 36 Insufficient Resources to Request Remote + 37 Connection) + 38 Controller Error (subcode "Remote Connection Request Failed, + 39 Subsystem Port Address Responded But + 40 Subsystem System Address Does Not Match") + 41 Controller Error (subcode "Remote Connection Request Failed, + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-35 + DISK COPY DATA Command 11 June 1992 + + + 1 Subsystem Port Address Responded But No + 2 MSCP Server Present") + 3 Controller Error (subcode "Remote Connection Request Failed, + 4 Subsystem Port Address Responded But No + 5 Resources Available") + 6 Controller Error (subcode "Remote Connection Request Failed, + 7 Subsystem Port Address Responded But No + 8 Credits Available") + 9 Controller Error (subcode "Remote Connection Request Failed, + 10 No Response From Subsystem Port Address") + 11 Controller Error (subcode "Remote Connection Request Failed, + 12 Subsystem Port Address Responding But + 13 Negative Acknowledge Retry Algorithm + 14 Exhausted") + 15 Controller Error (subcode "Remote Connection Request Failed, + 16 Subsystem Port Request Timeout Exceeded") + 17 Controller Error (subcode "Remote Connection Request Failed, + 18 Subsystem Port Address Responded But + 19 Rejected With Disconnected") + + 20 The server's initial attempt to establish a + 21 "Controller-Online" connection with a remote source + 22 unit's server failed for the reason indicated by the + 23 subcode value. New subcode values for this status may be + 24 added as the need arises via an ECO to this + 25 specification. + + 26 The server should check for and report a "subsystem + 27 system address" mismatch before checking for and + 28 reporting the unavailability of an MSCP server. If that + 29 is not possible, a statement to that effect shall appear + 30 in the server's (controller's) Functional Specification. + + 31 Before returning this status code the server shall send a + 32 DISK COPY DATA CORRELATION information log message with + 33 the appropriate Controller Error (subcode "Remote + 34 Connection Request Failed") event code to the appropriate + 35 host class driver. See Section 6.7.3.2, "DISK COPY DATA + 36 Command, Description, Error Logs and Correlation Logs," + 37 for related information. + + 38 Note that these errors can only occur if the source unit + 39 is located in a remote subsystem. + + 40 Controller Error (subcode "Local Connection Request Failed, + 41 Insufficient Resources to Request Local + 42 Connection) + + 43 The server's initial attempt to establish a + 44 "Controller-Online" connection with a local source unit's + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-36 + DISK COPY DATA Command 11 June 1992 + + + 1 server failed due to insufficient controller resources. + 2 Note that this error can only occur if the source unit is + 3 located in the same subsystem as the server. + + 4 Write History Entry Access Error (subcode "Allocation Failure + 5 Table Full") + + 6 The server was unable to allocate a "write history entry" + 7 and could not record this fact because the Allocation + 8 Failure Table was full. This is a transient condition; + 9 therefore, the host should reissue the command. See + 10 Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 11 Description" for more details. + + 12 Note that this error can occur only if "write history + 13 logging" is supported and the History Log modifier is set + 14 and Reuse Entry modifier is clear in the command message. + + 15 Note also that communications paths are retained, + 16 regardless of the setting of the Retain Communications + 17 Paths command modifier. + + 18 Subcommand Error (subcode "Destination -- Command Timed Out") + 19 Subcommand Error (subcode "Source -- Command Timed Out") + + 20 The oldest outstanding subcommand the server issued to + 21 the destination unit or the source unit timed out. The + 22 subcode bit flag, "Destination" or "Source," identifies + 23 the device on which the time out occurred. + + 24 Note that the server shall implement the command timeout + 25 algorithm described in Section 4.10, "Command Timeouts" + 26 for all outstanding subcommands in the same manner as a + 27 host class driver, with one exception. The only + 28 exception is that the server makes no attempt to recover + 29 from a command time out failure (e.g., re-establish the + 30 communications path, reissue previously outstanding + 31 commands, etc.). + + 32 Note also that the server's command timeout interval may + 33 be shorter than the command timeout interval of the + 34 remote server. Therefore, the server may indicate + 35 "progress" to the host while waiting for the subcommand's + 36 longer interval to lapse. + + 37 Before returning this status the server performs the + 38 following: + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-37 + DISK COPY DATA Command 11 June 1992 + + + 1 1. Ceases issuing transfer subcommands to the + 2 destination unit and the source unit. + + 3 2. Allows all transfer subcommands that are + 4 currently outstanding on the destination unit + 5 and not affected by the command timeout to + 6 complete. Outstanding transfer subcommands + 7 issued to the source and not affected by the + 8 command timeout may be aborted or allowed to + 9 complete. + + 10 3. Discards any and all data obtained from the + 11 source unit and buffered prior to the + 12 occurrence of the command timeout as well as + 13 any data obtained from the source unit as a + 14 result of allowing outstanding transfer + 15 subcommands to complete in Step 2 above. + + 16 4. Places the appropriate portion of the timed out + 17 command's command message in the "subcommand + 18 status" end message field. + + 19 5. Sets the "logical block count" end message + 20 field as if an unrecoverable error had occurred + 21 as described in that field's description. + + 22 6. Performs the operations necessary to disconnect + 23 the communications paths established on behalf + 24 of the issuing host class driver (regardless of + 25 the setting of the Retain Communication Paths + 26 modifier). See Section 6.7.3, "DISK COPY DATA + 27 Command, Description" for details of the + 28 disconnect operations. + + 29 7. Sends a DISK COPY DATA CORRELATION information + 30 log message with the appropriate Subcommand + 31 Error event code/subcode to the appropriate + 32 host class driver. The "event dependent + 33 information" field should contain a copy of the + 34 MSCP command message for the subcommand that + 35 timed out. See Section 6.7.3.2, "DISK COPY + 36 DATA Command, Description, Error Logs and + 37 Correlation Logs," for related information. + + + 38 Subcommand Error (subcode "Destination -- Inconsistent + 39 State") + 40 Subcommand Error (subcode "Source -- Inconsistent State") + + 41 The server detected an operational inconsistency as a + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-38 + DISK COPY DATA Command 11 June 1992 + + + 1 result of the execution of a subcommand it issued to the + 2 destination unit or the source unit. The subcode bit + 3 flag, "Destination" or "Source," identifies the device on + 4 which the inconsistent state was detected. + + 5 This status is returned under the following conditions: + + 6 A. The source unit is located in a remote + 7 subsystem and the Controller Initiated Bad + 8 Block Replacement (CIBBR) flag is not set in + 9 the end message of the SET CONTROLLER + 10 CHARACTERISTICS command issued to a remote + 11 source unit's server or the ONLINE command + 12 issued to a remote source unit. Note that + 13 CIBBR is required on a remote source unit + 14 because the server will not provide "Host + 15 Initiated Bad Block Replacement." + + 16 B. The server determines via ONLINE commands + 17 issued to the source unit and the destination + 18 unit that the sector format (512 bytes or 576 + 19 bytes) of the source unit is not identical to + 20 that of the destination unit. + + 21 C. An ONLINE command issued to the destination + 22 unit or the source unit is completed with a + 23 status of Success (subcode "Already Online"). + + 24 D. An Invalid Command status was returned for a + 25 subcommand issued to the destination unit or + 26 the source unit. + + 27 E. + + 28 | A READ command issued to the source unit, or a + 29 | WRITE command issued to the destination unit is + 30 | terminated with a status of Host Buffer Access + 31 | Error (all subcodes except "Cause Not + 32 Available" and "Host Memory Parity Error"). + + 33 F. An AVAILABLE command issued to the destination + 34 unit or the source unit is completed or + 35 rejected with a status of Success (subcode + 36 "Spin-down Ignored"), Success (subcode "Still + 37 Online/Unload Ignored"), or Unit-Available + 38 (subcode "Already In Use"). + + 39 Before returning this status the server performs the + 40 following: + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-39 + DISK COPY DATA Command 11 June 1992 + + + 1 1. Ceases issuing transfer subcommands to the + 2 destination unit and the source unit. + + 3 2. Allows all transfer subcommands that are + 4 currently outstanding on the destination unit + 5 to complete. Outstanding transfer subcommands + 6 issued to the source may be aborted or allowed + 7 to complete. + + 8 3. Discards any and all data obtained from the + 9 source unit and buffered prior to the detection + 10 of the inconsistency as well as any data + 11 obtained from the source unit as a result of + 12 allowing outstanding transfer subcommands to + 13 complete in Step 2 above. + + 14 4. Places the appropriate portion of the failed + 15 command's end message in the "subcommand + 16 status" end message field. + + 17 5. Sets the "logical block count" end message + 18 field as if an unrecoverable error had occurred + 19 as described in that field's description. + + 20 6. Performs the operations necessary to disconnect + 21 the communications paths established on behalf + 22 of the issuing host class driver (regardless of + 23 the setting of the Retain Communication Paths + 24 modifier). See Section 6.7.3, "DISK COPY DATA + 25 Command, Description" for details of the + 26 disconnect operations. + + 27 7. For the last four "Inconsistent State" + 28 conditions listed above (i.e., C through F), + 29 sends a DISK COPY DATA CORRELATION error log + 30 message with the appropriate Subcommand Error + 31 event code/subcode to the appropriate host + 32 class driver. The "event dependent + 33 information" field should contain a copy of the + 34 subcommand's end message. See Section 6.7.3.2, + 35 "DISK COPY DATA Command, Description, Error + 36 Logs and Correlation Logs," for related + 37 information. + + 38 8. The last four "Inconsistent State" conditions + 39 listed above (i.e., C through F) indicate a + 40 serious malfunction in the server's operation. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-40 + DISK COPY DATA Command 11 June 1992 + + + 1 After attempting to deliver the end message for + 2 the DISK COPY DATA Command, the server shall + 3 enter the "Controller-Available" state relative + 4 to all hosts. + + + 5 Subcommand Error (subcode "Destination -- Unrecoverable + 6 Error") + 7 Subcommand Error (subcode "Source -- Unrecoverable Error") + + 8 An unrecoverable error occurred during the execution of a + 9 subcommand issued by the server to the destination unit + 10 or the source unit. The subcode bit flag, "Destination" + 11 or "Source," identifies the device on which the + 12 unrecoverable error occurred. + + 13 The following are classed as unrecoverable errors: + + 14 A. Any subcommand issued to the destination unit + 15 or the source unit is rejected with any of the + 16 following status codes: Controller Error, + 17 Drive Error, Media Format Error, + 18 Unit-Available, or Unit-Offline. + + 19 B. + + 20 | A READ command issued to the source unit, or a + 21 | WRITE command issued to the destination unit is + 22 | terminated with a status of Host Buffer Access + 23 | Error (subcode "Cause Not Available" or "Host + 24 Memory Parity Error"). + + 25 C. + + 26 | A READ subcommand issued to the source unit is + 27 | rejected with either of the following status + 28 | codes: Compare Error or Data Error. + + 29 D. A WRITE subcommand issued to the destination + 30 unit is rejected or terminated with any of the + 31 following status codes: Compare Error, Data + 32 Error, or Write Protected. + + + 33 Before returning this status the server performs the + 34 following: + + 35 1. Ceases issuing transfer subcommands to the + 36 destination unit and the source unit. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-41 + DISK COPY DATA Command 11 June 1992 + + + 1 2. Allows all transfer subcommands that are + 2 currently outstanding on the destination unit + 3 or the source unit to complete. + + 4 3. Discards any and all data obtained from the + 5 source unit and buffered prior to the detection + 6 of the unrecoverable error. + + 7 4. Allows all transfer subcommands that are + 8 currently outstanding on the destination unit + 9 to complete. Outstanding transfer subcommands + 10 issued to the source may be aborted or allowed + 11 to complete. + + 12 5. Discards any and all data obtained from the + 13 source unit and buffered prior to the detection + 14 of the unrecoverable error as well as any data + 15 obtained from the source unit as a result of + 16 allowing outstanding transfer subcommands to + 17 complete in Step 2 above. + + 18 6. Places the appropriate portion of the failed + 19 command's end message in the "subcommand + 20 status" end message field. + + 21 7. Sets the "logical block count" end message + 22 field as described in that field's description. + + 23 8. With the exception of the occurrence of the + 24 Media Format Error, Unit-Available, and + 25 Unit-Offline error conditions listed in A + 26 above, performs the operations necessary to + 27 disconnect the communications paths established + 28 on behalf of the issuing host class driver if + 29 the Retain Communication Paths modifier is + 30 clear. + + 31 If the Media Format Error, Unit-Available, and + 32 Unit-Offline error conditions listed in A above + 33 occur, performs the operations necessary to + 34 disconnect the communications paths established + 35 on behalf of the issuing host class driver + 36 (regardless of the setting of the Retain + 37 Communication Paths modifier). See Section + 38 6.7.3, "DISK COPY DATA Command, Description" + 39 for details of the disconnect operations. + + 40 9. Sends a DISK COPY DATA CORRELATION information + 41 log message with the appropriate Subcommand + 42 Error event code/subcode to the appropriate + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-42 + DISK COPY DATA Command 11 June 1992 + + + 1 host class driver. The "event dependent + 2 information" field should contain a copy of the + 3 subcommand's end message. See Section 6.7.3.2, + 4 "DISK COPY DATA Command, Description, Error + 5 Logs and Correlation Logs," for related + 6 information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-43 + DISK COPY DATA Command 11 June 1992 + + + 1 6.7.3 Description + + + 2 Support of the DISK COPY DATA command is a server implementation + 3 dependent option. Servers that do not provide such support shall + 4 reject this command as an "Invalid Command" ("invalid opcode" + 5 protocol error. See "Invalid Command" status in Section 5.5, + 6 "Status Codes"). + + 7 For servers that support only local DISK COPY DATA operations, + 8 the minimum command length is 44 bytes. For servers that support + 9 remote DISK COPY DATA operations, the minimum command length is + 10 60 bytes. All DISK COPY DATA commands issued by the host shall + 11 be at least as long as the minimum length supported by the + 12 server. If a server receives a DISK COPY DATA command that is + 13 shorter than the minimum command length, it rejects the command + 14 as an "Invalid Command" ("invalid message length" protocol error. + 15 See "Invalid Command" status in Section 5.5, "Status Codes"). + + 16 Servers that support remote DISK COPY DATA shall support remote + 17 copies between units with unlike geometries and remote copies + 18 where the source LBN and destination LBN differ. All servers + 19 should support copies between units with unlike geometries, + 20 copies where the source and destination LBN differ, and copies + 21 where the source and destination are the same unit. Servers that + 22 do not support local copies between units with unlike geometries, + 23 local copies where the source and destination LBN differ, and + 24 copies where the source and destination are the same unit + 25 indicate this lack of support by setting the Restricted DISK COPY + 26 DATA Operations controller flag in the SET CONTROLLER + 27 CHARACTERISTICS end message (see Section 5.6, "Controller + 28 Flags"). + + 29 This command allows data to be copied from one disk device to + 30 another without host intervention. A server may support two + 31 different types of copy operations: local and remote. In a + 32 local copy operation, both the source and destination disk drives + 33 are physically connected to the storage subsystem in which the + 34 server that receives this command is located. In a remote copy + 35 operation, the destination disk drive is physically connected to + 36 the storage subsystem in which the server that received this + 37 command is located and the source disk drive is physically + 38 connected to another storage subsystem connected to the same + 39 communications mechanism. Local copy operations may be supported + 40 by servers that provide Multihost Support as well as those that + 41 do not. A server that provides Multihost Support may, at its + 42 option, support both local and remote copy operations or only + 43 local copy operations. However, support of both local and remote + 44 copy operations is preferred. A server signifies the type of + 45 copy operation it supports by setting the Local Disk Copy Data + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-44 + DISK COPY DATA Command 11 June 1992 + + + 1 and Remote Disk Copy Data controller flags appropriately. + + 2 6.7.3.1 Operation + + 3 To perform a copy operation a host class driver merely specifies + 4 the devices that are to act as the data source and data + 5 destination, the starting logical block numbers on the source and + 6 destination, and the quantity of data to be copied from the + 7 source to the destination. The server then performs the + 8 following operations to fulfill the host's DISK COPY DATA + 9 request: + + 10 1. Checks the contents of the command message + 11 modifiers and fields to ensure that a valid copy + 12 operation can be performed. The checks performed + 13 are described in (or implied by) the various + 14 modifier and field descriptions in Section 6.7.1, + 15 "DISK COPY DATA Command, Command Message Format." + 16 If any of the checks fail, the command is rejected + 17 as an "Invalid Command." + + 18 Some of the checks require information provided by + 19 operations performed in Steps 4, 5, and 6 below. + 20 Command message field validation is therefore not + 21 complete until those steps have been completed. + + 22 2. If communications paths to the destination unit and + 23 the source unit have already been established on + 24 behalf of the issuing host class driver and those + 25 paths remain intact, proceeds to Step 6. + + 26 Otherwise, proceeds to Step 3. + + 27 3. Performs the internal operations necessary to + 28 establish a "Controller-Online" connection with + 29 itself to enable communications with the + 30 destination unit and in the case of a Local Disk + 31 Copy Data (i.e., the Local Source Unit modifier is + 32 set or the server only supports Local Disk Copy + 33 Data) with the source unit. + + 34 If the source unit is local, proceeds to Step 4. + + 35 If the source unit is remote (i.e., it is connected + 36 to a storage subsystem other than the one in which + 37 the server is located), performs the communication + 38 protocol dependent operations necessary to + 39 establish a "Controller-Online" connection with the + 40 source unit's server (i.e., the remote disk MSCP + 41 server) and then proceeds to Step 4. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-45 + DISK COPY DATA Command 11 June 1992 + + + 1 4. Issues a SET CONTROLLER CHARACTERISTICS commands to + 2 itself and, if the source unit is located in a + 3 remote subsystem, to the source unit's server, to + 4 set an appropriate "host timeout," to request the + 5 generation of error logs if required, and to + 6 determine the maximum byte count supported. + + 7 Note that processing related to "host timeout" and + 8 error logging is discussed later in this section. + + 9 5. Issues an ONLINE command to the source unit to + 10 bring it into the "Unit-Online" state (relative to + 11 the server) and ensures that the destination unit + 12 is "Unit-Online." + + 13 Note that the server shall issue only one ONLINE + 14 command if the destination unit is the same as the + 15 source unit. + + 16 6. Issues GET UNIT STATUS commands to the destination + 17 unit and the source unit to obtain device + 18 characteristics (i.e., disk volume geometry) useful + 19 for optimizing the copy operation. + + 20 Note that during this step the server shall + 21 validate the "source unit identifier" command + 22 message field using the value returned in the "unit + 23 identifier" end message field of the GET UNIT + 24 STATUS command issued. See the description of the + 25 "source unit identifier" field in Section 6.7.1 for + 26 more detail. + + 27 7. Issues a READ command to the source unit to obtain + 28 the source data. + + 29 8. Issues a WRITE command to the destination unit to + 30 copy the source data. + + 31 9. Steps 7 and 8 are repeated until the copy operation + 32 is aborted, completed, or terminated. + + 33 Note that for subsequent DISK COPY DATA commands + 34 issued by the same host class driver the server + 35 will not perform Steps 3, 4, and 5 (provided the + 36 communications paths involved remain intact). + 37 However, the server shall perform Steps 1 and 6 (as + 38 well as Steps 7 and 8) for each DISK COPY DATA + 39 command received. The server shall retain all + 40 information acquired in Steps 4 and 5 that is + 41 required to perform Step 1 until the communications + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-46 + DISK COPY DATA Command 11 June 1992 + + + 1 paths involved are no longer intact. + + 2 The operations described in the preceding steps provide a + 3 simplified model of operation that is solely intended to + 4 identify and describe functions that are implied in other + 5 sections of this command's description. Any deviations from + 6 the model shall be implemented in a manner that guarantees + 7 that all host class driver visible results are identical to + 8 those described in this command description. + + 9 The actions the server takes after the copy operation has been + 10 aborted, completed, or terminated are described in the various + 11 status code descriptions in Section 6.7.2, "DISK COPY DATA + 12 Command, End Message Format." + + 13 Throughout this command description numerous references are made + 14 to the effect that the server issues standard MSCP commands (in + 15 the same manner as a host class driver). Note that the server is + 16 expressly permitted to perform any equivalent internal operation + 17 instead of issuing a standard command provided that the following + 18 rules are followed: + + 19 A. The result of the internal operation shall be identical + 20 to that of the standard command. + + 21 B. If the internal operation results in an error, the + 22 "subcommand status" end message field shall be set as + 23 if a standard command had been issued. + + 24 Naturally, the use of internal operations is limited to + 25 transactions the server can perform on itself and the unit(s) it + 26 serves. Standard commands shall be used in all transactions + 27 dealing with a remote source unit and its server. + + 28 The server shall provide "Controller Initiated Bad Block + 29 Replacement" (CIBBR) support on all disk drives that it serves -- + 30 i.e., the CIBBR controller flag shall be set. + + 31 The server will not perform "Host Initiated Bad Block + 32 Replacement" for a remote source unit. Host class drivers should + 33 verify that CIBBR is supported on a remote source unit prior to + 34 issuing this command. Failure to do so will result in the + 35 rejection of this command with a status of Subcommand Error + 36 (subcode "Source -- Inconsistent State"). See the description of + 37 that status in Section 6.7.2, "DISK COPY DATA Command, End + 38 Message Format," for more detail. + + 39 As mentioned in the description of the Subcommand Error (subcode + 40 "Destination/Source -- Command Timeout) status in Section 6.7.2 + 41 the server shall implement the command timeout algorithm + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-47 + DISK COPY DATA Command 11 June 1992 + + + 1 described in Section 4.10, "Command Timeouts" for all outstanding + 2 subcommands in the same manner as a host class driver, with one + 3 exception. The only exception is that the server makes no + 4 attempt to recover from a command time out failure (e.g., reissue + 5 previously outstanding commands). + + 6 With regard to GET COMMAND STATUS commands that specify the + 7 "outstanding reference number" of a DISK COPY DATA command the + 8 server shall provide status based on the progress of the copy + 9 operation in the same manner required for any other command. See + 10 Sections 6.11, "GET COMMAND STATUS Command" and 7.5, "Multihost + 11 GET COMMAND STATUS Command" for more detail. Note that certain + 12 communications protocols (e.g., SCA) do not provide a direct + 13 method for determining whether a remote subsystem exists. If + 14 such a communications protocol is in use, the server's request to + 15 establish a "Controller-Online" connection with a remote source + 16 unit's server will never complete if the subsystem does not + 17 exist. To allow host class drivers to react to such an + 18 occurrence the server shall not show progress for a DISK COPY + 19 DATA command where the source unit is located in a remote + 20 subsystem until after the "Controller-Online" connection to the + 21 remote subsystem has been successfully established. That action + 22 will eventually cause the host class driver to timeout the + 23 affected DISK COPY DATA command as described in Section 4.10, + 24 "Command Timeouts." In such a case it is highly recommended that + 25 a host class driver not resynchronize with the server without + 26 first checking that it can still access the remote source unit. + 27 If the remote source can no longer be accessed, the host class + 28 driver should issue an ABORT command referencing the affected + 29 DISK COPY DATA command. In response to such an ABORT command the + 30 server shall cancel the connection establishment request and + 31 terminate the command in the normal fashion. If the remote + 32 source unit can still be accessed, the host class driver should + 33 assume that the server may be insane and perform the normal + 34 command timeout operations as prescribed. + + 35 The server shall not limit the use of a particular destination + 36 unit or source unit to copy operations requested by any single + 37 host class driver. Communications paths established on behalf of + 38 multiple class drivers may be managed in any manner convenient to + 39 the server. Regardless of the method used for communications + 40 path management the server shall: + + 41 A. Maintain state context separately for each host class + 42 driver to give the appearance that a communications + 43 path is established solely on an individual host class + 44 driver's behalf. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-48 + DISK COPY DATA Command 11 June 1992 + + + 1 B. Associate the communications paths established on a + 2 particular host class driver's behalf with the + 3 "Controller-Online" connection established between the + 4 server and that host class driver. (This association + 5 is provided to ensure that the communications paths are + 6 dissolved following the loss of a "Controller-Online" + 7 connection.) + + 8 The server shall disconnect the communications paths established + 9 on behalf of a host class driver under the following + 10 circumstances if and only if the Retain Communications Paths + 11 modifier is clear: + + 12 A. This command is aborted -- i.e., status is Command + 13 Aborted. + + 14 B. This command is completed successfully -- i.e., status + 15 is Success (subcode "Normal"). + + 16 C. An unrecoverable error occurred during the execution of + 17 a subcommand issued by the server to the destination + 18 unit or the source unit -- i.e., this command is + 19 terminated with a Subcommand Error (subcode + 20 "Destination/Source -- Unrecoverable Error") status, + 21 all causes except Media Format Error, Unit-Available, + 22 and Unit-Offline. + + 23 Regardless of the setting of the Retain Communications Paths + 24 modifier the server shall disconnect the communications paths + 25 established on behalf of a host class driver under the following + 26 circumstances: + + 27 A. The "Controller-Online" connection to the host class + 28 driver is lost -- i.e., the server becomes + 29 "Controller-Available" or "Controller-Offline" relative + 30 to the issuing host class driver. + + 31 B. The destination unit enters the "Unit-Available" or + 32 "Unit-Offline" state relative to the host class driver + 33 -- i.e., this command is rejected with a Unit-Available + 34 or Unit-Offline status. + + 35 C. An unrecoverable error occurred during the execution of + 36 a subcommand issued by the server to the destination + 37 unit or the source unit -- i.e., this command is + 38 terminated with a Subcommand Error (subcode + 39 "Destination/Source -- Unrecoverable Error") status, + 40 only if the error status is Media Format Error, + 41 Unit-Available, or Unit-Offline. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-49 + DISK COPY DATA Command 11 June 1992 + + + 1 D. The "Controller-Online" connection to a remote source + 2 unit's server is lost -- i.e., this command is + 3 terminated with a Controller Error (subcode "Remote + 4 Connection Lost") status. + + 5 E. A subcommand issued by the server to the destination or + 6 the source unit is timed out -- i.e., this command is + 7 terminated with a Subcommand Error (subcode + 8 "Destination/Source -- Command Timed Out") status. + + 9 F. An inconsistent state is detected by the server -- + 10 i.e., this command is terminated with a Subcommand + 11 Error (subcode "Destination/Source -- Inconsistent + 12 State") status. + + 13 The server performs the following operations to disconnect the + 14 communications paths established on behalf of a host class + 15 driver: + + 16 A. Discards the communications path state context being + 17 maintained on behalf of the issuing host class driver. + + 18 B. Issues an AVAILABLE command to the destination unit. + + 19 Note that the server shall not issue this command if + 20 the disconnect is being performed as a result of a + 21 command time out failure on the destination unit. + + 22 C. Issues an AVAILABLE command to the source unit. + + 23 Note that the server shall not issue this command if + 24 the disconnect is being performed as a result of a + 25 command time out failure on the source unit or if the + 26 destination unit is the same as the source unit. + + 27 D. Performs the internal operations necessary to + 28 disconnect the internal "Controller Online" connection + 29 to itself. + + 30 E. If the source unit is located on a remote subsystem, + 31 performs the communications protocol dependent + 32 operations necessary to disconnect the "Controller + 33 Online" connection between itself and the source unit's + 34 server. + + 35 Note that if a communications path is shared among multiple host + 36 class drivers, the server shall not perform any of the disconnect + 37 steps described above that would result in the loss of a + 38 communications path established on behalf of a host class driver + 39 other than the issuing host class driver. That is, the server + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-50 + DISK COPY DATA Command 11 June 1992 + + + 1 shall not disconnect the communications path established on + 2 behalf of a host class driver unless the server is processing a + 3 DISK COPY DATA command issued by that host class driver. + + 4 To prevent needless consumption of remote source unit server + 5 resources in cases where the server spontaneously loses context + 6 (e.g., crashes, power failures) after having established and + 7 retained a communications path on behalf of a host class driver, + 8 the server shall perform the following: + + 9 A. Supply an implementation dependent "host timeout" value + 10 in the SET CONTROLLER CHARACTERISTICS command issued to + 11 the remote source unit's server in Step 4 above. + + 12 The "host timeout" value supplied should be large + 13 enough to not cause a timeout on the communications + 14 path established and retained on behalf of a host class + 15 driver while the "Controller-Online" connection between + 16 that host class driver and the server remains intact + 17 and operations appear to be normal. + + 18 B. Whenever a DISK COPY DATA command that involves the + 19 remote source unit (and the associated communications + 20 path) is not currently in progress, periodically issue + 21 an innocuous command (e.g., GET UNIT STATUS) to the + 22 remote source unit at intervals no greater than the + 23 "host timeout" supplied. + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-51 + DISK COPY DATA Command 11 June 1992 + + + 1 The chart below summarizes the condition under which the server + 2 retains or terminates communications paths prior to returning the + 3 DISK COPY DATA end message. + + 4 +-----------------------------------+------------+--------------+ + 5 | | Retain CP | Comm Paths | + 6 | End Message Status Code/Subcode | modifier | Retained | + 7 | |in cmd mess | end flag | + 8 +-----------------------------------+------------+--------------+ + 9 | Success, subcodes | | | + 10 | "Normal" | | | + 11 | "Duplicate Unit Number" | Set | | + 12 | Command Aborted | | | + 13 | Subcommand Error, subcode +------------+--------------+ + 14 | "Src/Dst Unrecoverable Error" (1)| Clear | Clear | + 15 +-----------------------------------+------------+--------------+ + 16 | Invalid Command, subcodes | | | + 17 | "Invalid Source LBN" | | Set | + 18 | "Invalid Destination LBN" | | (Comm Paths | + 19 | "Invalid Logical Block Count" | | always | + 20 | "Invalid Entry ID" | | retained) | + 21 | "Invalid Entry Locator" | | | + 22 | Write Hist Entry Access Error | | | + 23 | "Allocation Failure Table Full" | | | + 24 +-----------------------------------+ +--------------+ + 25 | Invalid Command, subcodes | | Set if Comm | + 26 | "Invalid Modifier" | | Paths up from| + 27 | | | previous DCD;| + 28 | | | no otherwise.| + 29 +-----------------------------------+ +--------------+ + 30 | Invalid Command, subcodes | | | + 31 | "Invalid Src Unit Number" | | Clear | + 32 | "Invalid Src Unit Identifier" | Ignored | (Comm Paths | + 33 | Controller Error (all subcodes) | | never | + 34 | Subcommand Error, subcodes | | retained) | + 35 | "Src/Dst Unrecoverable Error" (2)| | | + 36 | "Src/Dst Command Timed Out" | | | + 37 | "Src/Dst Inconsistent State" | | | + 38 +-----------------------------------+ +--------------+ + 39 | Invalid Command, subcodes | | | + 40 | "Invalid Source Unit's Storage | | Clear. Server| + 41 | Subsystem Port Address" | | rejects the | + 42 | "Invalid Source Unit's Storage | | DCD command. | + 43 | Subsystem System Address" | | Comm Paths | + 44 | Unit Available | | do not get | + 45 | Unit Offline | | established. | + 46 | Write Protected | | | + 47 +-----------------------------------+------------+--------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-52 + DISK COPY DATA Command 11 June 1992 + + + 1 Notes: + + 2 1. All cases except Media Format Error, Unit-Available, Unit- + 3 Offline. So, errors like Data Error on a READ subcommand + 4 only cause the server to terminate the communications + 5 paths if the Retain CP modifier is clear. + + 6 2. Reports cases where a subcommand is rejected with Media + 7 Format Error, Unit-Available, or Unit-Offline status. + + 8 The server shall not request attention messages (i.e., set the + 9 Enable Attention Messages controller flag) from a remote source + 10 unit's server via the SET CONTROLLER CHARACTERISTICS command + 11 issued in Step 4 above. Therefore, host class drivers should set + 12 the "Enable Attention Messages" flag via a SET CONTROLLER + 13 CHARACTERISTICS command issued over a separate + 14 "Controller-Online" connection to the remote source unit's server + 15 if attention messages related to that unit are desired. + + 16 The server shall not attempt to change the current device + 17 characteristics of the source unit via the ONLINE command issued + 18 in Step 5 above. If a host class driver requires certain source + 19 unit characteristics to be set, it should set them prior to + 20 issuing this command. + + 21 The server shall execute a DISK COPY DATA command as a + 22 Non-Sequential command -- i.e., in relation to all other commands + 23 addressed to the destination unit, the transfer subcommands the + 24 server issues to the destination unit as part of the copy + 25 operation may be reordered to optimize performance, may be + 26 interleaved with other Non-Sequential commands, and all of them + 27 shall be completed before the execution of a Sequential command + 28 can be initiated. Host software developers are advised to give + 29 careful consideration to the effects of issuing a lengthy DISK + 30 COPY DATA command on Sequential command execution. + + 31 The only exception to the Non-Sequential execution just described + 32 is that access to the server's "immediate target" on the + 33 destination unit is controlled. The server's "immediate target" + 34 is the range of logical blocks on the destination unit that the + 35 server is about to act upon or is currently acting upon. To be + 36 more specific the "immediate target" is the range of logical + 37 blocks specified in the READ subcommand used to obtain a fragment + 38 of source data and the WRITE subcommand used to copy the + 39 resultant data to the destination unit. + + 40 Access to the server's "immediate target" on the destination unit + 41 shall be controlled according to the following rules: + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-53 + DISK COPY DATA Command 11 June 1992 + + + 1 a. If a command that specifies a range of logical blocks + 2 that is within or overlaps the server's "immediate + 3 target" is currently in progress, the server postpones + 4 issuing any subcommands that affect the "immediate + 5 target" until such an in progress command completes, + 6 terminates, or is aborted. + + 7 b. If a command that specifies a range of logical blocks + 8 that is within or overlaps the server's "immediate + 9 target" is received while server action on the + 10 "immediate target" is postponed (as described in "a" + 11 above), the server postpones the execution of the + 12 command received until the subcommands that affect the + 13 "immediate target" have been initiated and have then + 14 completed or terminated. + + 15 c. If a command that specifies a range of logical blocks + 16 that is within or overlaps the server's "immediate + 17 target" is received while the subcommands that affect + 18 the "immediate target" are currently in progress, the + 19 server postpones the execution of the command received + 20 until the subcommands that affect the "immediate + 21 target" have been completed or terminated. + + 22 The effect of these rules is to treat access to the server's + 23 "immediate target" as Sequential operations. When selecting the + 24 number of logical blocks to be included in a server's "immediate + 25 target," server developers are advised to give careful + 26 consideration to the effects of postponing host I/O to the + 27 "immediate target." + + 28 The reason for providing the "immediate target" access behavior + 29 described above is to allow host class drivers to perform write + 30 type operations (i.e., DISK COPY DATA, ERASE, and WRITE) on the + 31 destination unit in a manner that guarantees that while a DISK + 32 COPY DATA command is in progress, all data written to logical + 33 blocks on the destination unit will be identical to those + 34 contained on the source unit. To fulfill that guarantee, host + 35 class drivers shall ensure that write operations that specify a + 36 range of logical blocks that is within or overlaps the range of + 37 logical blocks specified in a DISK COPY DATA command are issued + 38 to the source unit and completed there before the equivalent + 39 operation is issued to the destination unit. + + 40 Note that the result of a read type operation (i.e., ACCESS, + 41 COMPARE HOST DATA, and READ) issued to the destination unit that + 42 specifies a range of logical blocks that is within or overlaps + 43 the range of logical blocks specified in a DISK COPY DATA command + 44 is unpredictable. Host class drivers should therefore rely + 45 solely on the contents of the source unit for read type + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-54 + DISK COPY DATA Command 11 June 1992 + + + 1 operations. + + 2 6.7.3.2 Error Logs And Correlation Logs + + 3 All error logs generated due to the execution of a DISK COPY DATA + 4 command are handled by the server and returned to the appropriate + 5 host class drivers, irrespective of whether the error originated + 6 from the destination unit, a local source unit, or a remote + 7 source unit. + + 8 For error logs generated as a result of subcommands issued to the + 9 destination and source units the server performs the following + 10 operations: + + 11 A. Sets the "command reference number" field equal to the + 12 value supplied in the "command reference number" field + 13 of the related DISK COPY DATA command message. + + 14 B. If the error log message is from the source unit, sets + 15 the Informational error log message flag. + + 16 C. If the error log message is from a remote source unit, + 17 sets the Disk Copy Data Correlate error log message flag + 18 and remembers that at least one error log associated + 19 with this command has been delivered so that one DISK + 20 COPY DATA CORRELATION error log message may be delivered + 21 to the appropriate class drivers prior to the delivery + 22 of the end message for this particular DISK COPY DATA + 23 command. + + 24 D. Sends the modified message to the appropriate host class + 25 drivers. + + 26 | E. If a source unit communications path is shared by + 27 | multiple host class drivers, the server shall treat + 28 error logs received over that path according to the + 29 following rules (assuming that the host class driver has + 30 properly enabled error logging): + + 31 1. Error logs generated by subcommands issued on behalf + 32 of an individual host class driver shall be sent + 33 only to that particular host class driver. + + 34 2. Error logs generated by subcommands issued on behalf + 35 of all the host class drivers that share the same + 36 path shall be sent to all the host class drivers + 37 sharing that path. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-55 + DISK COPY DATA Command 11 June 1992 + + + 1 Prior to sending the end message for a particular DISK COPY DATA + 2 command, the server generates a DISK COPY DATA CORRELATION error + 3 log and delivers it to the appropriate class drivers for the + 4 following cases: + + 5 1. The server determines that the source or destination + 6 unit is in an inconsistent state for any of the reasons + 7 described in Section 6.7.2, "DISK COPY DATA Command, End + 8 Message Format," except: Controller Initiated Bad Block + 9 Replacement is not supported by the remote source unit's + 10 server or the source and destination units have + 11 different formats. + + 12 The event code is the same as the status code returned + 13 in the DISK COPY DATA command's end message (see Section + 14 6.7.2, "DISK COPY DATA Command, End Message Format"). + 15 The "event dependent information" field should contain a + 16 copy of the subcommand's end message. + + 17 2. The status code returned in the end message of a + 18 subcommand issued to the source or destination unit + 19 indicates an unrecoverable error other than Unit + 20 Available, Unit Offline, or Write Protected. + + 21 The event code is the same as the status code returned + 22 in the DISK COPY DATA command's end message (see Section + 23 6.7.2, "DISK COPY DATA Command, End Message Format"). + 24 The "event dependent information" field should contain a + 25 copy of the subcommand's end message. + + 26 3. The server fails to establish a connection to or + 27 spontaneously loses an established connection to the + 28 remote source unit's server. + + 29 The event code is the same as the Controller Error + 30 status code returned in the DISK COPY DATA command's end + 31 message (see Section 6.7.2, "DISK COPY DATA Command, End + 32 Message Format"). + + 33 4. The server times out the oldest outstanding command to + 34 either the source or destination unit. + + 35 The event code is the same as the status code returned + 36 in the DISK COPY DATA command's end message (see Section + 37 6.7.2, "DISK COPY DATA Command, End Message Format"). + 38 The "event dependent information" field should contain a + 39 copy of the subcommand's command message. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-56 + DISK COPY DATA Command 11 June 1992 + + + 1 5. At least one error log has been delivered as described + 2 in item C of the previous list. + + 3 The event code is Informational (subcode "Disk Copy Data + 4 Correlation"). + + + 5 Note that if more than one of the above conditions exists, the + 6 DISK COPY DATA CORRELATION error log shall be as specified by the + 7 lowest numbered condition. That is, the conditions listed above + 8 are ordered by priority. + + 9 The server shall send the DISK COPY DATA CORRELATION error log + 10 and the error logs modified as described above only to host class + 11 drivers that have enabled error logging by setting the Enable + 12 This Host's Error Logs controller flag or setting the Enable + 13 Other Host's Error Logs controller flag in a SET CONTROLLER + 14 CHARACTERISTICS command. + + 15 The server performs the following special actions with regard to + 16 the source unit communications path established on behalf of a + 17 host class driver when error logging is enabled as previously + 18 described: + + 19 A. If a host class driver enables error logging before a + 20 source unit communications path has been established, + 21 the server shall set the Enable This Host's Error Logs + 22 controller flag via the SET CONTROLLER CHARACTERISTICS + 23 command issued to the source unit's server in Step 4 + 24 above. + + 25 B. If a host class driver enables error logging after a + 26 source unit communications path has been established, + 27 the server shall issue a SET CONTROLLER CHARACTERISTICS + 28 command to the source unit's server to set the Enable + 29 This Host's Error Logs controller flag for that + 30 connection before issuing any other subcommand to the + 31 source unit. + + 32 C. If any host class driver or server action occurs which + 33 causes error logging to be disabled after the server has + 34 issued a SET CONTROLLER CHARACTERISTICS command to the + 35 source unit's server to set the Enable This Host's Error + 36 Logs controller flag on a connection, the server shall + 37 issue a SET CONTROLLER CHARACTERISTICS command to the + 38 source unit's server to clear the Enable This Host's + 39 Error Logs controller flag for that connection before + 40 issuing any other subcommand to the source unit. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-57 + DISPLAY Command 11 June 1992 + + + 1 6.8 DISPLAY Command + + 2 Command Category: + + 3 Controller implementation dependent. See Section 6.8.3 + + + 4 6.8.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | mode | item | + 14 +---------------+---------------+ + 15 | | + 16 / display / + 17 / text / + 18 | | + 19 +-------------------------------+ + + + 20 item + + 21 | Identifies the information meant to be conveyed to an + 22 | operator. Qualifies the interpretation of the mode and + 23 display text fields. See description below. + + 24 mode + + 25 | Identifies the mode or state of the information meant to + 26 | be conveyed to an operator. Often represented as an icon + 27 or by the visual rendition of the information. See + 28 description below. + + 29 display text + + 30 | One or more text strings containing the information meant + 31 | to be conveyed to an operator. The contents of the item + 32 and mode fields determine the expected number of text + 33 strings and their interpretation; see description below. + 34 Each text string consists of one byte containing the + 35 length followed by that number of bytes encoding + 36 characters from the ISO Latin-1 character set. A length + 37 byte that contains zero is followed by no characters and + 38 denotes a null or zero length string. While ISO Latin-1 + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-58 + DISPLAY Command 11 June 1992 + + + 1 | is the character set encoding, operator communication + 2 | devices need only implement those characters that are + 3 meaningful for the specified item and mode on that + 4 device. Multiple text strings are concatenated without + 5 any intervening bytes. Any bytes between the last text + 6 string and the end of the command message shall contain + 7 zeros, denoting null strings. + + 8 If the host supplies fewer than the expected number of + 9 text strings, then the MSCP server shall append null + 10 strings (zero bytes) to make up the difference. If the + 11 host supplies more than the expected number of text + 12 strings, and the extra strings are null, then the extra + 13 strings shall be ignored. If any extra string is not + 14 null, the server shall ignore the string if the "Must Be + 15 Implemented" modifier is clear or reject the command if + 16 that modifier is set. If the length byte of a string + 17 specifies that the string extends past the end of the + 18 command message, the server shall truncate the string at + 19 the end of the command message; this is not considered an + 20 error. + + 21 The following example display text field shows each + 22 byte's value in hexadecimal and the equivalent ISO + 23 Latin-1 character in parentheses. This example specifies + 24 "VMSRL5" as the first string followed by "Placez" as the + 25 second string. These are followed by null third and + 26 fourth strings; these two strings would be ignored if the + 27 item and mode field values implied that only two strings + 28 were expected. + + 29 +-------+-------+-------+-------+ + 30 | 73(S) | 4D(M) | 56(V) | 06 | + 31 +-------+-------+-------+-------+ + 32 | 06 | 35(5) | 4C(L) | 52(R) | + 33 +-------+-------+-------+-------+ + 34 | 63(c) | 61(a) | 6C(l) | 50(P) | + 35 +-------+-------+-------+-------+ + 36 | 00 | 00 | 7A(z) | 65(e) | + 37 +-------+-------+-------+-------+ + + + 38 Allowable modifiers: + + 39 Must Be Implemented + + 40 If clear, the MSCP server shall ignore and return success + 41 for an unimplemented DISPLAY operation. If set, the MSCP + 42 server shall reject and return the appropriate "Invalid + 43 Command" status for an unimplemented DISPLAY operation. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-59 + DISPLAY Command 11 June 1992 + + + 1 6.8.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success (subcode "Normal") + + 12 Either the requested DISPLAY operation is implemented and + 13 has been successfully accomplished, or it is not + 14 implemented and the "Must Be Implemented" modifier was + 15 clear. + + 16 Invalid Command (subcode "Invalid Opcode") + + 17 The unit or controller does not implement the DISPLAY + 18 command in its entirety. + + 19 Invalid Command (subcode "Invalid Item") + + 20 The specified display item code is not implemented and + 21 the "Must Be Implemented" modifier was set. + + 22 Invalid Command (subcode "Invalid Mode") + + 23 The specified display mode is not implemented for the + 24 specified display item and the "Must Be Implemented" + 25 modifier was set. + + 26 Invalid Command (subcodes "Invalid Display Text") + + 27 The specified display text is invalid or not implemented + 28 for the specified display item and mode. Note that many + 29 different subcodes may be returned, as the subcode + 30 indicates the location of the invalid display text. The + 31 following conditions return these subcodes: + + + 32 1. The host supplied a non-null value for an extra or + 33 unimplemented string and the "Must Be Implemented" + 34 modifier was set. The subcode indicates the location + 35 of the offending string's length byte. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-60 + DISPLAY Command 11 June 1992 + + + 1 2. The host did not supply a value or it supplied a null + 2 value for a string that requires a non-null value. + 3 The subcode indicates the location of the offending + 4 string's length byte. Note that the subcode may + 5 indicate a location past the end of the command + 6 message if the host did not supply a value for the + 7 string. + + 8 3. The host supplied a value that is invalid due to + 9 being either too long or too short. The subcode + 10 indicates the location of the offending string's + 11 length byte. + + 12 4. The host supplied a value that contains an invalid + 13 character. The subcode indicates the location of the + 14 offending character. + + + 15 Command Aborted + + 16 Unit-Offline + 17 Unit-Available + + 18 The specified display operation is implemented but is + 19 inappropriate in the unit's current state. These status + 20 codes shall not be returned for unimplemented display + 21 operations. + + 22 Controller Error + 23 Drive Error + 24 | Media Loader Error + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-61 + DISPLAY Command 11 June 1992 + + + 1 6.8.3 Description + + 2 | A controller may, at its option, treat the DISPLAY command as + 3 | either an Immediate, Sequential, or Non-sequential command. Host + 4 | command timeout algorithms shall treat it as a non-Immediate + 5 | command. + + 6 | The DISPLAY command conveys information meant to be communicated + 7 | to an operator. Some devices implement device displays to + 8 | communicate with human operators. A device display provides a + 9 | means of displaying text and other information associated with a + 10 | particular device or unit. Other devices may pass the + 11 | information to a robotic operator, such as a media loader. This + 12 | specification architects the intent or meaning of the information + 13 | being conveyed. Whether or not particular information can be + 14 | communicated, the means of communication, the nature of the + 15 | operator communicated to, and the result of such communication + 16 | are device and operator dependent. + + 17 The conceptual model for use of the DISPLAY command is a + 18 simplified version of the model for forms management systems such + 19 | as DECforms. Information is presented in a manner analogous to a + 20 pre-printed form. A form dictates the arrangement of fields, how + 21 they appear or are separated, and can provide fixed explanatory + 22 text. Forms also contain variable fields whose contents are + 23 supplied by an application program. + + 24 A key feature of forms management systems is that the format and + 25 appearance of a form is kept separate from supplying information + 26 contained in the form. The application passes information to the + 27 run-time control portion of the forms system, called the Forms + 28 Control System. The Forms Control System presents the + 29 information using a form layout appropriate to the particular + 30 display device. Form layouts can be defined for new display + 31 devices or be redefined for existing devices at any time, without + 32 any application modifications. Also, display devices need not be + 33 visual displays: voice output, tactile output, or other + 34 nonvisual devices might be used. + + 35 In this forms management system model, the DISPLAY command + 36 corresponds to the interface between the application and the + 37 Forms Control System. The host class driver, together with other + 38 host software, acts as the application. The DISPLAY command is + 39 the means by which the host passes information to the Forms + 40 Control System associated with a drive. + + 41 The Forms Control System associated with a drive has complete + 42 control of the appearance of the device display. It takes the + 43 information provided by the host via the DISPLAY command and + 44 presents it in whatever manner the drive designers deemed + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-62 + DISPLAY Command 11 June 1992 + + + 1 appropriate. In effect, each new drive design incorporates a new + 2 display device and the drive designers must define the layout of + 3 the MSCP DISPLAY command form on that display device. Note that + 4 not all information need appear in the layout. That is, the form + 5 layout for a device might ignore and not display certain + 6 | information that is unimportant for that device. A device with + 7 | suitable hardware capability might act on the information + 8 | directly, rather than waiting for a human operator to perform + 9 | equivalent actions. Or the drive designers might prioritize the + 10 available information and only display the most important, + 11 perhaps using drive state or other internal information sources. + 12 Such techniques are typically used to fit within the constraints + 13 of a small physical display. + + 14 Whereas general purpose forms management systems typically deal + 15 | with many forms, the DISPLAY command only deals with one. That + 16 is, there is a single form, a single set of variable fields whose + 17 contents can be specified by the host. The logical definition of + 18 this single form, its variable fields and their meaning, is + 19 specified here as part of the DISPLAY command definition. + 20 Changes to this logical form definition are ECOs to this + 21 specification. However, the layout or appearance of the + 22 information is part of individual device designs; new or changed + 23 layouts for this information need not be reflected in this + 24 specification. + + 25 The item field of the DISPLAY command designates a variable field + 26 in the device display form. Item field values are defined below; + 27 those definitions specify the meaning, interpretation, or + 28 semantic content of the information in that field. The mode and + 29 display text fields provide the information for that field. The + 30 mode field provides nontextual or state information. It is + 31 typically used with items that can be in one of several states or + 32 modes. The drive designer might choose to present this + 33 information by displaying a keyword describing the mode, + 34 displaying an icon designating the mode, by changing the visual + 35 rendition of the field, or by any other means. The display text + 36 field provides textual information that might be displayed in + 37 that field. The drive designer may alter the text or choose to + 38 not display it at all, so long as its meaning is preserved. + 39 Often, state information is conveyed in both the mode field and + 40 as a string in the display text field. + + 41 A unit or controller that does not implement the DISPLAY command + 42 at all shall return "Invalid Command" status with an "Invalid + 43 Opcode" subcode for this command. A controller may implement the + 44 DISPLAY command for some units but not for others. A unit or + 45 controller that does implement the DISPLAY command may + 46 selectively implement the item and mode field values appropriate + 47 to that device, subject to the restrictions on individual item + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-63 + DISPLAY Command 11 June 1992 + + + 1 and mode combinations described below. Not implementing an item + 2 or mode field value is equivalent to determining that that + 3 information is irrelevant to the device and need never be + 4 | displayed or utilized. The host can use the "Must Be + 5 Implemented" modifier to indicate that the host considers the + 6 information to be important, so that the item and mode field + 7 value must be implemented and presented to the operator or else + 8 an error returned. + + 9 If the "Must Be Implemented" modifier is clear, a unit or + 10 controller that implements the DISPLAY command shall ignore + 11 DISPLAY commands that request unimplemented display operations. + 12 Hosts will typically use this for advisory messages, where the + 13 host will continue with the same actions regardless of whether + 14 | the information is actually displayed or otherwise utilized by + 15 | the device. + + 16 If the "Must Be Implemented" modifier is set, a unit or + 17 controller that implements the DISPLAY command shall return + 18 "Invalid Command" status for DISPLAY commands that request + 19 unimplemented display operations. Hosts will typically use this + 20 | when absence of a device display or other device specific means + 21 | of satisfying the request requires that the host communicate the + 22 information via another means. + + 23 All item and mode field values are defined below. An ECO adding + 24 new item and mode field values to this list must be approved + 25 before any device can implement the new values. + + + 26 Item = 0, Mode = any + + 27 Item 0 shall never be implemented by any display device. Hosts + 28 may use this item field value to determine if the DISPLAY command + 29 is implemented with the assurance that no display information + 30 will be altered. + + + 31 Item = any, Mode = 0 + + 32 Mode 0 shall be implemented for every implemented item; it is not + 33 implemented for unimplemented items. Mode 0 restores the + 34 specified display item to its default state upon reset or + 35 power-up, typically blank or empty. Mode 0 expects no text + 36 strings regardless of the item field value. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-64 + DISPLAY Command 11 June 1992 + + + 1 | Item = 1 Volume Identification + + 2 | Item 1 identifies the volume associated with the unit or the + 3 volume mounted on the unit. For all nonzero mode values the + 4 | first text string is the volume label. Device displays shall + 5 support at least the number of characters and character set that + 6 the applicable volume format standard allows for volume labels. + 7 | If a device display is present, any character not displayable by + 8 the device display is invalid. For most disk devices the + 9 applicable standard is Files-11, which in the past has allowed up + 10 to 12 characters from the upper case alphabet, digits, dollar + 11 sign, underscore, and space. For most tape devices the + 12 applicable standard is the ANSI tape label standard, which in the + 13 past has allowed up to 6 characters from the upper case alphabet, + 14 digits, dollar sign, underscore, space, and the following special + 15 characters: + + 16 ! " % ' ( ) * + , - . / : ; < = > ? + + 17 Implementors are responsible for verifying that their device + 18 supports the current version of the applicable standard. They + 19 shall not assume that the above description is current. + + 20 Any unit that implements display item 1 shall implement the three + 21 modes 0, 1, and 2 for that display item. This display item shall + 22 function whenever the unit is "Unit-Online," "Unit-Available," or + 23 "Unit-Offline, Known." This display item shall not function + 24 whenever the unit is "Unit-Offline" for any other reason; the + 25 DISPLAY command shall be rejected with "Unit-Offline" status and + 26 | the appropriate subcode. A unit may optionally reject mode 2, + 27 | Mount Request Volume Identification, when the unit is + 28 | "Unit-Online" to any host. If the unit chooses to reject this + 29 | mode when "Unit-Online", it should treat it as unimplemented and + 30 | return either "Success" status (subcode "Normal") or "Invalid + 31 | Command" status (subcode "Invalid Mode"), depending on the state + 32 | of the "Must Be Implemented" modifier. + + 33 | The unit or device display shall clear its volume identification + 34 information on reset, power-up, or any other loss of context. It + 35 | shall also clear its volume identification information whenever a + 36 volume is inserted or removed from the drive. It should not + 37 | otherwise alter its volume identification information unless + 38 directed to by a host (via this command). + + 39 | Item = 1, Mode = 0 Clear Volume Identification + + 40 | Clears the volume identification information. Expects no + 41 text strings. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-65 + DISPLAY Command 11 June 1992 + + + 1 | Item = 1, Mode = 1 Current Volume Identification + + 2 Conveys the volume label currently associated with the unit + 3 | or the volume mounted on the unit. Expects one non-null text + 4 | string containing the volume label. + + 5 | Item = 1, Mode = 2 Mount Request Volume Identification + + 6 | Identifies the volume that an operator should mount on the + 7 unit. Typically the drive should highlight or emphasize the + 8 | volume identification to notify the operator of the mount + 9 | request. Units that are associated with a media loader may + 10 | satisfy mount requests directly, without passing mount + 11 | requests to a human operator. Expects three text strings. + + 12 | The first text string is either null or the requested + 13 | volume's label. The second text string is optional; this + 14 mode shall function regardless of whether the second string + 15 is null or non-null. If the second text string is non-null, + 16 then it is the command "Mount" expressed in the local + 17 language. The entire ISO Latin-1 character set is valid for + 18 the second text string; the device display may ignore this + 19 text string (treat it as if it were null), display it + 20 unmodified, or translate it to a form that can be displayed. + 21 For example, a device display might translate the lower case + 22 alphabet to upper case. If a device display can neither + 23 display the second text string nor translate the string to a + 24 form that can be displayed, then it shall ignore the string + 25 as if it were null. + + 26 | The third text string is either null or the requested + 27 | volume's location. With device displays and human operators, + 28 | this would typically use the same character set as the volume + 29 | label. Any character not displayable by the device display + 30 | is invalid. The format and meaning of the location codes are + 31 | outside the scope of T/MSCP; they will typically be chosen by + 32 | the individual site or installation. With robotic media + 33 | loaders, the location will typically be a decimal digit + 34 | string encoding the number of the element within the loader + 35 | that contains the requested volume. If the string does not + 36 | identify a valid or potentially valid element within the + 37 | media loader, then some character in it is invalid. + + 38 | If both the first and third text strings are null, then this + 39 | is a request to mount an unidentified volume. If the first + 40 | is non-null and the third null, then this is a request to + 41 | mount a volume with the specified volume label. If the first + 42 | is null and the third non-null, then this is a request to + 43 | mount the volume that normally resides at the specified + 44 | location. If both are non-null, then this is a request to + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-66 + DISPLAY Command 11 June 1992 + + + 1 | mount a volume that both has the specified label and that + 2 | normally resides at the specified location. A unit need only + 3 | use the information that is consistent with its display + 4 | device's or media loader's capabilities. + + 5 | The means by which a mount request is resolved, resulting in + 6 | a specific physical volume being located and mounted, are + 7 | outside the scope of T/MSCP. In general, mount requests may + 8 | specify volumes that do not exist, ambiguously specify + 9 | multiple volumes, or be self-contradictory. With a human + 10 | operator, treatment of these conditions will depend on the + 11 | operator's intelligence and local site-specific policies. + 12 | With robotic operators, treatment of these conditions will + 13 | depend on the cleverness of the device's designers. While + 14 | not required, it is recommended that robotic media loaders + 15 | detect any mount request that does not specify a unique + 16 | volume and either treat it as unimplemented or return some + 17 | other error. + + 18 | Note that the DISPLAY command with this mode and item merely + 19 | delivers a mount request. Completion of the DISPLAY command + 20 | does not mean that the mount request itself can or will be + 21 | satisfied. If the mount request is in fact eventually + 22 | satisfied, the unit will become "Unit-Available" when the + 23 | volume is mounted and an attention message delivered if + 24 | enabled. However there is no guarantee that the correct or + 25 | requested volume was indeed mounted, since operators (whether + 26 | human or robotic) make mistakes. The host must use + 27 | non-T/MSCP means, such as label verification, to ensure that + 28 | the correct or a suitable volume has been mounted. If a + 29 | mount request cannot be satisfied, there is in general no way + 30 | to report that with T/MSCP. Hosts might use timeouts or + 31 | similar means to detect mount request failures. + + 32 | Notwithstanding the above, if a device can determine, during + 33 | the normal execution of the DISPLAY command, that a mount + 34 | request cannot or will not be satisfied, then it should + 35 | report that failure with the DISPLAY command's status code. + 36 | This is most likely to be possible with robotic media + 37 | loaders. However T/MSCP do not preclude such failure + 38 | reporting with human operators as well, if any device can + 39 | implement it. The ability to detect mount request failures + 40 | and which failures are or are not reported as DISPLAY command + 41 | status codes are all extremely device dependent. + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-67 + ERASE Command 11 June 1992 + + + 1 6.9 ERASE Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.9.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | caa | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +---------------+---------------+ + 23 | entry id | hrn or entloc | (optional) + 24 +---------------+---------------+ + + + 25 hrn (host reference number) or entloc (entry locator) + 26 entry id + + 27 Optional fields, used in conjunction with the History Log + 28 and Reuse Entry modifiers. See the descriptions of those + 29 modifiers below. + + 30 Allowable modifiers: + + 31 Clear Serious Exception (ignored for disk class devices) + 32 Express Request + 33 Force Error + 34 Suppress Error Recovery + 35 History Log + 36 Reuse Entry + + 37 The History Log and Reuse Entry modifiers are + 38 interdependent and described together here to avoid + 39 confusion. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-68 + ERASE Command 11 June 1992 + + + 1 Note that the History Log modifier, the Reuse Entry + 2 modifier, the "hrn or entloc" field, and the "entry id" + 3 field are valid only for servers that provide "write + 4 history logging" support (i.e., the server sets the Write + 5 History Logging Support controller flag; see Section 5.6, + 6 "Controller Flags" for related information). + + 7 The setting of the History Log modifier determines + 8 whether information about this command is to be stored in + 9 a "write history entry." + + 10 The setting of the Reuse Entry modifier determines + 11 whether the server is to allocate a new "write history + 12 entry" or reuse one that was previously allocated. + + 13 If "write history logging" is supported and the History + 14 Log modifier is set and the Reuse Entry modifier is + 15 clear, the server allocates a new "write history entry" + 16 and then stores the value contained in the "hrn (host + 17 reference number)" field, "entry id" field, and other + 18 information related to this command into the "write + 19 history entry" just allocated. If the server has no + 20 "write history entry" to allocate, it shall remember this + 21 fact. See Section 6.19.3, "WRITE HISTORY MANAGEMENT + 22 Command, Description" for more details. To report this + 23 allocation failure to the host, the server returns + 24 FFFF(hex) in the "entry locator" field of the end message + 25 and sets the Allocation Failure end flag. See Section + 26 5.4, "End Messages," for a description of this flag. + + 27 If "write history logging" is supported and the History + 28 Log modifier is set and the Reuse Entry modifier is set, + 29 the server uses the value contained in the "entloc (entry + 30 locator)" field to locate the associated "write history + 31 entry" and then stores the other information related to + 32 this command into that "write history entry." + + 33 See Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 34 Description" for details regarding the maintenance and + 35 format of "write history entries." + + 36 Note that when "write history logging" is supported and + 37 the History Log modifier is set, host class drivers shall + 38 supply both the "hrn or entloc" and the "entry id" + 39 fields. If the History Log modifier is set and those + 40 fields are not supplied, the server rejects the command + 41 as an "Invalid Command" ("invalid message length" + 42 protocol error. See "Invalid Command" status in Section + 43 5.5, "Status Codes"). + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-69 + ERASE Command 11 June 1992 + + + 1 If "write history logging" is supported and the History + 2 Log modifier is clear, the server ignores the setting of + 3 the Reuse Entry modifier and the contents of the "hrn or + 4 entloc" and "entry id" fields if they are supplied. Note + 5 that host class drivers need not supply those fields when + 6 the History Log modifier is clear. + + 7 If "write history logging" is not supported and the + 8 History Log modifier or the Reuse Entry modifier is set, + 9 the server rejects the command as an "Invalid Command" + 10 ("invalid modifier" protocol error. See "Invalid + 11 Command" status in Section 5.5, "Status Codes"). + + 12 If "write history logging" is supported, the History Log + 13 modifier is set, and the "byte count" field is zero, the + 14 server rejects the command as an Invalid Command + 15 ("invalid byte count" parameter error. See "Invalid + 16 Command" status in Section 5.5, "Status Codes"). + + 17 The server shall set the History Logged end flag in this + 18 command's end message if it has caused the write history + 19 log to contain a valid "write history entry" for this + 20 command. See Section 5.4, "End Messages," for + 21 descriptions of all end message flags. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-70 + ERASE Command 11 June 1992 + + + 1 6.9.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +-------------------------------+ + 18 | first bad block | + 19 +---------------+---------------+ + 20 | entry id | entry locator | (conditionally present) + 21 +---------------+---------------+ + + + 22 entry locator + + 23 This field is present if and only if the corresponding + 24 command message field is present. If present and the + 25 History Log modifier is set in the command message, this + 26 field contains the value assigned by the server that + 27 uniquely identifies the internal location of the "history + 28 entry" where this command's information was stored. If, + 29 however, an allocation failure occurred, this field + 30 contains the value FFFF(hex). If present and the History + 31 Log modifier is clear in the command message, this field + 32 is undefined. + + 33 This field contains a valid entry locator of a "write + 34 history entry" for this command if and only if the + 35 History Logged end flag is set in the "flags" field of + 36 this end message. + + 37 See the description of the History Log and Reuse Entry + 38 modifiers in Section 6.9.1, "ERASE Command, Command + 39 Message Format" and Section 6.19.3, "WRITE HISTORY + 40 MANAGEMENT Command, Description" for more detail. + + 41 entry id + + 42 This field is present if and only if the corresponding + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-71 + ERASE Command 11 June 1992 + + + 1 command message field is present. If present and the + 2 History Log modifier is set in the command message, the + 3 contents of the corresponding command message field is + 4 copied without modification to this field. If present + 5 and the History Log modifier is clear in the command + 6 message, this field is undefined. + + 7 See the description of the History Log and Reuse Entry + 8 modifies in Section 6.9.1, "ERASE Command, Command + 9 Message Format" and Section 6.19.3, "WRITE HISTORY + 10 MANAGEMENT Command, Description" for more detail. + + + 11 Status Codes: + + 12 Success (subcode "Normal") + 13 Success (subcode "Duplicate Unit Number") + 14 Invalid Command (subcode "Invalid Byte Count") + + 15 A byte count of zero was specified with the History Log + 16 modifier set. + + 17 Invalid Command (subcode "Invalid Entry Locator") + + 18 The value specified in the "entloc (entry locator)" field + 19 is not within the limits of the server's "write history + 20 entry" set. + + 21 See the description of the History Log and Reuse Entry + 22 modifiers in Section 6.9.1, "ERASE Command, Command + 23 Message Format" and Section 6.19.3, "WRITE HISTORY + 24 MANAGEMENT Command, Description" for more detail. + + 25 Note that this error can only occur if "write history + 26 logging" is supported and the History Log and Reuse Entry + 27 modifiers are both set in the command message. + + 28 Invalid Command (subcode "Invalid Entry Id") + + 29 The server located the "write history entry" identified + 30 in the "entloc (entry locator)" field but found that the + 31 "entry id" contained in that entry does not equal the + 32 value supplied by a host class driver when that entry was + 33 allocated. This status may also be returned if the + 34 History Log modifier was set, the Reuse Entry modifier + 35 was clear, and the host supplied a value of FFFF (hex) in + 36 the "entry id" field. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-72 + ERASE Command 11 June 1992 + + + 1 See the description of the History Log and Reuse Entry + 2 modifiers in Section 6.9.1, "ERASE Command, Command + 3 Message Format" and Section 6.19.3, "WRITE HISTORY + 4 MANAGEMENT Command, Description" for more detail. + + 5 Note that this error can only occur if "write history + 6 logging" is supported and the History Log modifier is set + 7 in the command message. + + 8 Invalid Command (subcode "Invalid Logical Block Number") + 9 Command Aborted + 10 Unit-Offline + 11 Unit-Available + 12 Write Protected + 13 Host Buffer Access Error (subcode "Odd Byte Count") + + 14 If the communications mechanism does not allow odd byte + 15 transfers, the controller may return this status + 16 code/subcode despite there being no host buffer. This + 17 allows the use of common code for command validation of + 18 all transfer commands. Alternatively, the controller may + 19 round the byte count up to the nearest whole sector size + 20 and perform the operation. + + 21 Controller Error + 22 Drive Error + 23 Write History Entry Access Error (subcode "Allocation Failure + 24 Table Full") + + 25 The server was unable to allocate a "write history entry" + 26 and could not record this fact because the Allocation + 27 Failure Table was full. This is a transient condition; + 28 therefore, the host should reissue the command. See + 29 Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 30 Description" for more details. + + 31 Note that this error can occur only if "write history + 32 logging" is supported and the History Log modifier is set + 33 and Reuse Entry modifier is clear in the command message. + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-73 + ERASE Command 11 June 1992 + + + 1 6.9.3 Description + + 2 All data in the specified region of the unit is erased by + 3 overwriting it with zero. + + 4 This command is exactly equivalent in function, although not in + 5 performance, to a WRITE command which references a buffer that + 6 the host has zeroed. + + 7 If a controller-based cache exists, the cache manager may use the + 8 Cache Access Attribute advice in managing the caching and + 9 comparing of the requested data area. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-74 + FORMAT Command 11 June 1992 + + + 1 6.10 FORMAT Command + + 2 Command Category: + + 3 Sequential + + 4 6.10.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + 21 | format function | + 22 +-------------------------------+ + + + 23 byte count + 24 buffer descriptor + + 25 If "byte count" is non-zero, these two parameters + 26 identify a buffer containing additional format + 27 information. If "byte count" is zero, then "buffer + 28 descriptor" is reserved. See description below. + + 29 format function + + 30 A code from Table A-13, "Format Function Codes," + 31 indicating the desired format for the volume. + + + 32 Allowable modifiers: + + 33 Clear Serious Exception (ignored for disk class devices) + 34 Compare -- ignored + 35 Express Request -- ignored + 36 Suppress Error Correction -- ignored + 37 Suppress Error Recovery -- ignored + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-75 + FORMAT Command 11 June 1992 + + + 1 6.10.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + + 10 Status Codes: + + 11 Success (subcode "Normal") + 12 Invalid Command + 13 Command Aborted + 14 Unit-Offline + 15 Unit-Available + 16 Media Format Error + 17 Write Protected + 18 Host Buffer Access Error + 19 Controller Error + 20 Drive Error + 21 Invalid Parameter + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-76 + FORMAT Command 11 June 1992 + + + 1 6.10.3 Description + + 2 This command formats or reformats the volume mounted on the + 3 specified unit. Support for this command is completely optional. + 4 Controllers that do not implement this command, or that do not + 5 implement it for the specified unit, shall reject it with + 6 "Invalid Command -- Invalid Opcode" status. + + 7 A controller may choose to implement this command, a DUP + 8 formatting program, both, or neither. All combinations are + 9 allowed and reasonable for various devices. However, this + 10 command is the preferred means of formatting devices for which + 11 formatting is considered a normal, user-invoked operation. + 12 Floppy diskettes are common examples of such devices. + + 13 Hosts shall use the following command sequence to format the + 14 volume on a unit using this command. This command sequence is + 15 the only context in which the FORMAT command shall be issued. + + 16 1. The unit should be "Unit-Available" or "Unit-Offline" to + 17 all hosts at the start of the command sequence. That + 18 is, the unit should not be "Unit-Online" to any host. + + 19 2. The host brings the unit "Unit-Online" using an ONLINE + 20 command with the "Ignore Media Format Error" modifier + 21 set. The host shall exit (not continue the formatting + 22 sequence) if this command does not succeed. It is + 23 recommended, although not required, that the host also + 24 set the "Exclusive Access" modifier. + + 25 3. The host may optionally issue any number of READ + 26 commands to the unit. These commands might be used to + 27 verify that the correct volume is mounted. The host may + 28 exit or continue as it sees fit, regardless of the + 29 success or failure of these READ commands. The host + 30 should issue an AVAILABLE command to the unit if it + 31 chooses to exit. Note that these READ commands will + 32 normally fail if the volume has not been previously + 33 formatted. + + 34 4. The host issues a FORMAT command to the unit. + + + 35 The controller shall verify that the unit was brought + 36 "Unit-Online" by an ONLINE command with the "Ignore Media Format + 37 Error" modifier set. If the unit is "Unit-Offline" or + 38 "Unit-Available" the controller shall reject the FORMAT command + 39 with the corresponding status code and leave the unit state + 40 unaltered. If the unit is "Unit-Online" but the "Ignore Media + 41 Format Error" modifier was not specified, then the controller + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-77 + FORMAT Command 11 June 1992 + + + 1 shall reject the FORMAT command with a "Unit-Available" status + 2 code and the unit becomes "Unit-Available." + + 3 The controller shall return "Invalid Command," "Unit-Offline," + 4 "Unit-Available," "Write Protected," or "Invalid Parameter" + 5 status if a FORMAT command is rejected. These status codes all + 6 imply that the volume on the unit has not been altered. The unit + 7 state is unaltered, except for the case described in the + 8 preceding paragraph. + + 9 The controller shall return "Success" status if the format + 10 operation is successful. The unit is left "Unit-Available." + + 11 Any other status code implies that the volume may have been + 12 partially formatted. The volume must be successfully reformatted + 13 before it can be used reliably. The unit may be either + 14 "Unit-Available" or "Unit-Offline." + + 15 The FORMAT command often causes the unit to transition from + 16 "Unit-Online" to "Unit-Available." This is a synchronous + 17 transition. Therefore the controller need not generate an + 18 AVAILABLE attention message. + + 19 The FORMAT command neither obtains nor releases Exclusive Access + 20 to the unit. + + 21 The actual formatting operation is controlled by the format + 22 function code value and the additional format information in the + 23 buffer described by the "byte count" and "buffer descriptor" + 24 fields. Format function code values are listed in Table A-13. + 25 The format function determines the use, structure, and + 26 interpretation of any additional format information. + + 27 Most format functions do not use additional format information. + 28 The controller shall ignore the "byte count" and "buffer + 29 descriptor" fields, as well as any buffer described by them, when + 30 the format function does not use additional format information. + 31 If the format function does use additional format information, + 32 the controller shall validate the additional format information + 33 before it begins the formatting process. The controller shall + 34 reject the FORMAT command with an "Invalid Parameter" status code + 35 if the additional format information is invalid. + + 36 Format function code value zero specifies that a default + 37 formatting operation should be performed. A default format + 38 function shall be supported by all controller/unit combinations + 39 that support the FORMAT command. The exact definition of the + 40 default format function is device specific. It does not require + 41 additional format information. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-78 + FORMAT Command 11 June 1992 + + + 1 Support for non-default format functions is device dependent. + 2 Table A-13 indicates which functions are applicable to different + 3 classes of devices, but the final determination of supported + 4 format functions is device dependent. Controllers shall reject + 5 FORMAT commands that specify an unsupported format function with + 6 "Invalid Command -- Invalid Format Function" status. + + 7 NOTE + + 8 At the present time there are no format functions + 9 that use additional format information. The + 10 definition of additional format information has + 11 been included in this command for those host + 12 operating systems that choose to implement + 13 support for it in advance of any device + 14 requirements for such support. Valid host + 15 implementations need not support additional + 16 format information. Any device that anticipates + 17 using additional format information must + 18 negotiate for host support, just as if they were + 19 proposing a totally new feature. The ECO that + 20 defines the first use of additional format + 21 information should also remove this note. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-79 + GET COMMAND STATUS Command 11 June 1992 + + + 1 6.11 GET COMMAND STATUS Command + + 2 Command Category: + + 3 Immediate + + 4 6.11.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | outstanding reference number | + 14 +-------------------------------+ + + + 15 unit number + + 16 Shall be the same as the "unit number" field in the + 17 outstanding command whose status is to be obtained. This + 18 allows controllers to optimize their search for the + 19 outstanding command. If the incorrect unit number is + 20 supplied, some controllers may erroneously conclude that + 21 the command is no longer outstanding, leading to + 22 erroneous command timeouts. + + 23 outstanding reference number + + 24 The command reference number of the command whose status + 25 is to be obtained. + + + 26 Allowable modifiers: + + 27 none + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-80 + GET COMMAND STATUS Command 11 June 1992 + + + 1 6.11.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | outstanding reference number | + 11 +---------------+---------------+ + 12 | command status | + 13 +---------------+---------------+ + + + 14 outstanding reference number + + 15 The command reference number of the command whose status + 16 has been returned. Identical to the value supplied in + 17 the GET COMMAND STATUS command message. + + 18 command status + + 19 The amount of work remaining to be done to complete the + 20 command, expressed as an unsigned integer. This field is + 21 zero if the command is not known to the controller, such + 22 as when the command has already completed. This field + 23 should also be zero if the command has been aborted. The + 24 controller may also return zero in this field if it can + 25 guarantee that the command will complete within the + 26 controller timeout interval. The controller shall never + 27 return a value of all ones (2**32-1) in this field, as + 28 that value is used to initialize the command timeout + 29 algorithm. + + 30 The units in which this value is measured are arbitrary + 31 and may be controller, device type, and/or command + 32 dependent. However, the units shall remain the same for + 33 a particular command for as long as that command is + 34 outstanding. + + + 35 Status Codes: + + 36 Success (subcode "Normal") + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-81 + GET COMMAND STATUS Command 11 June 1992 + + + 1 6.11.3 Description + + 2 The GET COMMAND STATUS command is used to monitor the progress of + 3 a command towards completion. The command status measures the + 4 "doneness" of the command. The value returned in the command + 5 status field is guaranteed to not increase over time. + 6 Furthermore, the command status of an MSCP server's oldest + 7 outstanding command is guaranteed to decrease within the + 8 controller timeout interval. This last feature may be used by a + 9 host class driver to detect an insane or malfunctioning + 10 controller. See Section 4.10, "Command Timeouts," for more + 11 details. + + 12 The GET COMMAND STATUS command always succeeds. If the command + 13 referenced by the "outstanding reference number" is not known to + 14 the MSCP server or has been aborted, then the MSCP server should + 15 return zero for its command status. The MSCP server may also + 16 return zero as the command status of any command that will always + 17 complete within the controller timeout interval. The MSCP server + 18 always returns the "Normal" status code in the GET COMMAND STATUS + 19 command's end message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-82 + GET UNIT STATUS Command 11 June 1992 + + + 1 6.12 GET UNIT STATUS Command + + 2 Command Category: + + 3 Immediate + + 4 6.12.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + 13 | Allowable modifiers: + + 14 Clear Serious Exception (ignored for disk class devices) + + 15 Next Unit + + 16 Requests that the controller return the status of the + 17 next unit (in order of ascending unit numbers) that the + 18 controller knows to exist and whose unit number is + 19 greater than or equal to the unit number specified in the + 20 command. See Section 4.3, "Unit States," for a detailed + 21 definition of which units are acknowledged by this + 22 modifier. + + 23 If this modifier is set, the "unit number" field in the + 24 end message corresponds to the unit whose characteristics + 25 are being returned, and is typically not the same as the + 26 "unit number" field in the command message. If there are + 27 no units that are both known to the controller and whose + 28 unit numbers are greater than or equal to the unit number + 29 specified in the command message, then zero is returned + 30 in the "unit number" field of the end message. The + 31 remaining fields of the end message are identical to the + 32 values that would be returned for a GET UNIT STATUS + 33 command with a "unit number" of zero and the "Next Unit" + 34 modifier left clear. + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-83 + GET UNIT STATUS Command 11 June 1992 + + + 1 6.12.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | group size | track size | + 23 +-------+-------+---------------+ + 24 |uhvrsn | usvrsn| cylinder size | + 25 +-------+-------+---------------+ + 26 |copies | RBNs | RCT size | + 27 +-------+-------+---------------+ + + + + 28 | status + + 29 The validity of the unit characteristics varies with the + 30 unit's state implied by the contents of this field. See + 31 the Status Codes listed later in this section and Section + 32 6.12.3, "GET UNIT STATUS Command, Description" for + 33 complete details. + + 34 multiunit code + + 35 The low byte of this field identifies the access path + 36 between the controller and the unit. The high byte of + 37 this field identifies the spindle, within the access + 38 path, to which the unit belongs. See Section 4.16.2, + 39 "Multiunit Drives and Formatters," for more information. + + 40 unit flags + + 41 See Section 5.7, "Unit Flags." + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-84 + GET UNIT STATUS Command 11 June 1992 + + + 1 spndles + + 2 The number minus one of spindles or spindle "groups" in + 3 the unit. The value of zero indicates one spindle. See + 4 Section 4.12, "Disk Geometry and Format." + + 5 IMPLEMENTATION NOTE + + 6 The "spndles" field was defined in February 1991. Before + 7 that it was a reserved field, but not all controllers + 8 zeroed it. To ensure validity of the "spndles" field, + 9 class drivers should send GET UNIT STATUS command + 10 messages of at least 20 bytes and zero all bytes beyond + 11 byte 12. + + + 12 unit identifier + + 13 Uniquely identifies the unit among all devices accessible + 14 via MSCP. See Section 4.17, "Controller and Unit + 15 Identifiers." + + 16 media type identifier + + 17 Identifies the type of media used by this unit, for use + 18 by host generic device allocation mechanisms. See + 19 Section 4.18, "Media Type Identifiers." + + 20 track size + + 21 The number of logical blocks in a track. The value of + 22 zero is reserved and illegal. See Section 4.12, "Disk + 23 Geometry and Format." + + 24 group size + + 25 The number of tracks in a group. The value of zero is + 26 reserved and illegal. See Section 4.12, "Disk Geometry + 27 and Format." + + 28 cylinder size + + 29 The number of groups in a cylinder. The value of zero is + 30 reserved and illegal. See Section 4.12, "Disk Geometry + 31 and Format." + + 32 usvrsn + + 33 The unit's software, firmware, or microcode revision + 34 number. Always zero if the product's development and + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-85 + GET UNIT STATUS Command 11 June 1992 + + + 1 maintainability groups determine that there is no benefit + 2 from supporting machine readable revision numbers. + + 3 uhvrsn + + 4 The unit's hardware revision number. Always zero if the + 5 product's development and maintainability groups + 6 determine that there is no benefit from supporting + 7 machine readable revision numbers. + + 8 RCT size + + 9 The difference between the starting logical block numbers + 10 of successive copies of the unit's Replacement Control + 11 Table (RCT). Excepting only the last copy, this value is + 12 also the size of each copy of the RCT. See Digital + 13 Storage Architecture Disk Format Specification (DSDF). + 14 Zero if this disk has no RCT whatsoever; see Section + 15 4.12, "Disk Geometry and Format." + + 16 RBNs + + 17 The number of replacement blocks per track. + + 18 See Digital Storage Architecture Disk Format + 19 Specification (DSDF). Zero if this disk has no RCT + 20 whatsoever; see Section 4.12, "Disk Geometry and + 21 Format." + + 22 copies + + 23 The number of copies of the Replacement Control Table + 24 that are stored on the unit. See Digital Storage + 25 Architecture Disk Format Specification (DSDF). Zero if + 26 this disk has no RCT whatsoever; see Section 4.12, "Disk + 27 Geometry and Format." + + + 28 Status Codes: + + 29 Success (subcode "Normal") + 30 Success (subcode "Duplicate Unit Number") + + 31 Both of these codes imply that the unit is + 32 "Unit-Online." + + 33 Unit-Offline + 34 Unit-Available + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-86 + GET UNIT STATUS Command 11 June 1992 + + + 1 Controller Error + 2 Drive Error + + 3 For both of these status codes the actual drive state is + 4 unknown (although it will usually be "Unit-Offline" due + 5 to being inoperative). Therefore the class driver should + 6 assume that the unit is "Unit-Offline." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-87 + GET UNIT STATUS Command 11 June 1992 + + + 1 6.12.3 Description + + 2 The GET UNIT STATUS command returns the current state of a unit + 3 plus certain unit characteristics. In particular, the GET UNIT + 4 STATUS command is used to obtain host-settable characteristics + 5 and those fixed unit characteristics that are not normally needed + 6 by the class driver. + + 7 Class drivers can determine which of the returned unit + 8 characteristics are valid from the unit state implied by the + 9 returned "status" (see Status Codes listed above) as follows: + + 10 1. Unit is "Unit-Offline" and unknown to controller. All + 11 characteristic fields and all unit flags are undefined. + + 12 2. Unit is "Unit-Offline" and known to the controller or it + 13 is "Unit-Available." The "multiunit code," "unit + 14 identifier," "media type identifier," "usvrsn," + 15 "uhvrsn," and "spndles" characteristic fields are valid. + 16 The "Removable Media" unit flag is valid. All other + 17 characteristic fields and unit flags are undefined. + + 18 3. Unit is "Unit-Online." All characteristics fields and + 19 all unit flags are valid. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-88 + ONLINE Command 11 June 1992 + + + 1 6.13 ONLINE Command + + 2 Command categories: + + 3 Sequential + + 4 6.13.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | reserved | + 16 +-------------------------------+ + 17 | | + 18 +--- reserved ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +-------------------------------+ + 23 | reserved | + 24 +-------------------------------+ + + + + 25 | unit flags + + 26 Host-settable unit flags. See Section 5.7, "Unit + 27 Flags." + + 28 If the unit is already "Unit-Online" to the class driver, + 29 then the class driver shall specify the same values for + 30 controller supported host-settable unit flags as are + 31 currently in effect on the unit. The controller may, at + 32 its option, check that the flag values are the same. If + 33 it does check, then it shall reject the command as an + 34 "Invalid Command" ("invalid unit flags" parameter error. + 35 See "Invalid Command" status in Section 5.5), if they are + 36 different. If the controller does not check that they + 37 are the same, then it shall ignore the unit flags + 38 specified by the class driver and preserve the flag + 39 settings currently in effect on the unit. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-89 + ONLINE Command 11 June 1992 + + + 1 device dependent parameters + + 2 Device and/or controller dependent device tuning + 3 parameters. The value zero in this field means that + 4 default or normal tuning parameters should be used. + 5 Nonzero values for this field should normally be + 6 established through the system startup command file. + 7 Examples of the use of this field include selecting + 8 alternative optimization algorithms or enabling and + 9 disabling automatic (online) diagnosis of the unit. + + + 10 Allowable modifiers: + + 11 Allow Self Destruction + + 12 Some controllers and/or drives are able to predict that a + 13 unit is in danger of imminent self destruction, and + 14 automatically spin-down and disable the unit to prevent + 15 its destruction. Such mechanisms typically sense an + 16 exponentially increasing (correctable) error rate, + 17 indicating that the disk surface has been contaminated + 18 with dust or other foreign objects. Units that have been + 19 disabled for this reason appear to be "Unit-Offline," + 20 with a subcode indicating that they have been disabled by + 21 field service or a diagnostic. Therefore such a unit + 22 cannot normally be brought "Unit-Online." + + 23 This modifier allows a host to bring a unit that has been + 24 so disabled "Unit-Online," even though the consequences + 25 for the unit may be fatal. For this reason THIS MODIFIER + 26 SHALL NEVER BE USED UNLESS FIELD SERVICE EXPLICITLY + 27 DIRECTS A SITE TO DO SO. When imminent self destruction + 28 has been predicted for a unit, it is usually possible to + 29 make one "last ditch" copy of the unit before it dies + 30 completely, recovering all or most of the data on the + 31 unit. This modifier exists primarily to simplify support + 32 of such a "last ditch" copy. This modifier also provides + 33 a means, if necessary, to work around a diagnostic that + 34 is erroneously disabling a unit. + + 35 This modifier shall be supported by: + + 36 1. Any controller that may disable a unit for the reason + 37 mentioned above. + + 38 2. Any controller that may potentially be connected to a + 39 unit that can disable itself. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-90 + ONLINE Command 11 June 1992 + + + 1 3. Any controller that does not disable units itself, + 2 but that will respond properly if a drive is disabled + 3 by some other (more capable) controller. + + 4 This modifier shall be ignored if the unit has not been + 5 disabled or if the controller does not fall into any of + 6 the above categories. + + 7 Clear Serious Exception (ignored for disk class devices) + + 8 Ignore Media Format Error + + 9 Suppresses most checking for "Media Format Errors" and + 10 causes the "576 Byte Sectors" unit flag to be + 11 host-settable. + + 12 If either the controller or the unit only support 512 + 13 byte sectors, then setting this modifier merely + 14 suppresses Media Format Error checking. The unit is + 15 brought "Unit-Online" as a 512 byte formatted volume and + 16 the "576 Byte Sectors" unit flag is returned clear. If + 17 both the controller and the unit support 576 byte + 18 sectors, then the state of the "576 Byte Sectors" unit + 19 flag (in the unit flags field of this ONLINE command) + 20 specifies whether the volume is formatted with 512 or 576 + 21 byte sectors. The unit is brought "Unit-Online" in the + 22 specified format, rather than the format being determined + 23 from the volume itself. + + 24 Use of this modifier allows the host to set a unit to the + 25 wrong block or sector size. Reading a unit that is set + 26 to the wrong block or sector size may yield a mix of + 27 erroneous "Data Errors," "Drive Errors," and "Controller + 28 Errors." Writing a unit that is set to the wrong block + 29 or sector size may permanently corrupt the volume. The + 30 volume must be reformatted if this occurs. + + 31 Enable Set Write Protect + + 32 Causes the "Write Protect" unit flag to be host-settable. + 33 This modifier causes the state of the "Write Protect + 34 (software)" unit flag to be copied to the Software Write + 35 Protect flag for this unit. See Section 4.14, "Write + 36 Protection." + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-91 + ONLINE Command 11 June 1992 + + + 1 6.13.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | unit size | + 23 +-------------------------------+ + 24 | volume serial number | + 25 +-------------------------------+ + + + + 26 | status + + 27 The validity of the unit characteristics varies with the + 28 unit's state implied by the contents of this field. See + 29 Status Codes listed below and Section 6.17.3, "SET UNIT + 30 CHARACTERISTICS Command, Description" for complete + 31 details. + + 32 All other fields of the ONLINE command's end message are + 33 identical to the SET UNIT CHARACTERISTICS command's end + 34 message. Refer to Section 6.17.2, "SET UNIT CHARACTERISTICS + 35 Command, End Message Format" for a description of the fields. + + 36 Status Codes: + + 37 Success (subcode "Normal") + + 38 Implies that the unit is "Unit-Online." + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-92 + ONLINE Command 11 June 1992 + + + 1 Success (subcode "Already Online") + + 2 The "Already Online" subcode bit flag is set if and only + 3 if the unit is already "Unit-Online" to the requesting + 4 class driver. The unit's state and characteristics are + 5 not altered. When the unit is already "Unit-Online" to + 6 the requesting class driver, the controller merely + 7 returns the unit characteristics in the end message with + 8 this status bit flag set, without performing any other + 9 actions. + + 10 Invalid Command (subcode "Invalid Unit Flags") + + 11 The unit is already "Unit-Online" and, for those unit + 12 flags that are both host-settable and supported by the + 13 controller, the class driver has specified different + 14 values from those currently in effect on the unit. The + 15 unit remains "Unit-Online." The host-settable unit flags + 16 are not changed, and the end message returns all unit + 17 flags. Controllers may, at their option, omit checking + 18 that the unit flags are the same and just ignore the + 19 class driver specified unit flags for units that are + 20 already "Unit-Online," thus returning a "Success" status + 21 code with "Already Online" subcode. + + 22 Command Aborted + + 23 The command has been rejected and the unit's state has + 24 not been changed. If the unit was "Unit-Available" prior + 25 to issuing this command, then it is still + 26 "Unit-Available." However, as the unit's state is not + 27 reported to the host, the host should assume that the + 28 returned unit characteristics are invalid as the unit may + 29 be "Unit-Offline." + + 30 Unit-Offline + + 31 Note that some causes of a unit being "Unit-Offline" may + 32 be overridden (suppressed) by the "Allow Self + 33 Destruction" command modifier. + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-93 + ONLINE Command 11 June 1992 + + + 1 Media Format Error + + 2 The unit is and remains "Unit-Available." However, + 3 attention messages are suppressed for this unit and the + 4 controller attempts to spin-down this unit exactly as if + 5 an AVAILABLE command with the "Spin-down" modifier set + 6 were issued. Note, however, that this error will be + 7 suppressed and the unit brought "Unit-Online" anyway if + 8 the "Ignore Media Format Error" command modifier is set. + 9 See the modifier description above. + + 10 Controller Error + + 11 The actual drive state is unknown. Therefore the class + 12 driver should assume that the unit is "Unit-Offline." + + 13 Drive Error + + 14 The unit is "Unit-Offline" due to being inoperative. The + 15 controller shall suppress AVAILABLE attention messages + 16 for the unit and attempt to spin-down the unit, exactly + 17 as if an AVAILABLE command with the "Spin-down" modifier + 18 set were issued for the unit. The controller may + 19 subsequently report the unit as being either + 20 "Unit-Offline" or "Unit-Available." The reported unit + 21 state will depend upon exactly how the unit is "broken," + 22 and the interactions of the failure with the controller's + 23 perception of the unit's state. + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-94 + ONLINE Command 11 June 1992 + + + 1 6.13.3 Description + + 2 The ONLINE command is used to bring a unit "Unit-Online," set + 3 host-settable unit characteristics, and obtain those unit + 4 characteristics that are essential for proper class driver + 5 operation (see Section 5.7, "Unit Flags" for additional + 6 information). The unit is spun-up, if necessary, and its heads + 7 are loaded prior to returning the ONLINE command's end message. + 8 Host-settable characteristics are set exactly as if a SET UNIT + 9 CHARACTERISTICS command were issued (see Section 6.17.2, "SET + 10 UNIT CHARACTERISTICS Command"). Host-settable characteristics + 11 are set after the unit has been successfully spun-up and any + 12 other validity checks have succeeded. Note that the unit's + 13 host-settable characteristics are NOT altered if the unit is + 14 already "Unit-Online." + + 15 For details of class driver responsibilities with respect to Host + 16 Initiated Bad Block Replacement, see the Digital Storage + 17 Architecture Disk Format (DSDF) Specification section on "Host + 18 Initiated Bad Block Replacement." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-95 + READ Command 11 June 1992 + + + 1 6.14 READ Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.14.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | caa | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +-------------------------------+ + + + 23 Allowable modifiers: + + 24 Clear Serious Exception (ignored for disk class devices) + 25 Compare + 26 Express Request + 27 Suppress Error Correction + 28 Suppress Error Recovery + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-96 + READ Command 11 June 1992 + + + 1 6.14.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +-------------------------------+ + 18 | first bad block | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success (subcode "Normal") + 22 Success (subcode "Duplicate Unit Number") + 23 Invalid Command (subcode "Invalid Byte Count") + 24 Invalid Command (subcode "Invalid Logical Block Number") + 25 Command Aborted + 26 Unit-Offline + 27 Unit-Available + 28 Compare Error + 29 Data Error + 30 Host Buffer Access Error + 31 Controller Error + 32 Drive Error + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-97 + READ Command 11 June 1992 + + + 1 6.14.3 Description + + 2 Data is read from the unit and transferred to the host buffer. + 3 For host buffer access details see Section 4.11, "Host Buffer + 4 Access." + + 5 If a controller-based cache exists, the cache manager may use the + 6 Cache Access Attribute advice in managing the caching and + 7 comparing of the requested data area. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-98 + REPLACE Command 11 June 1992 + + + 1 6.15 REPLACE Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.15.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | replacement block number | + 14 +-------------------------------+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +-------------------------------+ + + + 23 replacement block number + + 24 Identifies the replacement block that has been allocated + 25 to replace the bad logical block. + + 26 logical block number + + 27 Identifies the bad logical block that is being replaced. + + + 28 Allowable modifiers: + + 29 Clear Serious Exception (ignored for disk class devices) + 30 Express Request + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-99 + REPLACE Command 11 June 1992 + + + 1 Primary Replacement Block + + 2 Shall be set if and only if the "replacement block + 3 number" specifies the primary replacement block for + 4 "logical block number." I.e., set if and only if the + 5 following expression is true: + + 6 replacement block number = + 7 logical block number / track size * RBNs + + 8 where "track size" and "RBNs" are unit characteristics + 9 obtained via the GET UNIT CHARACTERISTICS command and "/" + 10 denotes integer (truncating) division. See Digital + 11 Storage Architecture Disk Format Specification (DSDF) for + 12 more information. Note that this modifier is redundant + 13 information provided for the convenience of the + 14 controller. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-100 + REPLACE Command 11 June 1992 + + + 1 6.15.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success (subcode "Normal") + 12 Success (subcode "Duplicate Unit Number") + 13 Invalid Command (subcode "Invalid Replacement Block Number") + + 14 Replacement block number is outside the range supported + 15 by this disk. + + 16 Invalid Command (subcode "Invalid Logical Block Number") + 17 Command Aborted + 18 Unit-Offline + 19 Unit-Available + 20 Write Protected + 21 Controller Error + 22 Drive Error + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-101 + REPLACE Command 11 June 1992 + + + 1 6.15.3 Description + + 2 The specified logical block is flagged to indicate that it has + 3 been replaced with the specified replacement block. The volume's + 4 Replacement Control Table (RCT) shall have been updated prior to + 5 using this command, and the replacement block should be + 6 initialized with a write command to the same logical block number + 7 after using this command. See Section 4.13, "Bad Block + 8 Replacement," and Digital Storage Architecture Disk Format + 9 Specification (DSDF) for more information on the use and function + 10 of this command. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-102 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 6.16 SET CONTROLLER CHARACTERISTICS Command + + 2 Command Category: + + 3 Immediate + + 4 6.16.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | reserved | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | cntrlr. flags | MSCP version | + 14 +---------------+---------------+ + 15 | reserved | host timeout | + 16 +---------------+---------------+ + 17 | quad-word | + 18 +--- ---+ + 19 | time and date | + 20 +-------------------------------+ + 21 |controller dependent parameters| + 22 +---------------+---------------+ + 23 | crn | (optional) + 24 +---------------+ + + + 25 MSCP version + + 26 Host class drivers shall supply the value zero in this + 27 field. MSCP servers shall verify this value and, if it + 28 is not zero, reject the command as an "Invalid Command" + 29 ("invalid MSCP version" protocol error. See "Invalid + 30 Command" status in Section 5.5). This value will be + 31 incremented if MSCP is ever modified in a way that is not + 32 upwards compatible. + + 33 cntrlr. flags + + 34 Host-settable controller flags. See Section 5.6, + 35 "Controller Flags." + + 36 host timeout + + 37 The time interval that the controller should use for the + 38 host access timeout with this host, or zero if the + 39 controller should disable the host access timeout for + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-103 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 this host. Expressed as an unsigned binary integer in + 2 units of seconds. Controllers should use a default host + 3 access timeout of 60 seconds if they have not received a + 4 SET CONTROLLER CHARACTERISTICS command since becoming + 5 "Controller-Online." + + 6 Even though this is a sixteen bit field, controllers may + 7 treat all values greater than 255 as if 255 had been + 8 specified, and all values between 1 and 9 as if 10 had + 9 been specified. See Section 4.9, "Host Access + 10 Timeouts." + + 11 quad-word time and date + + 12 The current time and date, expressed as the number of + 13 clunks since 00:00 o'clock, November 17, 1858 (in the + 14 local time zone), or zero if the current time and date is + 15 not available. A clunk is 100 nanoseconds. This is the + 16 standard VAX/VMS time and date format. The use that is + 17 made of the current time and date and the action taken if + 18 it is not supplied (i.e., if zero is supplied) is + 19 controller dependent, and should be described in each + 20 controller's Functional Specification. Controllers shall + 21 not require that a time and date be supplied for proper + 22 operation. + + 23 controller dependent parameters + + 24 Controller dependent tuning parameters. The value zero + 25 in this field means that default or normal tuning + 26 parameters should be used. Nonzero values for this field + 27 should normally be established through the system startup + 28 command file. + + 29 crn (connection reference number) + + 30 The nonzero value the server is to associate with the + 31 "Controller-Online" connection over which this command is + 32 received for the purpose of terminating the class + 33 driver/server connection a host has established with the + 34 server. See Section 7.10, "Multihost TERMINATE CLASS + 35 DRIVER/SERVER CONNECTION Command" for more information + 36 regarding the use of this field for that purpose. + + 37 This field is valid only for servers that provide Write + 38 History Logging Support or servers that support just the + 39 TERMINATE CLASS DRIVER/SERVER CONNECTION command. See + 40 Section 5.6, "Controller Flags" for related information. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-104 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 If a server provides such support, this field is + 2 optional. A host class driver need only supply this + 3 field if the TERMINATE CLASS DRIVER/SERVER CONNECTION + 4 command is to be used. If a value of zero is supplied in + 5 this field, the server rejects the command as an "Invalid + 6 Command" ("invalid crn" parameter error). + + 7 If the Connection Reference Number Present modifier is + 8 set and the "crn" field is not supplied, the server + 9 rejects the command as an Invalid Command (subcode + 10 "Invalid Message Length") protocol error (see Section + 11 5.5, "Status Codes"). + + + + 12 Allowable modifiers: + + 13 Connection Reference Number Present + + 14 Shall be set if and only if the host provides the + 15 optional "crn (connection reference number)" command + 16 message field. See the description of that field above. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-105 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 6.16.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| reserved | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | cntrlr. flags | MSCP version | + 11 +-------+-------+---------------+ + 12 |chvrsn | csvrsn|cntrlr. timeout| + 13 +-------+-------+---------------+ + 14 | | + 15 +--- controller identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | maximum byte count (optional) | + 19 +-------------------------------+ + + + 20 cntrlr. flags + + 21 See Section 5.6, "Controller Flags." + + 22 cntrlr. timeout + + 23 The controller timeout interval; the minimum amount of + 24 time that the controller needs to guarantee it will + 25 accomplish useful work on its oldest outstanding command. + 26 Expressed as an unsigned binary integer in units of + 27 seconds. This value may not exceed 255 (one byte), even + 28 though a sixteen bit field has been provided. See + 29 Section 4.10, "Command Timeouts." + + 30 csvrsn + + 31 The controller's software, firmware, or microcode + 32 revision number. Always zero if the product's + 33 development and maintainability groups determine that + 34 there is no benefit from supporting machine readable + 35 revision numbers. + + 36 chvrsn + + 37 The controller's hardware revision number. Always zero + 38 if the product's development and maintainability groups + 39 determine that there is no benefit from supporting + 40 machine readable revision numbers. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-106 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 controller identifier + + 2 Uniquely identifies the controller among all devices + 3 accessible via MSCP. See Section 4.17, "Controller and + 4 Unit Identifiers." + + 5 maximum byte count (optional) + + 6 The maximum byte count value supported by the server. + 7 Class drivers should not issue transfer commands with + 8 byte counts larger than this value; byte counts equal to + 9 this value are supported. + + 10 This value shall be at least as large as the following: + + 11 o For disk class devices, 16,777,216 (2**24) bytes. + + 12 o For tape class devices, 65535 (2**16-1) bytes. + + + 13 That is, all servers shall support transfers at least as + 14 large as the above values. Support for longer transfers + 15 is optional. + + 16 This field is optional. Class drivers determine whether + 17 or not this field is included in the end message by + 18 checking the message length supplied by the + 19 communications mechanism. If this field is not supplied, + 20 or if its contents are zero, then the server supports + 21 byte counts up to the values shown in the previous + 22 paragraph. + + + 23 Status Codes: + + 24 Success (subcode "Normal") + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-107 + SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 6.16.3 Description + + 2 The SET CONTROLLER CHARACTERISTICS command is used to set and + 3 obtain controller characteristics. The default value for + 4 "cntrlr. flags" is all flags clear (i.e., all messages disabled). + 5 The default value for "host timeout" is 60 seconds. These + 6 default values are used from the time that the controller becomes + 7 "Controller-Online" to a host until it stops being + 8 "Controller-Online" or until the host issues a SET CONTROLLER + 9 CHARACTERISTICS command. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-108 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 6.17 SET UNIT CHARACTERISTICS Command + + 2 Command Category: + + 3 Sequential + + 4 6.17.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | reserved | + 16 +-------------------------------+ + 17 | | + 18 +--- reserved ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +-------------------------------+ + 23 | reserved | + 24 +-------------------------------+ + + + 25 unit flags + + 26 Host-settable unit flags. See Section 5.7, "Unit + 27 Flags." + + 28 device dependent parameters + + 29 Device and/or controller dependent device tuning + 30 parameters. The value zero in this field means that + 31 default or normal tuning parameters should be used. + 32 Nonzero values for this field should normally be + 33 established through the system startup command file. + 34 Examples of the use of this field include selecting + 35 alternative optimization algorithms or enabling and + 36 disabling automatic (online) diagnosis of the unit. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-109 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 Allowable modifiers: + + 2 Clear Serious Exception (ignored for disk class devices) + + 3 Enable Set Write Protect + + 4 Causes the "Write Protect" unit flag to be host-settable. + 5 This modifier causes the state of the "Write Protect + 6 (software)" unit flag to be copied to the Software Write + 7 Protect flag for this unit. See Section 4.14, "Write + 8 Protection." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-110 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 6.17.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | unit size | + 23 +-------------------------------+ + 24 | volume serial number | + 25 +-------------------------------+ + + + + 26 | status + + 27 The validity of the unit characteristics varies with the + 28 unit's state implied by the contents of this field. See + 29 Status Codes listed later in this section and Section + 30 6.17.3, "SET UNIT CHARACTERISTICS Command, Description" + 31 for complete details. + + 32 multiunit code + + 33 The low byte of this field identifies the access path + 34 between the controller and the unit. The high byte of + 35 this field identifies the spindle, within the access + 36 path, to which the unit belongs. See Section 4.16.2, + 37 "Multiunit Drives and Formatters," for more information. + + 38 unit flags + + 39 See Section 5.7, "Unit Flags." + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-111 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 spndles + + 2 The number minus one of spindles or spindle "groups" in + 3 the unit. The value of zero indicates one spindle. See + 4 Section 4.12, "Disk Geometry and Format." + + 5 unit identifier + + 6 Uniquely identifies the unit among all devices accessible + 7 via MSCP. See Section 4.17, "Controller and Unit + 8 Identifiers." + + 9 media type identifier + + 10 Identifies the type of media used by this unit, for use + 11 by host generic device allocation mechanisms. See + 12 Section 4.18, "Media Type Identifiers." + + 13 unit size + + 14 The number of logical blocks in the host area of this + 15 unit. This value does NOT include the logical block + 16 range occupied by the unit's Replacement Control Table + 17 (RCT). The logical block number of the first block of + 18 the unit's RCT is equal to this value. + + 19 volume serial number + + 20 The low order 32 bits of the serial number of the volume + 21 that is mounted on this unit. Zero if the volume does + 22 not have a serial number. When displayed in human + 23 readable form, this number should be formatted as a ten + 24 digit decimal number with leading zeros printed. + 25 Undefined if the unit is "Unit-Offline" or + 26 "Unit-Available," or if the "Ignore Media Format Error" + 27 modifier was set in the ONLINE command that first brought + 28 this unit "Unit-Online." + + 29 Hosts may not assume that the value returned in this + 30 field uniquely identifies the volume. Although this + 31 value often will be unique, the uniqueness is not + 32 guaranteed, especially across media obtained from several + 33 independent suppliers. Also, media that must meet + 34 external (industry compatible) format standards will + 35 typically be unable to implement a volume serial number. + 36 This field will always be zero for such media. + + + 37 Status Codes: + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-112 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 Success (subcode "Normal") + 2 Success (subcode "Duplicate Unit Number") + + 3 Imply that the unit is "Unit-Online." + + 4 Command Aborted + + 5 The command has been rejected and the unit's state and + 6 context have not been changed. That is, the unit's unit + 7 flags and device dependent parameters are unchanged. + 8 Since the unit's state is not reported to the host, the + 9 host should assume that the returned unit characteristics + 10 are invalid as the unit may be "Unit-Offline." + + 11 Unit-Offline + 12 Unit-Available + + 13 Controller Error + 14 Drive Error + + 15 For both of these status codes the actual drive state is + 16 unknown (although it will usually be "Unit-Offline" due + 17 to being inoperative). Therefore the class driver should + 18 assume that the unit is "Unit-Offline." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-113 + SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 6.17.3 Description + + 2 The SET UNIT CHARACTERISTICS command is used to set host-settable + 3 unit characteristics and obtain those unit characteristics that + 4 are essential for proper class driver operation. This command + 5 never alters the unit's state ("Unit-Online," "Unit-Available," + 6 "Unit-Offline"). It is meaningless to set host-settable + 7 characteristics for a unit that is "Unit-Available" or + 8 "Unit-Offline." + + 9 Class drivers can determine which of the returned unit + 10 characteristics are valid from the unit state implied by the + 11 returned "status" (see Status Codes listed above) as follows: + + 12 1. Unit is "Unit-Offline" and unknown to controller. All + 13 characteristic fields and all unit flags are undefined. + + 14 2. Unit is "Unit-Offline" and known to the controller or it + 15 is "Unit-Available." The "multiunit code," "unit + 16 identifier," and "media type identifier" characteristic + 17 fields are valid. The "Removable Media" unit flag is + 18 valid. All other characteristic fields and unit flags + 19 are undefined. + + 20 3. Unit is "Unit-Online". All characteristics fields and + 21 all unit flags are valid. + + + 22 Note that the format of the SET UNIT CHARACTERISTICS command's + 23 end message is identical to that of the ONLINE command's end + 24 message because the ONLINE command performs a SET UNIT + 25 CHARACTERISTICS operation after bringing a unit "Unit-Online." + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-114 + WRITE Command 11 June 1992 + + + 1 6.18 WRITE Command + + 2 Command Category: + + 3 Non-Sequential + + 4 6.18.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | caa | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + 21 | logical block number | + 22 +---------------+---------------+ + 23 | entry id | hrn or entloc | (optional) + 24 +---------------+---------------+ + + + 25 hrn (host reference number) or entloc (entry locator) + 26 entry id + + 27 Optional fields, used in conjunction with the History Log + 28 and Reuse Entry modifiers. See the descriptions of those + 29 modifiers below. + + 30 Allowable modifiers: + + 31 Clear Serious Exception (ignored for disk class devices) + 32 Compare + 33 Express Request + 34 Force Error + 35 History Log + 36 Reuse Entry + + 37 The History Log and Reuse Entry modifiers are + 38 interdependent and described together here to avoid + 39 confusion. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-115 + WRITE Command 11 June 1992 + + + 1 Note that the History Log modifier, the Reuse Entry + 2 modifier, the "hrn or entloc" field, and the "entry id" + 3 field are valid only for servers that provide "write + 4 history logging" support (i.e., the server sets the Write + 5 History Logging Support controller flag; see Section 5.6, + 6 "Controller Flags" for related information). + + 7 The setting of the History Log modifier determines + 8 whether information about this command is to be stored in + 9 a "write history entry." + + 10 The setting of the Reuse Entry modifier determines + 11 whether the server is to allocate a new "write history + 12 entry" or reuse one that was previously allocated. + + 13 If "write history logging" is supported and the History + 14 Log modifier is set and the Reuse Entry modifier is + 15 clear, the server allocates a new "write history entry" + 16 and then stores the value contained in the "hrn (host + 17 reference number)" field, "entry id" field, and other + 18 information related to this command into the "write + 19 history entry" just allocated. If the server has no + 20 "write history entry" to allocate, it shall remember this + 21 fact. See Section 6.19.3, "WRITE HISTORY MANAGEMENT + 22 Command, Description" for more details. To report this + 23 allocation failure to the host, the server returns + 24 FFFF(hex) in the "entry locator" field of the end message + 25 and sets the Allocation Failure end flag. See Section + 26 5.4, "End Messages," for a description of this flag. + + 27 If "write history logging" is supported and the History + 28 Log modifier is set and the Reuse Entry modifier is set, + 29 the server uses the value contained in the "entloc (entry + 30 locator)" field to locate the associated "write history + 31 entry" and then stores the other information related to + 32 this command into that "write history entry." + + 33 See Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 34 Description" for details regarding the maintenance and + 35 format of "write history entries." + + 36 Note that when "write history logging" is supported and + 37 the History Log modifier is set host class drivers shall + 38 supply both the "hrn or entloc" and the "entry id" + 39 fields. If the History Log modifier is set and those + 40 fields are not supplied, the server rejects the command + 41 as an "Invalid Command" ("invalid message length" + 42 protocol error. See "Invalid Command" status in Section + 43 5.5, "Status Codes"). + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-116 + WRITE Command 11 June 1992 + + + 1 If "write history logging" is supported and the History + 2 Log modifier is clear, the server ignores the setting of + 3 the Reuse Entry modifier and the contents of the "hrn or + 4 entloc" and "entry id" fields if they are supplied. Note + 5 that host class drivers need not supply those fields when + 6 the History Log modifier is clear. + + 7 If "write history logging" is not supported and the + 8 History Log modifier or the Reuse Entry modifier is set, + 9 the server rejects the command as an "Invalid Command" + 10 ("invalid modifier" protocol error. See "Invalid + 11 Command" status in Section 5.5, "Status Codes"). + + 12 If "write history logging" is supported, the History Log + 13 modifier is set, and the "byte count" field is zero, the + 14 server rejects the command as an Invalid Command + 15 ("invalid byte count" parameter error. See "Invalid + 16 Command" status in Section 5.5, "Status Codes"). + + 17 The server shall set the History Logged end flag in this + 18 command's end message if it has caused the write history + 19 log to contain a valid "write history entry" for this + 20 command. See Section 5.4, "End Messages," for + 21 descriptions of all end message flags. + + 22 | Supplement Write Log + + 23 | The Supplement Write log modifier allows the transfer + 24 | length field of an existing write log in a controller to + 25 | be modified. When this modifier is set, the transfer + 26 | length of the current WRITE command is added to the + 27 | transfer length field of the specified write log entry. + 28 | No other fields in the write log entry are modified. In + 29 | particular, the unit number field, the flags field, the + 30 | logical block number field, the entry id field, and the + 31 | hrn field shall remain unchanged. + + 32 | This modifier is valid only if the History Log and Reuse + 33 | Entry modifiers are both set, and the controller supports + 34 | Write History Logging; Write History Logging Support flag + 35 | set, otherwise it shall be ignored. + + 36 | Proper use of this modifier requires that hosts should + 37 | not issue more than one MSCP command at a time using the + 38 | same entry locator. Requests for a given entry locator + 39 | using this modifier shall be in exact logical block + 40 | number sequence order with each successive logical block + 41 | number being higher by precisely the transfer length + 42 | (converted to sectors) of the previous WRITE command. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-117 + WRITE Command 11 June 1992 + + + 1 Suppress Error Correction + + 2 Note that this modifier only affects the compare pass of + 3 a write-compare operation. It has no affect on the write + 4 operation itself. + + 5 Suppress Error Recovery + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-118 + WRITE Command 11 June 1992 + + + 1 6.18.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +-------------------------------+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +-------------------------------+ + 18 | first bad block | + 19 +---------------+---------------+ + 20 | entry id | entry locator | (conditionally present) + 21 +---------------+---------------+ + + + 22 entry locator + + 23 This field is present if and only if the corresponding + 24 command message field is present. If present and the + 25 History Log modifier is set in the command message, this + 26 field contains the value assigned by the server that + 27 uniquely identifies the internal location of the "history + 28 entry" where this command's information was stored. If, + 29 however, an allocation failure occurred, this field + 30 contains the value FFFF(hex). If present and the History + 31 Log modifier is clear in the command message, this field + 32 is undefined. + + 33 This field contains a valid entry locator of a "write + 34 history entry" for this command if and only if the + 35 History Logged end flag is set in the "flags" field of + 36 this end message. + + 37 See the description of the History Log and Reuse Entry + 38 modifiers in Section 6.18.1, "WRITE Command, Command + 39 Message Format" and Section 6.19.3, "WRITE HISTORY + 40 MANAGEMENT Command, Description" for more detail. + + 41 entry id + + 42 This field is present if and only if the corresponding + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-119 + WRITE Command 11 June 1992 + + + 1 command message field is present. If present and the + 2 History Log modifier is set in the command message, the + 3 contents of the corresponding command message field is + 4 copied without modification to this field. If present + 5 and the History Log modifier is clear in the command + 6 message, this field is undefined. + + 7 See the description of the History Log and Reuse Entry + 8 modifiers in Section 6.18.1, "WRITE Command, Command + 9 Message Format" and Section 6.19.3, "WRITE HISTORY + 10 MANAGEMENT Command, Description" for more detail. + + + 11 Status Codes: + + 12 Success (subcode "Normal") + 13 Success (subcode "Duplicate Unit Number") + 14 Invalid Command (subcode "Invalid Byte Count") + + 15 A byte count of zero was specified with the History Log + 16 modifier set. + + 17 Invalid Command (subcode "Invalid Entry Locator") + + 18 The value specified in the "entloc (entry locator)" field + 19 is not within the limits of the server's "write history + 20 entry" set. + + 21 See the description of the History Log and Reuse Entry + 22 modifiers in Section 6.18.1, "WRITE Command, Command + 23 Message Format" and Section 6.19.3, "WRITE HISTORY + 24 MANAGEMENT Command, Description" for more detail. + + 25 Note that this error can only occur if "write history + 26 logging" is supported and the History Log and Reuse Entry + 27 modifiers are both set in the command message. + + 28 Invalid Command (subcode "Invalid Entry Id") + + 29 The server located the "write history entry" identified + 30 in the "entloc (entry locator)" field but found that the + 31 "entry id" contained in that entry does not equal the + 32 value supplied by a host class driver when that entry was + 33 allocated. This status may also be returned if the + 34 History Log modifier was set, the Reuse Entry modifier + 35 was clear, and the host supplied a value of FFFF (hex) in + 36 the "entry id" field. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-120 + WRITE Command 11 June 1992 + + + 1 See the description of the History Log and Reuse Entry + 2 modifiers in Section 6.18.1, "WRITE Command, Command + 3 Message Format" and Section 6.19.3, "WRITE HISTORY + 4 MANAGEMENT Command, Description" for more detail. + + 5 Note that this error can only occur if "write history + 6 logging" is supported and the History Log modifier is set + 7 in the command message. + + 8 Invalid Command (subcode "Invalid Logical Block Number") + 9 Command Aborted + 10 Unit-Offline + 11 Unit-Available + 12 Write Protected + 13 Compare Error + 14 Data Error + 15 Host Buffer Access Error + 16 Controller Error + 17 Drive Error + 18 Write History Entry Access Error (subcode "Allocation Failure + 19 Table Full") + + 20 The server was unable to allocate a "write history entry" + 21 and could not record this fact because the Allocation + 22 Failure Table was full. This is a transient condition; + 23 therefore, the host should reissue the command. See + 24 Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 25 Description" for more details. + + 26 Note that this error can occur only if "write history + 27 logging" is supported and the History Log modifier is set + 28 and Reuse Entry modifier is clear in the command message. + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-121 + WRITE Command 11 June 1992 + + + 1 6.18.3 Description + + 2 Data is fetched from the host data buffer and written to the + 3 unit. For host buffer access details see Section 4.11, "Host + 4 Buffer Access." + + 5 If a controller-based cache exists, the cache manager may use the + 6 Cache Access Attribute advice in managing the caching and + 7 comparing of the requested data area. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-122 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 6.19 WRITE HISTORY MANAGEMENT Command + + 2 Command Category: + + 3 Sequential + + 4 6.19.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +---------------+---------------+ + 15 | "write history" | + 16 +--- ---+ + 17 | buffer | + 18 +--- ---+ + 19 | descriptor | + 20 +---------------+---------------+ + 21 | offset | operation | + 22 +---------------+---------------+ + 23 | entry id | hrn or entloc | + 24 +---------------+---------------+ + + + 25 byte count + + 26 The total requested length of the data transfer ("write + 27 history entries") in bytes; that is, the number of "write + 28 history entries" requested times the size of a "write + 29 history entry" (16 bytes). If value in this field is not + 30 a multiple of the "write history entry" size, the server + 31 shall reject the command as an Invalid Command (subcode + 32 "Invalid Byte Count") parameter error. See the + 33 description of the "byte count" field in Section 5.3.1, + 34 "Transfer Command Message Format," for more details on + 35 architectural and server constraints. + + 36 The interpretation of this field varies depending on the + 37 "write history management" operation specified. See the + 38 description of the READ ALL and READ BY HOST REFERENCE + 39 NUMBER operations in the "operation" field description + 40 below for complete details. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-123 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 "write history" buffer descriptor + + 2 Identification of the host buffer where "write history + 3 entries" are to be stored when a READ ALL or a READ BY + 4 HOST REFERENCE NUMBER operation is specified. See the + 5 description of those operations in the "operation" field + 6 above for complete details. + + 7 The format of the "'write history' buffer descriptor" is + 8 identical to the "buffer descriptor" field described in + 9 Section 5.3.1, "Transfer Command Message Format." + + 10 operation + + 11 The "write history management" operation to be performed: + + 12 DEALLOCATE ALL + + 13 The server deallocates all of the "write history + 14 entries" associated with the unit identified in the + 15 "unit number" field. + + 16 This operation clears any "previous allocation + 17 failure" condition associated with this unit for all + 18 host reference numbers. This is accomplished by + 19 deleting all entries with this unit number from the + 20 controller's Allocation Failure Table. + + 21 The server ignores the "'write history' buffer + 22 descriptor," "byte count," "offset," "hrn or entloc," + 23 and "entry id" fields when this operation is + 24 specified. + + 25 DEALLOCATE BY HOST REFERENCE NUMBER + + 26 The server deallocates all of the "write history + 27 entries" that are associated with both the value + 28 supplied in the "hrn (host reference number)" field + 29 and the unit identified in the "unit number" field. + + 30 This operation clears any "previous allocation + 31 failure" condition associated with this unit for this + 32 host reference number. That is, the server deletes + 33 the entry associated with this host reference number + 34 and unit in its Allocation Failure Table if such an + 35 entry exists. This does not affect "previous + 36 allocation failures" associated with other units or + 37 other host reference numbers. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-124 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 The server ignores the "'write history' buffer + 2 descriptor," "byte count," "offset," and "entry id" + 3 fields when this operation is specified. + + 4 DEALLOCATE BY ENTRY LOCATOR + + 5 The server deallocates the "write history entry" that + 6 is located at the internal server location specified + 7 in the "entloc (entry locator)" field. + + 8 If the "entry locator" is not within the limits of + 9 the server's "write history entry" set, the server + 10 rejects the command as an "Invalid Command" ("invalid + 11 entry locator" parameter error. See "Invalid + 12 Command" status in Section 5.5, "Status Codes"). + + 13 If the "write history entry" is already deallocated, + 14 the server rejects the command as an "Invalid + 15 Command" ("invalid entry id" parameter error). + + 16 If the value contained in the "entry id" field of the + 17 command message is FFFF (hex) and the entry is not + 18 already deallocated, the server deallocates the + 19 "write history entry" and does not compare this value + 20 with the "entry id" value associated with the "write + 21 history entry." + + 22 If the value contained in the "entry id" field of the + 23 command message is not FFFF (hex) and it does not + 24 equal the "entry id" value associated with the "write + 25 history entry" located via the "entry locator," the + 26 server rejects the command as an "Invalid Command" + 27 ("invalid entry id" parameter error. See "Invalid + 28 Command" status in Section 5.5, "Status Codes"). + + 29 The server ignores the "'write history' buffer + 30 descriptor," "byte count," and "offset" fields when + 31 this operation is specified. + + 32 DECREMENT ALLOCATION FAILURE COUNT + + 33 The server decrements the count field of the entry + 34 associated with this host reference number and unit + 35 in its Allocation Failure Table if such an entry + 36 exists. If this causes the count field to go to + 37 zero, the entry is deleted. If no such entry exists, + 38 the server rejects the command with a status of Write + 39 History Entry Access Error (subcode "No Such Entry"). + 40 Otherwise, the server returns Success. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-125 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 The server may, at its option, treat a WRITE HISTORY + 2 MANAGEMENT command with the DECREMENT ALLOCATION + 3 FAILURE COUNT operation as an Immediate command. + + 4 The server ignores the "'write history' buffer + 5 descriptor," "byte count," "offset," and "entry id" + 6 fields when this operation is specified. + + 7 READ ALL + + 8 If the "byte count" field is zero, the server sets + 9 the command's end message "count" field equal to the + 10 number of "write history entries" that are associated + 11 with the unit identified in the "unit number" field, + 12 and then completes the command with a status of + 13 Success (subcode "Normal"). In this case the server + 14 ignores the "'write history' buffer descriptor," + 15 "offset," "hrn or entloc," and "entry id" fields. + + 16 If the "byte count" field is nonzero, the server + 17 transfers the number of "write history entries" + 18 implied by the "byte count" field to the host class + 19 driver's buffer (specified in the "'write history' + 20 buffer descriptor" field) beginning at the offset + 21 specified in the "offset" field into the group of + 22 entries associated with the unit identified in the + 23 "unit number" field. There may be fewer "write + 24 history entries" than implied by the "byte count" + 25 field. The server indicates the number of "write + 26 history entries" actually transferred in the "count" + 27 field of the end message. Note that only those + 28 "write history entries" that are associated with the + 29 unit identified in the "unit number" field are + 30 included in the transfer. In this case the server + 31 ignores the "hrn or entloc," and "entry id" fields. + 32 Note also that the "count" returned by the server may + 33 be zero if there are no more entries beginning at the + 34 specified offset but there is at least one entry + 35 associated with the unit identified in the "unit + 36 number" field. If there is no entry in the write + 37 history log associated with the unit identified in + 38 the "unit number" field, the server completes the + 39 command with a status of Write History Entry Access + 40 Error (subcode "No Such Entry"). + + 41 READ BY HOST REFERENCE NUMBER + + 42 If the "byte count" field is zero, the server sets + 43 the command's end message "count" field equal to the + 44 number of "write history entries" that are associated + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-126 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 with both the value contained in the "hrn (host + 2 reference number)" field and the unit identified in + 3 the "unit number" field, and then completes the + 4 command with a status of Success (subcode "Normal"). + 5 In this case the server ignores the "'write history' + 6 buffer descriptor," "offset," and "entry id" fields. + + 7 If the "byte count" field is nonzero, the server + 8 transfers the number of "write history entries" + 9 implied by the "byte count" field to the host class + 10 driver's buffer (specified in the "'write history' + 11 buffer descriptor" field) beginning at the offset + 12 specified in the "offset" filed into the group of + 13 entries associated with both the value contained in + 14 the "hrn (host reference number)" field and the unit + 15 identified in the "unit number" field. There may be + 16 fewer "write history entries" than specified in the + 17 "count" field. The server indicates the number of + 18 "write history entries" actually transferred in the + 19 "count" field of the end message. Note that only + 20 those "write history entries" that are associated + 21 with both the value contained in the "hrn (host + 22 reference number)" field and the unit identified in + 23 the "unit number" field are included in the transfer. + 24 In this case the server ignores the "entry id" field. + 25 Note also that the "count" returned by the server may + 26 be zero if there are no more entries beginning at the + 27 specified offset but there is at least one entry + 28 associated with both the value in the "hrn (host + 29 reference number)" field and the unit identified in + 30 the "unit number" field. If there is no entry in the + 31 write history log associated with the specified host + 32 reference number and unit, the server completes the + 33 command with a status of Write History Entry Access + 34 Error (subcode "No Such Entry"). + + 35 See Appendix A, "Opcode, Flag, and Offset Definitions," + 36 Table A-14, "Write History Management Command Operation + 37 Codes" for the values and mnemonics assigned to those + 38 operations. + + 39 If an operation not listed in Table A-14 is specified, + 40 the server rejects the command as an "Invalid Command" + 41 ("invalid operation" protocol error. See "Invalid + 42 Command" status in Section 5.5, "Status Codes"). + + 43 Note that the server shall perform the specified + 44 operation when the unit is in the "Unit-Offline" (all + 45 substates except "Exclusive Use"), "Unit-Online," or the + 46 "Unit-Available" state relative to the issuing host class + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-127 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 driver. + + 2 offset + + 3 The offset (in "write history entries") into the group of + 4 "write history entries" specified by a READ ALL or READ + 5 BY HOST REFERENCE NUMBER operation. See the description + 6 of these WRITE HISTORY MANAGEMENT operations in the + 7 "operation" field above for complete details. + + 8 hrn (host reference number) or entloc (entry locator) + + 9 The interpretation of this field varies depending on the + 10 "write history management" operation specified. See the + 11 descriptions of the DEALLOCATE BY HOST REFERENCE NUMBER, + 12 DEALLOCATE BY ENTRY LOCATOR, DECREMENT ALLOCATION FAILURE + 13 COUNT, and READ BY HOST REFERENCE NUMBER operations in + 14 the "operation" field above for complete details. + + 15 See Sections 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 16 Description," 6.7, "DISK COPY DATA Command," 6.9, "ERASE + 17 Command," and 6.18, "WRITE Command" for more information + 18 regarding this field. + + 19 entry id + + 20 The interpretation of this field varies depending on the + 21 "write history management" operation specified. See the + 22 description of the DEALLOCATE BY ENTRY LOCATOR operation + 23 in the "operation" field above for complete details. + + 24 See Sections 6.19.3, "WRITE HISTORY MANAGEMENT Command, + 25 Description," 6.7, "DISK COPY DATA Command," 6.9, "ERASE + 26 Command," and 6.18, "WRITE Command" for more information + 27 regarding this field. + + 28 Allowable modifiers: + + 29 none + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-128 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 6.19.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count | + 11 +---------------+---------------+ + 12 | server alloc | unit alloc | + 13 +---------------+---------------+ + 14 | |server unalloc | + 15 + +---------------+ + 16 | undefined | + 17 +---------------+---------------+ + 18 | offset | count | + 19 +---------------+---------------+ + 20 | entry id | hrn or entloc | + 21 +---------------+---------------+ + + + 22 byte count + + 23 The number of bytes successfully transferred. See + 24 Section 5.3.1, "Transfer Command End Message Format," for + 25 more details. + + 26 unit alloc + + 27 The total number of "write history entries" currently + 28 allocated and associated with the unit identified in the + 29 command message "unit number" field. This field is + 30 undefined if the operation specified in the command was + 31 DEALLOCATE BY ENTRY LOCATOR or DECREMENT ALLOCATION + 32 FAILURE COUNT. + + 33 server alloc + + 34 The total number of "write history entries" currently + 35 allocated across all units served by the server. This + 36 field is undefined if the operation specified in the + 37 command was DEALLOCATE BY ENTRY LOCATOR or DECREMENT + 38 ALLOCATION FAILURE COUNT. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-129 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 server unalloc + + 2 The total number of unallocated "write history entries" + 3 currently available. This field is undefined if the + 4 operation specified in the command was DEALLOCATE BY + 5 ENTRY LOCATOR or DECREMENT ALLOCATION FAILURE COUNT. + + 6 count + + 7 The interpretation of this field varies depending on the + 8 "operation" specified and the outcome of the operation's + 9 execution. See the descriptions of those operations + 10 above and the descriptions of the various status codes + 11 below for specific details. + + 12 offset + + 13 Copied without modification from the corresponding + 14 command message field. + + 15 hrn (host reference number) or entloc (entry locator) + + 16 The interpretation of this field varies depending on the + 17 "operation" specified and possibly the outcome of the + 18 operation's execution. + + 19 If a DEALLOCATE BY HOST REFERENCE NUMBER, DEALLOCATE BY + 20 ENTRY LOCATOR, DECREMENT ALLOCATION FAILURE COUNT, or + 21 READ BY HOST REFERENCE NUMBER operation was specified, + 22 this field is copied without modification from the + 23 corresponding command message field. + + 24 If a DEALLOCATE ALL or READ ALL operation was specified, + 25 this field is undefined. + + 26 entry id + + 27 If a DEALLOCATE BY ENTRY LOCATOR operation was specified, + 28 this field is copied without modification from the + 29 corresponding command message field. Otherwise, this + 30 field is undefined. + + 31 Status Codes: + + 32 Success (subcode "Normal") + 33 Success (subcode "Duplicate Unit Number") + + 34 If a DEALLOCATE ALL, DEALLOCATE BY HOST REFERENCE NUMBER, + 35 or DEALLOCATE BY ENTRY LOCATOR operation was specified, + 36 the server sets the end message "count" field equal to + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-130 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 the number of "write history entries" deallocated. + + 2 If a DECREMENT ALLOCATION FAILURE COUNT operation was + 3 specified, the server sets the end message "count" field + 4 to the decremented value in the count field of the entry + 5 in the Allocation Failure Table. + + 6 If a READ ALL operation with a zero command message "byte + 7 count" field was specified, the server sets the end + 8 message "count" field equal to the number of "write + 9 history entries" associated with the unit identified in + 10 the "unit number" command message field. + + 11 If a READ BY HOST REFERENCE NUMBER operation with a zero + 12 command message "byte count" field was specified, the + 13 server sets the end message "count" field equal to the + 14 number of "write history entries" associated with both + 15 the value contained in the "hrn (host reference number)" + 16 command message field and the unit identified in the + 17 "unit number" command message field. + + 18 If a READ ALL or READ BY HOST REFERENCE NUMBER operation + 19 with a nonzero command message "byte count" field was + 20 specified, the server sets the end message "count" field + 21 equal to the number of "write history entries" actually + 22 transferred to the host's buffer. + + 23 Invalid Command (subcode "Invalid Byte Count") + 24 Invalid Command (subcode "Invalid Operation") + 25 Invalid Command (subcode "Invalid Entry Locator") + 26 Invalid Command (subcode "Invalid Entry Id") + 27 Command Aborted + + 28 Unit-Offline (subcode "Exclusive Use") + + 29 The unit is under the "Exclusive Access" of a host class + 30 driver other than the host class driver that issued this + 31 command. + + 32 As described in Section 6.19.3, "WRITE HISTORY MANAGEMENT + 33 Command, Description," all of the "write history entries" + 34 associated with the unit are only accessible by the host + 35 class driver that was granted "Exclusive Access" to the + 36 unit. The server will therefore take no action on the + 37 "write history entries" associated with the unit when + 38 this condition exists. + + 39 Host Buffer Access Error + + 40 Before returning this status the server sets the end + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-131 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 message "count" field equal to the number of "write + 2 history entries" transferred before the error occurred. + + 3 Note that this error can only occur if the operation + 4 specified is either a READ ALL or READ BY HOST REFERENCE + 5 NUMBER with a nonzero "byte count" field. + + 6 Write History Entry Access Error (subcode "No Such Entry") + + 7 The server returns this status under the following + 8 conditions: + + 9 1. A READ ALL operation was specified but the server + 10 could not find any "write history entries" associated + 11 with the unit identified in the "unit number" command + 12 message field. + + 13 2. A READ BY HOST REFERENCE NUMBER operation was + 14 specified but the server could not find any "write + 15 history entries" associated with both the value + 16 contained in the "hrn (host reference number)" + 17 command message field and the unit identified in the + 18 "unit number" command message field. + + 19 3. A DEALLOCATE BY ENTRY LOCATOR operation was specified + 20 but the specified "write history entry" is not + 21 currently associated with the unit identified in the + 22 "unit number" command message field. + + 23 4. A DECREMENT ALLOCATION FAILURE COUNT operation was + 24 specified but no entry associated with this host + 25 reference number and unit was found in the Allocation + 26 Failure Table. + + 27 In all the above cases, the server zeros the end message + 28 "count" field. + + 29 Write History Entry Access Error (subcode "Previous + 30 Allocation Failure") + + 31 A READ BY HOST REFERENCE NUMBER operation was specified + 32 but a previous "write history entry" allocation failure + 33 condition exists for this host reference number and unit + 34 or a READ ALL operation was specified and a previous + 35 allocation failure exists for some host reference number + 36 and this unit. In either case, no "write history + 37 entries" are transferred to the host. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-132 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 6.19.3 Description + + 2 Support of "write history logging" is a server implementation + 3 dependent option. Servers that do not provide such support shall + 4 reject this command as an "Invalid Command" ("invalid opcode" + 5 protocol error. See "Invalid Command" status in Section 5.5, + 6 "Status Codes"). + + 7 Servers that provide "write history logging" support shall also + 8 support the TERMINATE CLASS DRIVER/SERVER CONNECTION command as + 9 described in Section 7.10, "Multihost TERMINATE CLASS + 10 DRIVER/SERVER CONNECTION Command." Note that servers that + 11 support "write history logging" but do not provide Multihost + 12 Support treat the TERMINATE CLASS DRIVER/SERVER CONNECTION + 13 command as a no-operation as described in Section 6.1.1, + 14 "No-Operation Commands." + + 15 "Write history logging" and the TERMINATE CLASS DRIVER/SERVER + 16 CONNECTION command were defined primarily for the purpose of + 17 assisting in the operation of host based volume shadowing + 18 implementations. All servers that support "write history + 19 logging" (and therefore the TERMINATE CLASS DRIVER/SERVER + 20 CONNECTION command) shall set the Write History Logging Support + 21 controller flag. + + 22 "Write history logging" provides host class drivers with a means + 23 for detecting and recovering from the incomplete execution of + 24 DISK COPY DATA, ERASE, and WRITE commands addressed to a disk + 25 unit caused by unexpected host failure (e.g., a system crash). + 26 The server provides a set of "write history entries" for logging + 27 information related to write type commands issued by a host. The + 28 number of "write history entries" contained in the set provided + 29 by a server is implementation dependent. The number provided + 30 depends on an implementation's memory availability and speed of + 31 I/O request execution. In a multihost environment the host class + 32 drivers are responsible for managing the distribution of the + 33 "write history entry" set among themselves. + + 34 The server also provides a table, the Allocation Failure Table, + 35 for recording "write history entry" allocation failures. A + 36 "write history entry" allocation failure occurs when the server + 37 cannot allocate a new "write history entry" in response to a + 38 write type command requesting such an allocation because all + 39 "write history entries" are already allocated. The Allocation + 40 Failure Table is initially empty (i.e., contains no entries). An + 41 entry has three fields: "host reference number," "unit number," + 42 and "count." When an allocation failure occurs, the server + 43 searches the Allocation Failure Table for entry with the host + 44 reference number and unit number associated with the write type + 45 command. If such an entry is found, the server increments the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-133 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 "count" field of that entry and completes processing of the + 2 allocation failure as detailed below. If no such entry is found + 3 and the table is not full, the server creates a new entry with + 4 the host reference number and unit number associated with the + 5 write type command and sets the "count" field to one. The server + 6 then completes processing of the allocation failure as detailed + 7 below. If no such entry is found and the table is full, the + 8 server rejects the write type command with a status of Write + 9 History Entry Access Error (subcode "Allocation Failure Table + 10 Full"). + + 11 The host can use the WRITE HISTORY MANAGEMENT command to clear an + 12 allocation failure condition using either the DECREMENT + 13 ALLOCATION FAILURE COUNT operation or a DEALLOCATE operation. + 14 Normally, the host will use the former method after being + 15 notified of the condition by the end message of the write type + 16 command that caused it. Therefore, allocation failure conditions + 17 are usually transitory in nature. Note that an allocation + 18 failure condition exists for a given host reference number and + 19 unit exactly when there exists an entry in the Allocation Failure + 20 Table for that host reference number and unit. Therefore, + 21 clearing an allocation failure condition using a DEALLOCATE + 22 operation amounts to deleting the entry in the Allocation Failure + 23 Table associated with that host reference number and unit, + 24 regardless of the value in the "count" field in that entry. + + 25 If a write type command is rejected with a status of Write + 26 History Entry Access Error (subcode "Allocation Failure Table + 27 Full"), the host should reissue the command since this condition + 28 is transitory in nature and the reissued command is likely to + 29 | succeed. The server may maintain the "write history entry" set + 30 | in volatile memory and shall initialize all "write history + 31 | entries" after each power-up. + + 32 The initialization process the server performs consists of + 33 setting the "write history entries" into the deallocated state + 34 and deleting all entries in the Allocation Failure Table. "Write + 35 history entries" are allocated only via a History Log modified + 36 write type command. A "write history entry" is considered + 37 deallocated exactly when it is not accessible to a host via the + 38 WRITE HISTORY MANAGEMENT command or via a History Log and Reuse + 39 Entry modified write type command. The exact mechanism for + 40 tracking the status of a "write history entry" is server + 41 implementation dependent. However, in order to provide one such + 42 mechanism, the host shall never supply a value of FFFF (hex) in + 43 the "entry id" field. The server may, at its option, reject a + 44 command with an "entry id" field of FFFF (hex) as an "Invalid + 45 Command" ("invalid entry id" parameter error). + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-134 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 For the purposes of retrieving and deallocating the "write + 2 history entries," when an entry is associated with a write type + 3 command it is also associated with the unit to which the command + 4 was addressed. (The "unit number" is stored within the entry.) + + 5 The loss of the "Controller-Online" connection between the server + 6 and a host class driver shall have no effect on any allocated + 7 "write history entry" or Allocation Failure Table entry. Such + 8 entries will remain allocated until they are specifically + 9 deallocated + + 10 o by a host class driver request (i.e., via a WRITE + 11 HISTORY MANAGEMENT command that specifies an appropriate + 12 operation) + + 13 o by the occurrence of a condition that requires the + 14 server to initialize its set of "write history entries" + 15 as described earlier in this section + + + 16 Host class drivers associate a write type command with a "write + 17 history entry" by setting the History Log modifier in the + 18 command's message. The class driver also supplies information in + 19 the command message which allows the host to: + + 20 1. Associate an entry with a group of entries -- "hrn + 21 (host reference number)" field. + + 22 2. Reuse an entry it has already allocated -- "entloc + 23 (entry locator)" field. + + 24 3. Uniquely identify an entry among all of the entries in + 25 a group that are available for its use -- "entry id" + 26 field. + + 27 See Sections 6.7, "DISK COPY DATA Command," 6.9, "ERASE Command," + 28 and 6.18, "WRITE Command" for descriptions of that modifier and + 29 those fields. The actions a server takes when a History Log + 30 modified write type command is received are described in more + 31 detail later in this section. + + 32 The WRITE HISTORY MANAGEMENT command allows host class drivers to + 33 manage the "write history entries" associated with a unit via the + 34 following operations: + + 35 o Deallocate all entries. + + 36 o Deallocate the group of entries associated with a + 37 particular "host reference number." + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-135 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 o Deallocate a specific entry. + + 2 o Read all entries. + + 3 o Read the group of entries associated with a particular + 4 "host reference number." + + 5 o Decrement the count of an Allocation Failure Table + 6 entry. + + 7 See the description of the "operation" field in Section 6.19.1, + 8 "WRITE HISTORY MANAGEMENT Command, Command Message Format" for + 9 complete descriptions of those operations. + + 10 A server may use any appropriate internal format for a "write + 11 history entry." A "write history entry" presented to a host in + 12 response to a WRITE HISTORY MANAGEMENT READ ALL or READ BY HRN + 13 operation shall have the following format: + + 14 31 0 + 15 +---------------+---------------+ + 16 | unit number | entry locator | + 17 +---------------+---------------+ + 18 | transfer length | + 19 +-------------------------------+ + 20 | starting logical block number | + 21 +---------------+---------------+ + 22 | entry flags | hrn | + 23 +---------------+---------------+ + + + 24 entry locator + + 25 The value assigned by the server that uniquely identifies + 26 the internal location of the "write history entry." + + 27 unit number + + 28 Identifies the unit to which the command associated with + 29 the "write history entry" was addressed. + + 30 transfer length + + 31 The format of this field varies depending on the setting + 32 of the "Transfer Length in Blocks" entry flag in the + 33 "write history entry." The server may, at its option, + 34 store the transfer length of the associated command in + 35 bytes or blocks. If the byte count in the associated + 36 command was not a multiple of the unit's block size, the + 37 server may store the exact byte count, the byte count + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-136 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 rounded up to the next multiple of the unit's block size, + 2 or the block count computed by rounding the byte count up + 3 to a multiple of the unit's block size. + + 4 starting logical block number + + 5 The logical block number (position) on the disk volume at + 6 which the write operation is to start as specified in the + 7 associated command. + + 8 hrn (host reference number) + + 9 The value assigned by a host class driver for referencing + 10 a group of "write history entries." + + 11 entry flags + + 12 Bit flags, collectively known as entry flags, used to + 13 indicate the state of a "write history entry." The + 14 following flags are defined: + + 15 Error + + 16 Set if and only if the write type command for + 17 which the "write history entry" was created or + 18 updated did not complete with a status of + 19 Success. + + 20 Transfer Length in Blocks + + 21 Set if and only if the "transfer length" field of + 22 the "write history entry" is specified in blocks + 23 rather than in bytes. Note that a server may + 24 convert the transfer length of a command from + 25 bytes to blocks or vice versa before storing it + 26 in the "transfer length" field. Such conversion + 27 shall not truncate partial blocks. + + 28 Refer to Appendix A, "Opcode, Flag, and Offset + 29 Definitions," Table A-15, "Write History Entry Flags" for + 30 the values assigned to the defined flags. All other + 31 entry flag bits are reserved, and shall be treated in + 32 accordance with the requirements for reserved fields + 33 described in Section 5.2, "Reserved and Undefined + 34 Fields." + + 35 entry id + + 36 The value assigned by a host class driver to uniquely + 37 identify a "write history entry" among all of the "write + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-137 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 history entries" in a group that are available for its + 2 use. This field is NOT present in the host-visible + 3 "write history entry" pictured above. However, the + 4 server shall internally maintain the association between + 5 the "entry id" specified in the History Log modified + 6 command and its corresponding "write history entry." + + 7 Note that the host may not supply a value of FFFF (hex) + 8 for this field. That value is reserved for use by + 9 servers to mark a "write history entry" as unallocated in + 10 its internal format. Supplying an "entry id" value of + 11 FFFF (hex) will result in unpredictable behavior, + 12 possibly leading to user data corruption. + + 13 Upon receipt of a host class driver issued History Log modified + 14 write type command the server performs the following operations: + + 15 1. Validates the command message fields and checks the + 16 unit state in the normal manner. Note that this + 17 implies having an established communications path in + 18 the case of History Log modified DISK COPY DATA command + 19 (see Section 6.7, "DISK COPY DATA Command"). + + 20 If the field validation or unit state checks fail, the + 21 server rejects the command with the appropriate status. + 22 Otherwise, the server proceeds to Step 2. + + 23 2. Checks the setting of the Reuse Entry modifier to see + 24 whether the command is to be associated with a newly + 25 allocated "write history entry" or with a previously + 26 allocated "write history entry." + + 27 If the the Reuse Entry modifier is clear, the server + 28 proceeds to Step 3 (allocate new). Otherwise, the + 29 server proceeds to Step 4 (reuse previously allocated). + + 30 3. Searches the set of "write history entries" for an + 31 entry that is not currently allocated. + + 32 If an unallocated "write history entry" is not found, + 33 the server shall record this fact in the Allocation + 34 Failure Table as described above and continue normal + 35 processing of the command. The server shall return + 36 FFFF(hex) in the "entry locator" field of the end + 37 message and set the Allocation Failure end flag in the + 38 end message. + + 39 If the server cannot record the failure in the + 40 Allocation Failure Table, it shall reject the command + 41 with a status of Write History Entry Access Error + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-138 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 (subcode "Allocation Failure Table Full"). Due to the + 2 transitory nature of this condition, the host should + 3 reissue the failed write type command as it will likely + 4 succeed on retry. + + 5 If an unallocated "write history entry" is found, the + 6 server performs the following operations: + + 7 a. Copies the contents of the associated command's + 8 command message "unit number" field to the + 9 "unit number" field in that entry. + + 10 b. Preserves the associated command's transfer + 11 length ("byte count" or "logical block count") + 12 in that entry as detailed in the description of + 13 "transfer length" above. + + 14 c. Copies the contents of the associated command's + 15 command message "logical block number" (or + 16 "destination lbn") field to the "starting + 17 logical block number" field within that entry. + + 18 d. Copies the contents of the associated command's + 19 command message "hrn (host reference number)" + 20 field to the "hrn (host reference number)" + 21 field within that entry. + + 22 e. Associates the associated command's command + 23 message "entry id" field with that entry. + + 24 f. Continues normal processing of the command. + + + 25 4. Checks the value contained in the "entry locator" command + 26 message field to ensure that it is within the limits of + 27 the set of "write history entries." + + 28 If the "entry locator" is not within the limits of the + 29 set, the server rejects the command as an "Invalid + 30 Command" ("invalid entry locator" parameter error. See + 31 "Invalid Command" status in Section 5.5, "Status Codes"). + + 32 If the "entry locator" is within the limits of the set, + 33 the server uses the value of the "entry locator" as an + 34 index into the set of "write history entries" and then + 35 proceeds to Step 5. + + 36 5. Compares the "entry id" value associated with the located + 37 "write history entry" with the value contained in the + 38 "entry id" command message field. Note that the value + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MINIMAL MSCP COMMAND SET Page 6-139 + WRITE HISTORY MANAGEMENT Command 11 June 1992 + + + 1 FFFF (hex) is reserved for servers to mark "write history + 2 entries" as unallocated. + + 3 If those values do not match, the server rejects the + 4 command as an "Invalid Command" ("invalid entry id" + 5 parameter error. See "Invalid Command" status in Section + 6 5.5, "Status Codes"). The server may optionally check + 7 that the value supplied in the "entry id" command message + 8 field is not FFFF (hex) and, if it is, reject the command + 9 with this same status. If the command is not rejected + 10 and the values do match, the server proceeds to Step 6. + + 11 6. The server performs the following operations: + + 12 a. Copies the contents of the associated command's + 13 command message "unit number" field to the + 14 "unit number" field in the located entry. + + 15 b. Preserves the associated command's transfer + 16 length ("byte count" or "logical block count") + 17 in that entry as detailed in the description of + 18 "transfer length" above. + + 19 c. Copies the contents of the associated command's + 20 command message "logical block number" (or + 21 "destination lbn") field to the "starting + 22 logical block number" field in the located + 23 entry. + + 24 d. Continues normal processing of the command. + + + 25 After a command associated with a "write history entry" has + 26 aborted, terminated, or completed, the server shall set or clear + 27 the "Error" flag in the "entry flags" field of the "write history + 28 entry" and continue processing. The server clears the "Error" + 29 flag if and only if the associated command completed with a + 30 status of "Success" and sets the "Error" flag in all other cases. + + 31 In addition, prior to returning the end message of a command + 32 associated with a "write history entry" the server shall copy the + 33 "entry id" field of the command message to the "entry id" field + 34 of the end message and copy the "entry locator" field of the + 35 "write history entry" to the "entry locator" field of the end + 36 message. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-1 + 11 June 1992 + + + 1 CHAPTER 7 + + 2 MULTIHOST SUPPORT + + + 3 7.1 Overview + + 4 Multihost Support is an MSCP option that allows simultaneous + 5 communication between multiple host class drivers and an MSCP + 6 server across separate logical connections. + + 7 Various aspects of Multihost Support have already been discussed + 8 in previous chapters. A brief review of the more important + 9 aspects, along with specific section references, follows: + + 10 o Controllers shall maintain each host class driver/MSCP + 11 server connection as a separate communications entity. + 12 See Section 3.3, "Multihost Communication." Controller + 13 state actually reflects the state of each class + 14 driver/MSCP server connection. See Section 4.1, + 15 "Controller States." + + 16 o Controllers shall maintain the state of a unit + 17 ("Unit-Offline," "Unit-Available," and "Unit-Online") + 18 separately for each class driver/MSCP server connection. + 19 See Section 4.3, "Unit States." That section also + 20 contains important details regarding "Exclusive Access" + 21 of a unit (a mandatory feature of Multihost Support). + + 22 o Command execution ordering is performed on a unit basis + 23 rather than a single connection basis. Controllers shall + 24 therefore enforce the Sequential command execution + 25 guarantees across all "Controller-Online" connections. + 26 Controllers are expressly permitted to include all + 27 Non-Sequential commands received from all + 28 "Controller-Online" class drivers, directed to the same + 29 unit, in any optimization algorithm being performed on + 30 the unit. See 4.5, "Command Categories and Execution + 31 Order." + + 32 o Controllers shall maintain and operate according to the + 33 setting of a separate set of host-settable controller + 34 flags for each host class driver/MSCP server connection. + 35 Each class driver is expressly permitted to specify + 36 different settings for the host-settable controller flags + 37 and as a result realize different controller operation. + 38 See Section 5.6, "Controller Flags." + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-2 + Overview 11 June 1992 + + + 1 o Controllers shall maintain only one set of host-settable + 2 unit flags for a particular unit regardless of the number + 3 of host class drivers that have brought the unit into the + 4 "Unit-Online" state. The unit will operate in an + 5 identical manner (according to the setting of the + 6 host-settable unit flags) for each host that has brought + 7 the unit "Unit-Online." Any host may alter the setting + 8 of the host-settable unit flags (for itself and all + 9 others) only via the SET UNIT CHARACTERISTICS command and + 10 only after bringing the unit "Unit-Online." See Section + 11 5.7, "Unit Flags." + + + 12 Controllers that provide Multihost Support shall implement all + 13 the commands described in Chapter 6, "Minimal MSCP Command Set." + 14 Command operation is identical to what is described there, with + 15 the exception of the the ABORT, AVAILABLE, GET COMMAND STATUS, + 16 GET UNIT STATUS, ONLINE, SET CONTROLLER CHARACTERISTICS, and SET + 17 UNIT CHARACTERISTICS commands. The operation of each of those + 18 commands within a Multihost environment is described later in + 19 this chapter. The same major section/subsection format described + 20 in Section 6.1, "[Minimal MSCP Command Set] Overview" is used for + 21 the command descriptions in this chapter. The references + 22 contained in Section 6.1 for message offset definitions and + 23 treatment of invalid and no-operation commands apply to the + 24 Multihost environment as well. In cases where information + 25 contained in the Chapter 6 command descriptions is identical for + 26 both the single host and multihost operation, the Chapter 6 + 27 information is referenced rather than repeating it in this + 28 chapter. In addition, the ACCESS NONVOLATILE MEMORY command, + 29 which shall be supported by all controllers that provide + 30 Multihost Support, is also described. Note that controllers that + 31 do not provide Multihost Support may optionally implement the + 32 ACCESS NONVOLATILE MEMORY command. + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-3 + Multihost ABORT Command 11 June 1992 + + + 1 7.2 Multihost ABORT Command + + 2 Command Category: + + 3 Immediate + + 4 7.2.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | outstanding reference number | + 14 +-------------------------------+ + + 15 unit number + + 16 See Section 6.2.1, "ABORT Command, Command Message + 17 Format." + + 18 outstanding reference number + + 19 The "command reference number" of the command that is to + 20 be aborted. + + 21 As described in Section 5.3, "Command Messages," "command + 22 reference numbers" need not be unique for commands issued + 23 by different class drivers -- i.e., commands issued by + 24 different hosts or commands for different MSCP servers + 25 from the same host. Controllers shall therefore use the + 26 combination of the "outstanding reference number" and the + 27 connection on which the ABORT command was received in + 28 order to uniquely identify commands issued by different + 29 hosts. + + + 30 Allowable modifiers: + + 31 none + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-4 + Multihost ABORT Command 11 June 1992 + + + 1 7.2.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | outstanding reference number | + 11 +-------------------------------+ + + 12 outstanding reference number + + 13 See Section 6.2.2, "ABORT Command, End Message Format." + + + 14 Status Codes: + + 15 Success (subcode "Normal") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-5 + Multihost ABORT Command 11 June 1992 + + + 1 7.2.3 Description + + 2 See Section 6.2.3, "ABORT Command, Description." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-6 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 7.3 Multihost ACCESS NONVOLATILE MEMORY Command + + 2 Command Category: + + 3 Immediate + + 4 7.3.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | reserved | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | reserved | + 14 +-------------------------------+ + 15 | offset | + 16 +---------------+---------------+ + 17 | length | operation | + 18 +---------------+---------------+ + 19 | | + 20 / nonvolatile / + 21 / memory data / + 22 | | + 23 +-------------------------------+ + + 24 offset + + 25 The byte offset within the server's nonvolatile memory at + 26 which to perform the operation. + + 27 operation + + 28 The operation to be performed on the server's nonvolatile + 29 memory: + + 30 Read + + 31 Exchange + + 32 Test and Set + + + 33 See Appendix A, "Opcode, Flag, and Offset Definitions," + 34 Table A-12, "Access Nonvolatile Memory Command Operation + 35 Codes" for the values and mnemonics assigned to those + 36 operations. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-7 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 If any other value is specified the server rejects the + 2 command as an "Invalid Command" ("invalid operation" + 3 protocol error. See "Invalid Command" status in Section + 4 5.5, "Status Codes"). + + 5 length + + 6 The number of bytes of nonvolatile memory data included + 7 in this command message or to be returned in this + 8 command's end message. This should be an even value if + 9 the operation is "Test and Set." If an odd "length" is + 10 specified with the "Test and Set" operation the server + 11 rejects the command as an "Invalid Command" ("invalid + 12 length" parameter error. See "Invalid Command" status in + 13 Section 5.5, "Status Codes"). + + 14 The maximum valid "length" is server dependent. However, + 15 all servers that implement this command shall support + 16 values of "length" in the range 0 through 32. If a + 17 "length" larger than the server's maximum is specified + 18 the server rejects the command as an "Invalid Command" + 19 ("invalid length" parameter error. See "Invalid Command" + 20 status in Section 5.5, "Status Codes"). + + 21 nonvolatile memory data + + 22 "Length" bytes of data to be used in the operation. + + + 23 Allowable modifiers: + + 24 none + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-8 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 7.3.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| reserved | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | nonvolatile memory size | + 11 +-------------------------------+ + 12 | offset | + 13 +---------------+---------------+ + 14 | length | operation | + 15 +---------------+---------------+ + 16 | | + 17 / nonvolatile / + 18 / memory data / + 19 | | + 20 +-------------------------------+ + + 21 nonvolatile memory size + + 22 The number of bytes of nonvolatile memory implemented by + 23 the server. + + 24 offset + 25 operation + 26 length + + 27 Copied without alteration from the command message. + + 28 nonvolatile memory data + + 29 "Length" bytes of data returned by the operation. + + 30 Status Codes: + + 31 Success (subcode "Normal") + 32 Invalid Command (subcode "Invalid Length") + 33 Invalid Command (subcode "Invalid Operation") + 34 Compare Error + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-9 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 7.3.3 Description + + 2 The ACCESS NONVOLATILE MEMORY command provides class driver + 3 access to a nonvolatile memory region within the controller or + 4 server. Hosts may use this memory to store arbitrary parameters + 5 or information. MSCP servers merely store the data; they do not + 6 use it in any way. + + 7 The presence and size of a nonvolatile memory is server + 8 dependent. However, whenever a server provides a nonvolatile + 9 memory, the memory must be at least 16 bytes long. Servers that + 10 provide Multihost Support shall always implement a 16 byte or + 11 larger nonvolatile memory. Single host servers may optionally + 12 implement a nonvolatile memory. If a single host server does not + 13 implement a nonvolatile memory, then it need not implement this + 14 command. In that case the controller shall reject this command's + 15 opcode as an "Invalid Command" ("invalid opcode" protocol error. + 16 See "Invalid Command" status in Section 5.5, "Status Codes"). + + 17 The nonvolatile memory is addressed at offsets 0 through N-1, + 18 where N is the size of the server's nonvolatile memory in bytes. + 19 Class drivers may access offsets N and higher, even though they + 20 are not included in the implemented memory. Attempts to write + 21 offsets N and higher are ignored and always succeed. Attempts to + 22 read offsets N and higher return zero. + + 23 Three operations are provided for accessing the nonvolatile + 24 memory. The detailed semantics of these operations are as + 25 follows: + + 26 Read + + 27 The server reads "length" bytes beginning at offset + 28 "offset" and returns them as the "nonvolatile memory + 29 data" in the end message. The "nonvolatile memory + 30 data" in the command message is ignored. + + 31 Exchange + + 32 The server reads "length" bytes beginning at offset + 33 "offset" and returns them as the "nonvolatile memory + 34 data" in the end message. Next, the server writes + 35 "length" bytes beginning at offset "offset" with the + 36 "nonvolatile memory data" from the command message. + + 37 This operation exchanges the nonvolatile memory data + 38 with the memory contents stored in the server. The + 39 command message provides the new memory contents, + 40 while the old memory contents are returned in the end + 41 message. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-10 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 Test and Set + + 2 The server reads "length"/2 bytes beginning at offset + 3 "offset" and returns them as the first half of the + 4 "nonvolatile memory data" in the end message. Next, + 5 the server compares these "length"/2 bytes against + 6 the first half of the "nonvolatile memory data" from + 7 the command message. If they are different, the + 8 server returns a "Compare Error" status code. If + 9 they are the same, the server writes "length"/2 bytes + 10 beginning at offset "offset" with the second half of + 11 the "nonvolatile memory data" from the command + 12 message and returns a "Success" status code. In both + 13 cases, the second half of the "nonvolatile memory + 14 data" in the end message is copied without alteration + 15 from the command message. + + 16 This operation provides an atomic test-and-set + 17 operation. The "nonvolatile memory data" is divided + 18 into equal length halves. The first half is compared + 19 against the values stored in the server to determine + 20 the "Success" or "Compare Error" status of the + 21 command. If comparison shows both values are equal, + 22 then the second half of "nonvolatile memory data" is + 23 stored into the nonvolatile memory. In either case, + 24 the values that were stored in the server prior to + 25 this operation are returned in the first half of the + 26 end message's "nonvolatile memory data." + + 27 For all three operations, a "length" of zero is legal. It is + 28 treated as a no-operation and always succeeds. This is primarily + 29 useful as a means for class drivers to determine the size of the + 30 server's nonvolatile memory. + + 31 The server shall implement all operations requested by this + 32 command as atomic operations. If several ACCESS NONVOLATILE + 33 MEMORY commands are outstanding simultaneously, the server may + 34 perform them in any sequence, but shall process only one of them + 35 at a time. + + 36 The server shall remember the contents of its nonvolatile memory + 37 across power failures, reinitializations, losses of context, and + 38 other normal failures. However, the following events are not + 39 normal and may result in loss of the nonvolatile memory contents: + + 40 1. Field Service attention or other maintenance actions. If + 41 the component containing the nonvolatile memory is + 42 replaced, its contents may become undefined. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-11 + Multihost ACCESS NONVOLATILE MEMORY Command 11 June 1992 + + + 1 2. A power failure, reinitialization, or other loss of + 2 context while the nonvolatile memory is being modified. + 3 The offset being modified, plus some controller dependent + 4 number of adjacent locations, may become undefined. + + + 5 The nonvolatile memory should contain all zeros in newly shipped + 6 servers. + + 7 One characteristic of commonly available nonvolatile memories is + 8 that they can only be reliably written a limited number of times. + 9 Therefore class drivers may not treat the nonvolatile memory as + 10 they would standard RAM or disk memory. Class drivers should + 11 design their algorithms for using the nonvolatile memory to + 12 ensure that they do not alter it more often than an average of + 13 once per day. Short periods of frequent updates are acceptable, + 14 provided they are balanced by long periods of few updates. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-12 + Multihost AVAILABLE Command 11 June 1992 + + + 1 7.4 Multihost AVAILABLE Command + + 2 Command Category: + + 3 Sequential + + 4 7.4.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable modifiers: + + 14 All Class Drivers + + 15 If the "All Class Drivers" modifier is set and the unit + 16 is "Unit-Online" to the issuing host as well as one or + 17 more other hosts, the unit becomes "Unit-Available" to + 18 all hosts. + + 19 If the "All Class Drivers" modifier is set and the unit + 20 is "Unit-Online" only to the issuing host, the unit + 21 becomes "Unit-Available" to the issuing host. + + 22 If the "All Class Drivers" modifier is clear and the unit + 23 is "Unit-Online" to the issuing host as well as one or + 24 more other hosts, the unit becomes "Unit-Available" to + 25 the issuing host only. The state of the unit relative to + 26 all other hosts is unaffected. + + 27 If the unit is "Unit-Offline" or already "Unit-Available" + 28 to the issuing host, the setting of the "All Class + 29 Drivers" modifier is ignored. + + 30 Clear Serious Exception (ignored for disk class devices) + + 31 Exclusive Access + + 32 If the "Exclusive Access" modifier is set and the unit is + 33 "Unit-Online" to the issuing host and is not + 34 "Unit-Online" to any other host, the unit becomes + 35 "Unit-Available" to and under the "Exclusive Access" of + 36 the issuing host. This specifically includes the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-13 + Multihost AVAILABLE Command 11 June 1992 + + + 1 possibility that the unit became "Unit-Available" to the + 2 issuing host as well as to other hosts as a result of the + 3 "All Class Drivers" modifier also being set in the + 4 command. Note that controllers shall service the "All + 5 Class Drivers" modifier before servicing the "Exclusive + 6 Access" modifier. + + 7 If the "Exclusive Access" modifier is set and the unit is + 8 "Unit-Available" to the issuing host and is not + 9 "Unit-Online" to any other host or the unit is "Unit + 10 Offline (substate 'No Media Loaded')", the issuing host + 11 is granted "Exclusive Access" of the unit. The unit's + 12 state is otherwise unchanged. + + 13 If the "Exclusive Access" modifier is set and the unit is + 14 "Unit-Online" to and under the "Exclusive Access" of the + 15 issuing host, the unit becomes "Unit-Available" to the + 16 issuing host. "Exclusive Access" of the unit is, + 17 however, retained. + + 18 If the "Exclusive Access" modifier is clear and the unit + 19 is "Unit-Online" to and under the "Exclusive Access" of + 20 the issuing host, the unit becomes "Unit-Available" to + 21 the issuing host and "Exclusive Access" of the unit is + 22 released. + + 23 If the "Exclusive Access" modifier is clear and the unit + 24 is "Unit-Available" or "Unit Offline (substate 'No Media + 25 Loaded')" to and also under the "Exclusive Access" of the + 26 issuing host, "Exclusive Access" to the unit is released. + 27 The unit's state is otherwise unchanged. + + 28 If the unit is "Unit-Offline" to the issuing host for any + 29 reason other than "No Media Loaded," the "Exclusive + 30 Access" modifier is ignored. + + 31 Note that granting "Exclusive Access" of a unit to a host + 32 implicitly causes the unit to become "Unit-Offline + 33 (substate 'Exclusive Use')" to all other hosts connected + 34 via this controller and "Unit-Offline (substate 'Online + 35 To Another Controller')" to hosts which may potentially + 36 have access to the unit via another controller. + 37 Conversely, the release of a unit from the "Exclusive + 38 Access" of a host implicitly causes the unit to become + 39 "Unit-Available" to all other hosts. + + 40 Note also that controllers ignore duplicate unit number + 41 conditions when a host retains "Exclusive Access" of a + 42 unit. That is, if the unit is "Unit-Online" to and under + 43 the "Exclusive Access" of the issuing host and in + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-14 + Multihost AVAILABLE Command 11 June 1992 + + + 1 addition had a duplicate unit number prior to the receipt + 2 of an AVAILABLE command with the "Exclusive Access" + 3 modifier set, the unit will not be become "Unit-Offline" + 4 nor will it be spun-down. Instead the unit becomes + 5 "Unit-Available" to and "Exclusive Access" is retained by + 6 the issuing host. + + 7 | Note also that "Exclusive Access" is released if any of + 8 | the following events occur: + + 9 | 1. The controller loses or breaks the connection to + 10 | the host that has "Exclusive Access" of the + 11 | drive. + + 12 | 2. The drive becomes unknown to the controller + 13 | (e.g., port button disabled.) + + 14 | 3. The drive becomes inoperative, "Unit-Offline, + 15 | Inoperative." + + 16 | 4. The controller is 'rebooted', by itself, by an + 17 | operator, or by any host. + + + 18 Spin-down + + 19 Requests that the disk stop spinning and that the heads + 20 be unloaded. Note that the command completes as soon as + 21 the spin-down has been initiated, rather than waiting for + 22 the disk to stop spinning. The spin-down will not be + 23 initiated if either or both of the following conditions + 24 exist: + + 25 1. The unit belongs to a multiunit drive and shares + 26 a spindle with some other unit that is + 27 "Unit-Online" (See Section 4.16.2, "Multiunit + 28 Drives and Formatters"). + + 29 2. The unit is still "Unit-Online" to one or more + 30 other hosts and the "All Class Drivers" modifier + 31 is clear. + + 32 Note that a spin-down request is honored and performed + 33 (unless prohibited as just described) when the unit is + 34 "Unit-Available" to the issuing host as well as when it + 35 is "Unit-Online" to the issuing host. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-15 + Multihost AVAILABLE Command 11 June 1992 + + + 1 7.4.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success (subcode "Normal") + + 12 This status code (i.e., subcode zero) is returned under + 13 the following conditions: + + 14 1. The unit changes from "Unit-Online" to + 15 "Unit-Available" and the action or actions (if + 16 any) requested by the setting of the "All Class + 17 Drivers," "Exclusive Access," and "Spin-down" + 18 modifiers were successfully completed. + + 19 2. The unit was already "Unit-Available" to the + 20 issuing host and the action or actions (if any) + 21 requested by the setting of the "Exclusive + 22 Access" and "Spin-down" modifiers were + 23 successfully completed. + + + 24 Separate bits within the "Success" status subcode field + 25 are used to indicate that the actions requested by the + 26 setting of the "All Class Drivers" and "Spin-down" + 27 modifiers could not be performed but the command was + 28 otherwise successful. See the "Spin-down Ignored" and + 29 "Still Online" subcode bit flag descriptions below. + + 30 Another "Success" status subcode bit is used to indicate + 31 that the command was successful and that the unit will + 32 remain connected to the controller (see the "Still + 33 Connected" bit flag description). + + 34 Note that if the unit was "Unit-Online" (and not under + 35 the "Exclusive Access" of the issuing host) but had a + 36 duplicate unit number prior to the AVAILABLE command + 37 being issued, the controller may optionally return a + 38 status code of: "Success (subcode 'Normal')" or "Success + 39 (subcode 'Duplicate Unit Number')" or "Unit-Offline + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-16 + Multihost AVAILABLE Command 11 June 1992 + + + 1 (subcode 'Duplicate Unit Number')." + + 2 Success (subcode "Spin-down Ignored") + + 3 The "Spin-down Ignored" subcode bit flag is set if the + 4 unit could not be spun-down due to one of the following + 5 conditions: + + 6 1. One or more other units with which this unit + 7 shares a spindle is still "Unit-Online" (see + 8 Section 4.16.2, "Multiunit Drives and + 9 Formatters," for an explanation of shared + 10 spindles). + + 11 2. The unit is still "Unit-Online" to one or more + 12 other hosts. + + + 13 Success (subcode "Still Connected") + + 14 The "Still Connected" subcode bit flag is set if the unit + 15 may potentially be accessed via another controller and + 16 one or more other units with which this unit shares an + 17 access path is still "Unit-Online," preventing this unit + 18 from being accessed via that other controller (if any). + 19 See Section 4.16.1, "Multiaccess Drives," for a + 20 discussion of access paths. + + 21 The "Still Connected" subcode bit flag will always be set + 22 if the "Spin-down Ignored" subcode bit flag is set. + + 23 Success (subcode "Still Online") + + 24 The "Still Online" subcode bit flag is set if the unit is + 25 still "Unit-Online" to one or more other hosts via this + 26 controller. If the "Exclusive Access" modifier was set + 27 this status code implies that "Exclusive Access" of the + 28 unit was denied. + + 29 The "Still Online" subcode bit flag will always be set if + 30 the "Spin-down Ignored" subcode bit flag is set. + + 31 Command Aborted + + 32 The command has been rejected and the unit's state has + 33 not changed. If the unit was "Unit-Online" prior to + 34 issuing this command, then the unit is still + 35 "Unit-Online" and it is still spinning. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-17 + Multihost AVAILABLE Command 11 June 1992 + + + 1 Unit-Available (subcode "Already In Use") + + 2 The unit was "Unit-Available" to the issuing host and + 3 "Exclusive Access" of the unit was denied because it is + 4 currently "Unit-Online" to another host. + + 5 Unit-Offline + + 6 All subcodes may be returned. Note that "Unit-Offline + 7 (subcode 'No Media Loaded')" implies "Success (subcode + 8 'Normal')" when "Exclusive Access" of the unit was + 9 granted while the unit was "Unit-Offline (substate 'No + 10 Media Loaded')." Note also that in cases where the unit + 11 was "Unit-Online" (and not under the "Exclusive Access" + 12 of the issuing host) but had a duplicate unit number + 13 prior to the AVAILABLE command being issued, the + 14 controller may, at its option, return the "Unit-Offline + 15 (subcode 'Duplicate Unit Number') status code or two + 16 forms of the "Success" status code (see Success (subcode + 17 "Normal") above). + + 18 Unit Offline (subcode "Exclusive Use") + + 19 The unit is currently under the "Exclusive Access" of + 20 some other host connected via this controller. + + 21 Controller Error + 22 Drive Error + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-18 + Multihost AVAILABLE Command 11 June 1992 + + + 1 7.4.3 Description + + 2 The operation of the AVAILABLE command depends on the settings of + 3 the "All Class Drivers," "Exclusive Access," and "Spin-down" + 4 modifiers as well as the state of the specified unit relative to + 5 the issuing host and all other "Controller-Online" hosts (class + 6 drivers) as described in the preceding sections. All + 7 combinations of those modifiers are permissible. + + 8 Note that issuing an AVAILABLE command with the "All Class + 9 Drivers," "Exclusive Access," and "Spin-down" modifiers clear to + 10 a unit that is already "Unit-Available" to and not under the + 11 "Exclusive Access" of the issuing host is essentially a + 12 sequential no-operation. + + 13 Upon completion of the requested AVAILABLE command operation(s) + 14 an AVAILABLE attention message is sent by all controllers to + 15 which the specified unit is connected under the following + 16 conditions (provided the "Spin-down" modifier was clear): + + 17 1. The unit's state changes from "Unit-Online" to + 18 "Unit-Available" relative to the the issuing host as + 19 well as all other "Controller-Online" hosts and the + 20 issuing host was not granted "Exclusive Access" of the + 21 unit in the process. + + 22 2. The unit's state changes from "Unit-Online" to + 23 "Unit-Available" relative to the issuing class driver + 24 and "Exclusive Access" of the unit was also released. + + 25 3. The unit was already "Unit-Available" to the issuing + 26 host and "Exclusive Access" of the unit was released. + + 27 In all the cases just described the controller to which the + 28 AVAILABLE command was sent need not send an AVAILABLE attention + 29 message. + + 30 If the "Spin-down" modifier was set, AVAILABLE attention messages + 31 will be suppressed for the specified unit both for this + 32 controller and for any other controllers to which the unit may be + 33 connected, regardless of whether the spin-down was actually + 34 initiated. See Section 4.3, "Unit States" for a discussion of + 35 suppressing AVAILABLE attention messages. + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-19 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 7.5 Multihost GET COMMAND STATUS Command + + 2 Command Category: + + 3 Immediate + + 4 7.5.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | outstanding reference number | + 14 +-------------------------------+ + + 15 unit number + + 16 See Section 6.11.1, "GET COMMAND STATUS Command, Command + 17 Message Format." + + 18 outstanding reference number + + 19 The "command reference number" of the command whose + 20 status is to be obtained. + + 21 As described in Section 5.3, "Command Messages," "command + 22 reference numbers" need not be unique for commands issued + 23 by different class drivers -- i.e., commands issued by + 24 different hosts or commands for different MSCP servers + 25 from the same host. Controllers shall therefore use the + 26 combination of the "outstanding reference number" and the + 27 connection on which the GET COMMAND STATUS command was + 28 received in order to uniquely identify commands issued by + 29 different hosts. + + + 30 Allowable modifiers: + + 31 none + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-20 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 7.5.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | outstanding reference number | + 11 +---------------+---------------+ + 12 | command status | + 13 +---------------+---------------+ + + 14 outstanding reference number + + 15 See Section 6.11.2, "GET COMMAND STATUS Command, End + 16 Message Format." + + 17 command status + + 18 The amount of work remaining to be done to complete the + 19 command, expressed as an unsigned integer. This field is + 20 zero if the command is not known to the controller, such + 21 as when the command has already completed or was aborted. + 22 The controller may also return zero in this field if it + 23 can guarantee that the command will complete within the + 24 controller timeout interval. The controller shall never + 25 return a value of all ones (2**32-1) in this field, as + 26 that value is used to initialize the host's command + 27 timeout algorithm (see Section 4.10, "Command Timeouts"). + + 28 Each "Controller-Online" class driver has a different + 29 concept of which command is the oldest outstanding + 30 command. As mentioned earlier the command for which + 31 status is being obtained is uniquely qualified by the + 32 "outstanding reference number" and the connection on + 33 which the command GET COMMAND STATUS was received. + 34 Controllers shall therefore return a status value that + 35 reflects the "doneness" of the specified command relative + 36 to the issuing host. + + 37 An example of how a controller might produce status + 38 values that meet all the requirements defined in the + 39 preceding paragraphs follows. Note that the algorithm + 40 described in the example is driven solely by the host's + 41 issuance of the GET COMMAND STATUS command, not an + 42 internal controller timer. For the algorithm to function + 43 properly the host must not issue a GET COMMAND STATUS + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-21 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 command for a particular command more frequently than the + 2 value returned by the controller in the "controller + 3 timeout" field of the SET CONTROLLER CHARACTERISTICS + 4 command's end message. + + 5 The controller maintains two distinctly different + 6 command status values in the context of each command + 7 received by the controller: + + 8 o Controller-Host Command Status (CHCS) + + 9 A 32-bit unsigned integer value which is + 10 the actual "Command Status" value + 11 returned to the host. The controller + 12 initializes CHCS to a reasonable maximum + 13 value (e.g., 2**32-2). + + 14 o Command-Specific Command Status (CSCS) + + 15 An unsigned integer value consisting of + 16 two subfields: the Requested Command's + 17 Position (RCP) and the Requested + 18 Command's Status (RCS). RCP is the high + 19 order field. (The size of the CSCS as + 20 well as the RCP and RCS subfields is + 21 controller dependent, as discussed + 22 later.) The controller initializes the + 23 CSCS to its maximum value (all bits set). + + 24 Upon receipt of a GET COMMAND STATUS command for a + 25 particular command the controller constructs a + 26 current copy of CSCS according to the requested + 27 command's current execution state as follows: + + 28 o Unknown (e.g., no longer outstanding) + + 29 RCP and RCS are both set to zero. + + 30 o Already In-progress + + 31 RCP is set to zero, implying that the + 32 requested command is at execution + 33 position 0. + + 34 RCS is set to an encoding of the amount + 35 of work (including possible retries, + 36 etc.) remaining before the requested + 37 command completes, or zero if the + 38 controller expects the command to finish + 39 within the "controller timeout" interval. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-22 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 o Sequential Command Waiting For In-progress + 2 Commands to Complete + + 3 RCP is set to one, implying that the + 4 requested command will be the next + 5 command initiated. + + 6 RCS is set to an encoding of the amount + 7 of work remaining on all in-progress + 8 commands. + + 9 o Non-Sequential Command Waiting For An + 10 In-progress Sequential Command To Complete + + 11 RCP is set equal to the number of + 12 commands which are scheduled for + 13 initiation ahead of the requested + 14 command, plus one to account for the + 15 in-progress Sequential command. + + 16 RCS is set equal to the in-progress + 17 Sequential command's RCS value. + + 18 o Sequential or Non-Sequential Command Waiting + 19 For Other Reasons (e.g., a controller + 20 resource to become available) + + 21 RCP is set equal to the number of + 22 commands that are scheduled for + 23 initiation ahead of the requested + 24 command, plus one to account for the + 25 requested command. + + 26 RCS is set to an encoding of the amount + 27 of work remaining on all in-progress + 28 commands. + + 29 The controller then tests the value of the + 30 constructed CSCS. If the constructed CSCS is zero + 31 due to the command being unknown, the controller + 32 zeros the "command status" field of the GET COMMAND + 33 STATUS command's end message, and completes the GET + 34 COMMAND STATUS command. If the constructed CSCS is + 35 zero and the command is known, the command's CHCS is + 36 set equal to zero. If the constructed CSCS is + 37 nonzero, the controller compares the constructed CSCS + 38 to the command's CSCS stored previously. If the + 39 constructed CSCS is less than the command's CSCS, the + 40 controller decrements the command's CHCS by one. If + 41 the constructed CSCS is greater than or equal to the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-23 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 command's CSCS, the controller leaves the command's + 2 CHCS at the same value. Then the controller stores + 3 the constructed CSCS in the requested command's + 4 context, obtains the current value of the CHCS from + 5 the requested command's context and stores it in the + 6 "command status" field of the GET COMMAND STATUS + 7 command's end message, and completes the GET COMMAND + 8 STATUS command. + + 9 As mentioned above the size of CSCS is controller + 10 dependent. CSCS size actually depends on the maximum + 11 values of the RCP and RCS subfields the controller + 12 can reasonably expect to encounter, determined as + 13 follows: + + 14 o RCP + + 15 The maximum number of command messages + 16 the controller is capable of queuing at + 17 any one time. + + 18 o RCS + + 19 The maximum amount of time the longest + 20 command execution (including error + 21 recovery retries) can possibly consume, + 22 expressed as the number of ticks starting + 23 from the initiation of the longest + 24 command execution through its completion. + 25 A tick is the amount of time it takes to + 26 complete the longest single operation of + 27 all the individual operations which are + 28 used to execute commands within the + 29 controller. The "controller timeout" + 30 interval is equal to one tick. + + + + 31 Status Codes: + + 32 Success (subcode "Normal") + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-24 + Multihost GET COMMAND STATUS Command 11 June 1992 + + + 1 7.5.3 Description + + 2 The GET COMMAND STATUS command is used to monitor the progress of + 3 a command towards completion. The command status measures the + 4 "doneness" of the command. The value returned in the command + 5 status field is guaranteed to not increase over time. + 6 Furthermore, the command status of an MSCP server's oldest + 7 outstanding command relative to the issuing host is guaranteed to + 8 decrease within the controller timeout interval. This last + 9 feature may be used by a host class driver to detect an insane or + 10 malfunctioning controller. See Section 4.10, "Command Timeouts," + 11 for more details. + + 12 The GET COMMAND STATUS command always succeeds. If the command + 13 referenced by the "outstanding reference number" is not known to + 14 the MSCP server or has been aborted, then the MSCP server should + 15 return zero for its command status. The MSCP server may also + 16 return zero as the command status of any command that will always + 17 complete within the controller timeout interval. The MSCP server + 18 always returns the "Normal" status code in the GET COMMAND STATUS + 19 command's end message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-25 + Multihost GET UNIT STATUS Command 11 June 1992 + + + 1 7.6 Multihost GET UNIT STATUS Command + + 2 Command Category: + + 3 Immediate + + 4 7.6.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable modifiers: + + 14 Clear Serious Exception (ignored for disk class devices) + + 15 Next Unit + + 16 See Section 6.12.1, "GET UNIT STATUS Command, Command + 17 Message Format." + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-26 + Multihost GET UNIT STATUS Command 11 June 1992 + + + 1 7.6.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | group size | track size | + 23 +-------+-------+---------------+ + 24 |uhvrsn | usvrsn| cylinder size | + 25 +-------+-------+---------------+ + 26 |copies | RBNs | RCT size | + 27 +-------+-------+---------------+ + + 28 status + + 29 The validity of the unit characteristics varies with the + 30 unit's state implied by the contents of this field. See + 31 the Status Codes listed later in this section and Section + 32 6.12.3, "GET UNIT STATUS Command, Description" for + 33 complete details. + + 34 multiunit code + 35 unit identifier + 36 media type identifier + 37 track size + 38 group size + 39 cylinder size + 40 usvrsn + 41 uhvrsn + 42 RCT size + 43 RBNs + 44 copies + + 45 See Section 6.12.2, "GET UNIT STATUS Command, End Message + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-27 + Multihost GET UNIT STATUS Command 11 June 1992 + + + 1 Format." + + 2 unit flags + + 3 See Section 5.7, "Unit Flags." + + 4 Exclusive Access + + 5 The Exclusive Access unit flag is non-host-settable; + 6 it is set when the unit is under the "Exclusive + 7 Access" of this or some other host via this + 8 controller and clear when it is not. + 9 spndles + + 10 The number minus one of spindles or spindle "groups" in + 11 the unit. The value of zero indicates one spindle. See + 12 Section 4.12, "Disk Geometry and Format." + + + 13 Status Codes: + + 14 Unit-Offline + + 15 All subcodes may be returned. Note that "Unit-Offline + 16 (subcode 'Exclusive Use')" indicates that the unit is + 17 under the "Exclusive Access" of some other host connected + 18 via this controller. All characteristic fields and unit + 19 flags are valid when that status is returned. + + 20 Success (subcode "Normal") + 21 Success (subcode "Duplicate Unit Number") + 22 Unit-Available + 23 Controller Error + 24 Drive Error + + 25 See Section 6.12.2, "GET UNIT STATUS Command, End Message + 26 Format." + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-28 + Multihost GET UNIT STATUS Command 11 June 1992 + + + 1 7.6.3 Description + + 2 See Section 6.12.3, "GET UNIT STATUS Command, Description." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-29 + Multihost ONLINE Command 11 June 1992 + + + 1 7.7 Multihost ONLINE Command + + 2 Command categories: + + 3 Sequential + + 4 7.7.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | reserved | + 16 +-------------------------------+ + 17 | | + 18 +--- reserved ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +-------------------------------+ + 23 | reserved | + 24 +-------------------------------+ + + 25 | unit flags + + 26 Host-settable unit flags. See Section 5.7, "Unit + 27 Flags." + + 28 If the unit is already "Unit-Online" to any host (class + 29 driver), then the class driver shall specify the same + 30 values for controller supported host-settable unit flags + 31 as are currently in effect on the unit. The controller + 32 shall check that the flag values are the same. If they + 33 are different then it shall reject the command as an + 34 "Invalid Command" ("invalid unit flags" parameter error. + 35 See "Invalid Command" status in Section 5.5, "Status + 36 Codes"). + + 37 device dependent parameters + + 38 See Section 6.13.1, "ONLINE Command, Command Message + 39 Format." + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-30 + Multihost ONLINE Command 11 June 1992 + + + 1 Note that controllers may either maintain the "device + 2 dependent parameters" separately for each + 3 "Controller-Online" class driver or singularly for all + 4 "Controller-Online" class drivers, at their option. In + 5 the latter case the value expressed in this field by the + 6 host that issued the most recent ONLINE or SET UNIT + 7 CHARACTERISTICS command dictates which device dependent + 8 parameters are in effect. + + + + 9 Allowable modifiers: + + 10 Allow Self Destruction + 11 Clear Serious Exception (ignored for disk class devices) + 12 Ignore Media Format Error + + 13 See Section 6.13.1, "ONLINE Command, Command Message + 14 Format." + + 15 The server may, at its option, reject the command as an + 16 Invalid Command (subcode "Invalid Modifiers") if the unit + 17 is already "Unit-Online" to another host. + + 18 Enable Set Write Protect + + 19 See "unit flags" field description above and Section + 20 6.13.1, "ONLINE Command, Command Message Format." + + 21 Exclusive Access + + 22 If the "Exclusive Access" modifier is set and the unit is + 23 "Unit-Available" to the issuing host and is not + 24 "Unit-Online" to nor under the "Exclusive Access" of any + 25 other host, the unit becomes "Unit-Online" to and under + 26 the "Exclusive Access" of the issuing host. + + 27 If the "Exclusive Access" modifier is set and the unit is + 28 "Unit-Available" to and under the "Exclusive Access" of + 29 the issuing host, the unit becomes "Unit-Online" to the + 30 issuing host. "Exclusive Access" of the unit is + 31 retained. + + 32 If the "Exclusive Access" modifier is set and the unit is + 33 already "Unit-Online" to and not under the "Exclusive + 34 Access" of the issuing host and is not "Unit-Online" to + 35 any other host, the issuing host is granted "Exclusive + 36 Access" of the unit. The unit's state relative to the + 37 issuing host is otherwise unchanged. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-31 + Multihost ONLINE Command 11 June 1992 + + + 1 If the "Exclusive Access" modifier is set and the unit is + 2 "Unit-Online" to and under the "Exclusive Access" of the + 3 issuing host, the issuing host retains "Exclusive Access" + 4 of the unit. The unit's state relative to the issuing + 5 host is otherwise unchanged. + + 6 If the "Exclusive Access" modifier is clear and the unit + 7 is "Unit-Available" to and under the "Exclusive Access" + 8 of the issuing host, the unit becomes "Unit-Online" to + 9 the issuing host and "Exclusive Access" of the unit is + 10 released. + + 11 If the "Exclusive Access" modifier is clear and the unit + 12 is "Unit-Online" to and under the "Exclusive Access" of + 13 the issuing host, "Exclusive Access" of the unit is + 14 released. The unit's state relative to the issuing host + 15 is otherwise unchanged. + + 16 If the unit is "Unit-Offline" to the issuing host the + 17 setting of the "Exclusive Access" modifier is ignored. + + 18 Note that granting "Exclusive Access" of a unit to a host + 19 implicitly causes the unit to become "Unit-Offline + 20 (substate 'Exclusive Use')" to all other hosts connected + 21 via this controller and "Unit-Offline (substate 'Online + 22 To Another Controller')" to hosts that may potentially + 23 have access to the unit via another controller. + 24 Conversely, the release of a unit from the "Exclusive + 25 Access" of a host implicitly causes the unit to become + 26 "Unit-Available" to all other hosts. + + 27 | Note also that "Exclusive Access" is released if any of + 28 | the following events occur: + + 29 | 1. The controller loses or breaks the connection to + 30 | the host that has "Exclusive Access" of the + 31 | drive. + + 32 | 2. The drive becomes unknown to the controller + 33 | (e.g., port button disabled.) + + 34 | 3. The drive becomes inoperative, "Unit-Offline, + 35 | Inoperative." + + 36 | 4. The controller is 'rebooted', by itself, by an + 37 | operator, or by any host. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-32 + Multihost ONLINE Command 11 June 1992 + + + 1 7.7.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | unit size | + 23 +-------------------------------+ + 24 | volume serial number | + 25 +-------------------------------+ + + 26 | status + + 27 The validity of the unit characteristics varies with the + 28 unit's state implied by the contents of this field. See + 29 Status Codes listed below and Section 6.17.3, "SET UNIT + 30 CHARACTERISTICS Command, Description" for complete + 31 details. + + 32 unit flags + + 33 See Section 5.7, "Unit Flags." + + 34 Exclusive Access + + 35 The Exclusive Access unit flag is non-host-settable; + 36 it is set when the unit is under the "Exclusive + 37 Access" of this or some other host via this + 38 controller and clear when it is not. + + 39 All other fields of the ONLINE command's end message are + 40 identical to the SET UNIT CHARACTERISTICS command's end + 41 message. Refer to Section 7.9.2, "Multihost SET UNIT + 42 CHARACTERISTICS Command, End Message Format" for a + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-33 + Multihost ONLINE Command 11 June 1992 + + + 1 description of the fields. + + + 2 Status Codes: + + 3 Success (subcode "Normal") + + 4 The unit has become "Unit-Online" to the issuing host. + 5 The unit may have already been "Unit-Online" to one or + 6 more other hosts and, for those unit flags that are both + 7 host-settable and supported by the controller, the class + 8 driver specified values identical to those currently in + 9 effect on the unit. + + 10 As described earlier (see "Exclusive Access" modifier in + 11 the preceding section), "Exclusive Access" of the unit by + 12 the issuing host may have been granted, retained, or + 13 released depending on the setting of the "Exclusive + 14 Access" modifier and whether or not the unit was already + 15 under the "Exclusive Access" of the issuing host. + + 16 The unit's state relative to all other hosts remains + 17 unchanged unless "Exclusive Access" of the unit was + 18 granted or released. See "Exclusive Access" modifier in + 19 the preceding section. + + 20 Success (subcode "Already Online") + + 21 The "Already Online" subcode bit flag is set only if the + 22 unit was already "Unit-Online" to the issuing host and, + 23 for those unit flags that are both host-settable and + 24 supported by the controller, the class driver specified + 25 values identical to those currently in effect on the + 26 unit. The unit remains "Unit-Online" to the issuing + 27 host. + + 28 As described earlier (see "Exclusive Access" modifier in + 29 the preceding section) "Exclusive Access" of the unit by + 30 the issuing host may have been granted, retained, or + 31 released depending on the setting of the "Exclusive + 32 Access" modifier and whether or not the unit was already + 33 under the "Exclusive Access" of the issuing host. + + 34 The unit's state relative to all other hosts remains + 35 unchanged, unless "Exclusive Access" of the unit was + 36 granted or released. See "Exclusive Access" modifier in + 37 the preceding section. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-34 + Multihost ONLINE Command 11 June 1992 + + + 1 Invalid Command (subcode "Invalid Unit Flags") + + 2 The unit was already "Unit-Online" to one or more hosts + 3 and, for those unit flags that are both host-settable and + 4 supported by the controller, the class driver specified + 5 different values from those currently in effect on the + 6 unit. The unit state relative to the issuing host + 7 remains unchanged. The host-settable unit flags are not + 8 changed, and the end message returns their current + 9 settings. + + 10 As described earlier (see "Exclusive Access" modifier in + 11 the preceding section) "Exclusive Access" of the unit by + 12 the issuing host may have been denied, granted, retained, + 13 or released depending on the setting of the "Exclusive + 14 Access" modifier, whether or not the unit was already + 15 under the "Exclusive Access" of the issuing host, and the + 16 state of the unit relative to all other hosts. Note that + 17 controllers shall service the "Exclusive Access" modifier + 18 before checking for equality of the host-settable unit + 19 flags. + + 20 The unit's state relative to all other hosts remains + 21 unchanged, unless "Exclusive Access" of the unit was + 22 granted or released. See "Exclusive Access" modifier in + 23 the preceding section. + + 24 Unit-Offline + + 25 All subcodes may be returned. Note that "Unit-Offline + 26 (subcode 'Exclusive Use')" status indicates that the unit + 27 is under the "Exclusive Access" of another host via this + 28 controller. All characteristic fields and unit flags are + 29 valid when that status is returned. Also note that some + 30 causes of a unit being "Unit-Offline" may be overridden + 31 (suppressed) by the "Allow Self Destruction" command + 32 modifier. + + 33 Unit-Available (subcode "Already In Use") + + 34 The unit was "Unit-Available" to the the issuing host and + 35 "Exclusive Access" of the unit was denied because it is + 36 currently "Unit-Online" to another host via this + 37 controller. All characteristic fields and unit flags are + 38 valid. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-35 + Multihost ONLINE Command 11 June 1992 + + + 1 Command Aborted + 2 Media Format Error + 3 Controller Error + 4 Drive Error + + 5 See Section 6.13.2, "ONLINE Command, End Message + 6 Format." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-36 + Multihost ONLINE Command 11 June 1992 + + + 1 7.7.3 Description + + 2 The ONLINE command is used to bring a unit "Unit-Online," set + 3 host-settable unit characteristics, and obtain those unit + 4 characteristics that are essential for proper class driver + 5 operation (see Section 5.7, "Unit Flags" for additional + 6 information). The unit is spun-up, if necessary, and its heads + 7 are loaded prior to returning the ONLINE command's end message. + 8 Host-settable characteristics are set exactly as if a SET UNIT + 9 CHARACTERISTICS command were issued (see Section 7.9.2, + 10 "Multihost SET UNIT CHARACTERISTICS Command"). Host-settable + 11 characteristics are set after the unit has been successfully + 12 spun-up and any other validity checks have succeeded. + + 13 In addition, "Exclusive Access" of the unit by the issuing host + 14 may have been denied, granted, retained, or released depending on + 15 the setting of the "Exclusive Access" modifier, whether or not + 16 the unit was already under the "Exclusive Access" of the issuing + 17 host, and the state of the unit relative to all other hosts. See + 18 "Exclusive Access" modifier description above. + + 19 Note that if the unit is already "Unit-Online" to the issuing + 20 host or any other host(s), the unit's host-settable + 21 characteristics and state relative to the issuing host as well as + 22 all other hosts are not altered. + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-37 + Multihost SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 7.8 Multihost SET CONTROLLER CHARACTERISTICS Command + + 2 Command Category: + + 3 Immediate + + 4 7.8.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | reserved | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | cntrlr. flags | MSCP version | + 14 +---------------+---------------+ + 15 | reserved | host timeout | + 16 +---------------+---------------+ + 17 | quad-word | + 18 +--- ---+ + 19 | time and date | + 20 +-------------------------------+ + 21 |controller dependent parameters| + 22 +---------------+---------------+ + 23 | crn | (optional) + 24 +---------------+ + + 25 MSCP version + + 26 See Section 6.16.1, "SET CONTROLLER CHARACTERISTICS + 27 Command, Command Message Format." + + 28 cntrlr. flags + + 29 Host-settable controller flags. See Section 5.6, + 30 "Controller Flags." + + 31 Note that controllers maintain a separate set of + 32 host-settable "controller flags" for each + 33 "Controller-Online" class driver. + + 34 host timeout + + 35 See Section 6.16.1, "SET CONTROLLER CHARACTERISTICS + 36 Command, Command Message Format." + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-38 + Multihost SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 Note that controllers maintain a separate "host timeout" + 2 for each "Controller-Online" class driver. + + 3 quad-word time and date + + 4 See Section 6.16.1, "SET CONTROLLER CHARACTERISTICS + 5 Command, Command Message Format." + + 6 Note that controllers maintain a single "quad-word time + 7 and date" for all "Controller-Online" class drivers. + + 8 controller dependent parameters + + 9 See Section 6.16.1, "SET CONTROLLER CHARACTERISTICS + 10 Command, Command Message Format." + + 11 Note that controllers may either maintain the "controller + 12 dependent parameters" separately for each + 13 "Controller-Online" class driver or singularly for all + 14 "Controller-Online" class drivers, at their option. + + 15 crn (connection reference number) + + 16 See Section 6.16.1, "SET CONTROLLER CHARACTERISTICS + 17 Command, Command Message Format." + + + 18 Allowable modifiers: + + 19 none + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-39 + Multihost SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 7.8.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| rsvd | alloc | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | cntrlr. flags | MSCP version | + 11 +-------+-------+---------------+ + 12 |chvrsn | csvrsn|cntrlr. timeout| + 13 +-------+-------+---------------+ + 14 | | + 15 +--- controller identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | maximum byte count (optional) | + 19 +-------------------------------+ + + 20 alloc + + 21 Allocation Class. Zero, unless manually altered in a + 22 controller implementation dependent manner. Multihost + 23 controllers shall provide an external method for setting + 24 this field (via DUP commands is sufficient). When a new + 25 allocation class value takes effect, all connections + 26 shall be broken to allow hosts to recognize the new value + 27 upon reconnection. Allocation class shall be preserved + 28 in nonvolatile controller memory to allow correct + 29 operation across power failure. + + 30 cntrlr. flags + + 31 See Section 5.6, "Controller Flags." + + 32 For those controller options that a controller supports + 33 the corresponding non-host-settable flag and those + 34 host-settable flags that are currently in effect for the + 35 issuing host will be returned set. Note that controllers + 36 shall set the "Multihost Support" flag. + + 37 cntrlr. timeout + + 38 See Section 6.16.2, "SET CONTROLLER CHARACTERISTICS + 39 Command, End Message Format," Section 4.10, "Command + 40 Timeouts," and Section 7.5, "Multihost GET COMMAND STATUS + 41 Command." + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-40 + Multihost SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 csvrsn + 2 chvrsn + 3 controller identifier + 4 maximum byte count (optional) + + 5 See Section 6.16.2, "SET CONTROLLER CHARACTERISTICS + 6 Command, End Message Format." + + + 7 Status Codes: + + 8 Success (subcode "Normal") + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-41 + Multihost SET CONTROLLER CHARACTERISTICS Command 11 June 1992 + + + 1 7.8.3 Description + + 2 See Section 6.16.3, "SET CONTROLLER CHARACTERISTICS Command, + 3 Description." + + 4 For those host-settable controller characteristics that are + 5 maintained separately, controllers shall operate according to the + 6 value(s) specified by each individual "Controller-Online" class + 7 driver. The operational characteristics requested by one + 8 "Controller-Online" class driver shall not interfere with or + 9 modify in any manner those requested by another. Each + 10 "Controller-Online" class driver is expressly permitted to + 11 specify different operational characteristics and as a result + 12 realize different controller operation. + + 13 For those host-settable characteristics that are maintained + 14 singularly, controllers shall operate according to the value(s) + 15 specified by the host that issued the most recent SET CONTROLLER + 16 CHARACTERISTICS command. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-42 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 7.9 Multihost SET UNIT CHARACTERISTICS Command + + 2 Command Category: + + 3 Sequential + + 4 7.9.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | reserved | + 16 +-------------------------------+ + 17 | | + 18 +--- reserved ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +-------------------------------+ + 23 | reserved | + 24 +-------------------------------+ + + 25 unit flags + + 26 Host-settable unit flags. See Section 5.7, "Unit + 27 Flags." + + 28 Note that controllers maintain a single set of + 29 host-settable unit flags for all "Controller-Online" + 30 class drivers. + + 31 device dependent parameters + + 32 See Section 6.17.1, "SET UNIT CHARACTERISTICS Command, + 33 Command Message Format." + + 34 Note that controllers may either maintain the "device + 35 dependent parameters" separately for each + 36 "Controller-Online" class driver or singularly for all + 37 "Controller-Online" class drivers, at their option. In + 38 the latter case the value expressed in this field by the + 39 host that issued the most recent ONLINE or SET UNIT + 40 CHARACTERISTICS command dictates which device dependent + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-43 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 parameters are in effect. + + + 2 Allowable modifiers: + + 3 Clear Serious Exception (ignored for disk class devices) + + 4 Enable Set Write Protect + + 5 See Section 6.17.1, "SET UNIT CHARACTERISTICS Command, + 6 Command Message Format." + + 7 Exclusive Access + + 8 If the "Exclusive Access" modifier is set and the unit is + 9 "Unit-Available" to the issuing host and is not + 10 "Unit-Online" to any other host, "Exclusive Access" of + 11 the unit is granted to the issuing host. + + 12 If the "Exclusive Access" modifier is set and the unit is + 13 "Unit-Available" to and under the "Exclusive Access" of + 14 the issuing host, "Exclusive Access" of the unit is + 15 retained. + + 16 If the "Exclusive Access" modifier is set and the unit is + 17 "Unit-Online" to and not under the "Exclusive Access" of + 18 the issuing host and is not "Unit-Online" to any other + 19 host, the issuing host is granted "Exclusive Access" of + 20 the unit. + + 21 If the "Exclusive Access" modifier is set and the unit is + 22 "Unit-Online" to and under the "Exclusive Access" of the + 23 issuing host, the issuing host retains "Exclusive Access" + 24 of the unit. + + 25 If the "Exclusive Access" modifier is clear and the unit + 26 is "Unit-Available" to and under the "Exclusive Access" + 27 of the issuing host, "Exclusive Access" of the unit is + 28 released. + + 29 If the "Exclusive Access" modifier is clear and the unit + 30 is "Unit-Online" to and under the "Exclusive Access" of + 31 the issuing host, "Exclusive Access" of the unit is + 32 released. + + 33 If the unit is "Unit-Offline" to the issuing host the + 34 setting of the "Exclusive Access" modifier is ignored. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-44 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 In all the cases just listed the unit's state relative to + 2 the issuing host remains unchanged. + + 3 Note that granting "Exclusive Access" of a unit to a host + 4 implicitly causes the unit to become "Unit-Offline + 5 (substate 'Exclusive Use')" to all other hosts connected + 6 via this controller and "Unit-Offline (substate 'Online + 7 To Another Controller')" to hosts which may potentially + 8 have access to the unit via another controller. + 9 Conversely, the release of a unit from the "Exclusive + 10 Access" of a host implicitly causes the unit to become + 11 "Unit-Available" to all other hosts. + + 12 | Note also that "Exclusive Access" is released if any of + 13 | the following events occur: + + 14 | 1. The controller loses or breaks the connection to + 15 | the host that has "Exclusive Access" of the + 16 | drive. + + 17 | 2. The drive becomes unknown to the controller + 18 | (e.g., port button disabled.) + + 19 | 3. The drive becomes inoperative, "Unit-Offline, + 20 | Inoperative." + + 21 | 4. The controller is 'rebooted', by itself, by an + 22 | operator, or by any host. + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-45 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 7.9.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multiunit code | + 11 +---------------+---------------+ + 12 | reserved |spndles| + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +-------------------------------+ + 20 | reserved | + 21 +-------------------------------+ + 22 | unit size | + 23 +-------------------------------+ + 24 | volume serial number | + 25 +-------------------------------+ + + 26 | status + + 27 The validity of the unit characteristics varies with the + 28 unit's state implied by the contents of this field. See + 29 Status Codes listed later in this section and Section + 30 6.17.3, "SET UNIT CHARACTERISTICS Command, Description" + 31 for complete details. + + 32 unit flags + + 33 See Section 5.7, "Unit Flags." + + 34 Exclusive Access + + 35 The Exclusive Access unit flag is non-host-settable; + 36 it is set when the unit is under the "Exclusive + 37 Access" of this or some other host via this + 38 controller and clear when it is not. + + 39 spndles + + 40 The number minus one of spindles or spindle "groups" in + 41 the unit. The value of zero indicates one spindle. See + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-46 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 Section 4.12, "Disk Geometry and Format." + + 2 multiunit code + 3 unit identifier + 4 media type identifier + 5 unit size + 6 volume serial number + + 7 See Section 6.17.2, "SET UNIT CHARACTERISTICS Command, + 8 End Message Format." + + + 9 Status Codes: + + 10 Success (subcode "Normal") + 11 Success (subcode "Duplicate Unit Number") + + 12 The unit is "Unit-Online" to the issuing host. The unit + 13 may also be "Unit-Online" to one or more other hosts. + 14 The unit will operate according to the setting of those + 15 unit flags that are both host-settable and supported by + 16 the controller, as specified by the issuing class driver, + 17 for all hosts to which the unit is "Unit-Online." + + 18 As described earlier (see "Exclusive Access" modifier in + 19 the preceding section) "Exclusive Access" of the unit by + 20 the issuing host may have been granted, retained, or + 21 released depending on the setting of the "Exclusive + 22 Access" modifier and whether or not the unit was already + 23 under the "Exclusive Access" of the issuing host. + + 24 The unit's state relative to all other hosts remains + 25 unchanged, unless "Exclusive Access" of the unit was + 26 granted or released. See "Exclusive Access" modifier in + 27 the preceding section. + + 28 Unit-Offline + + 29 All subcodes may be returned. Note that "Unit-Offline + 30 (subcode 'Exclusive Use')" status indicates that the unit + 31 is under the "Exclusive Access" of some other host via + 32 this controller. All characteristic fields and unit + 33 flags are valid when that status is returned. + + 34 Unit-Available (subcode "Available") + + 35 This status code implies "Success (subcode 'Normal')" + 36 when "Exclusive Access" of the unit was granted while the + 37 unit was "Unit-Available." + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-47 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 Unit-Available (subcode "Already In Use") + + 2 The unit was "Unit-Online" or "Unit-Available" to the the + 3 issuing host and "Exclusive Access" of the unit was + 4 denied because it is currently "Unit-Online" to another + 5 host via this controller. All characteristic fields and + 6 unit flags are valid. + + 7 Command Aborted + 8 Controller Error + 9 Drive Error + + 10 See Section 6.17.2, "SET UNIT CHARACTERISTICS Command, + 11 End Message Format." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-48 + Multihost SET UNIT CHARACTERISTICS Command 11 June 1992 + + + 1 7.9.3 Description + + 2 The SET UNIT CHARACTERISTICS command is used to set host-settable + 3 unit characteristics and obtain those unit characteristics that + 4 are essential for proper class driver operation. The setting of + 5 the host-settable unit flags is effective only when the unit is + 6 "Unit-Online" to the issuing host and affects all hosts to which + 7 the unit is "Unit-Online." + + 8 In addition, "Exclusive Access" of the unit by the issuing host + 9 may have been denied, granted, retained, or released depending on + 10 the setting of the "Exclusive Access" modifier, whether the unit + 11 was already under the "Exclusive Access" of the issuing host, and + 12 the state of the unit relative to all other hosts. See + 13 "Exclusive Access" modifier description above. + + 14 Note that the format of the SET UNIT CHARACTERISTICS command's + 15 end message is identical to that of the ONLINE command's end + 16 message because the ONLINE command performs a SET UNIT + 17 CHARACTERISTICS operation after bringing a unit "Unit-Online." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-49 + Multihost TERMINATE CLASS DRIVER/SERVER CONNECTI ... 11 June 1992 + + + 1 7.10 Multihost TERMINATE CLASS DRIVER/SERVER CONNECTION Command + + + 2 Command Category: + + 3 Immediate + + + 4 7.10.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | | + 14 +--- ---+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +--- ---+ + 21 | | + 22 +---------------+---------------+ + 23 | crn | + 24 +---------------+ + + + 25 crn (connection reference number) + + 26 The identification of the host whose class driver/server + 27 connection is to be terminated. + + 28 Note that host class drivers associate a "connection + 29 reference number" with the "Controller-Online" connection + 30 they establish with the server via the SET CONTROLLER + 31 CHARACTERISTICS command as described in Section 6.16.1, + 32 "SET CONTROLLER CHARACTERISTICS Command, Command Message + 33 Format." + + 34 If the value supplied in this field is zero, the server + 35 rejects the command as an "Invalid Command" ("invalid + 36 crn" parameter error. See Section 5.5, "Status Codes" + 37 for complete details. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-50 + Multihost TERMINATE CLASS DRIVER/SERVER CONNECTI ... 11 June 1992 + + + 1 Allowable modifiers: + + 2 None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-51 + Multihost TERMINATE CLASS DRIVER/SERVER CONNECTI ... 11 June 1992 + + + 1 7.10.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| reserved | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | | + 11 +--- ---+ + 12 | | + 13 +--- ---+ + 14 | undefined | + 15 +--- ---+ + 16 | | + 17 +--- ---+ + 18 | | + 19 +---------------+---------------+ + 20 | crn | + 21 +---------------+ + + + 22 crn (connection reference number) + + 23 Zero or the value supplied in the command message "crn + 24 (connection reference number)" field. + + 25 If this field is zero, the server was unable to find a + 26 class driver/server connection associated with the host + 27 specified in the command message "crn (connection + 28 reference number)" field. + + 29 If this field is nonzero, the server found a class + 30 driver/server connection associated with the host + 31 specified in the command message "crn (connection + 32 reference number)" field and performed the operations + 33 necessary to terminate it. + + 34 Status Codes: + + 35 Success (subcode "Normal") + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + MULTIHOST SUPPORT Page 7-52 + Multihost TERMINATE CLASS DRIVER/SERVER CONNECTI ... 11 June 1992 + + + 1 7.10.3 Description + + + 2 Support of the TERMINATE CLASS DRIVER/SERVER CONNECTION command + 3 is a Disk MSCP server implementation dependent option. Disk MSCP + 4 servers that do not provide such support shall reject this + 5 command as an "Invalid Command" ("invalid opcode" protocol error. + 6 See "Invalid Command" status in Section 5.5, "Status Codes"). + 7 Tape MSCP servers shall not implement this command. + + 8 Servers that support "write history logging" as described in + 9 Section 6.19.3, "WRITE HISTORY MANAGEMENT Command, Description" + 10 shall also support the TERMINATE CLASS DRIVER/SERVER CONNECTION + 11 command. Note that servers that support "write history logging" + 12 but do not provide Multihost Support shall treat the TERMINATE + 13 CLASS DRIVER/SERVER CONNECTION command as a no-operation as + 14 described in Section 6.1.1, "No-Operation Commands." + + 15 "Write history logging" and the TERMINATE CLASS DRIVER/SERVER + 16 CONNECTION command were defined primarily for the purpose of + 17 assisting in the operation of host based volume shadowing + 18 implementations. All servers that support "write history + 19 logging" (and therefore the TERMINATE CLASS DRIVER/SERVER + 20 CONNECTION command) shall set the Write History Logging Support + 21 controller flag. A server that does not support "write history + 22 logging" may, at its option, support the TERMINATE CLASS + 23 DRIVER/SERVER CONNECTION command. + + 24 If supported and the server also provides Multihost Support, this + 25 command permits a host class driver to terminate the class + 26 driver/server connection a host has established with the server + 27 receiving this command. + + 28 After performing the operations necessary to terminate the + 29 connection between itself and the class driver located in the + 30 specified host system the server enters the + 31 "Controller-Available" state relative to that class driver. See + 32 Section 4.1, "Controller States," for information regarding the + 33 processing of new and outstanding commands received when a class + 34 driver/server connection is terminated. Note that the server + 35 shall "notice" connection terminations resulting from the + 36 execution of this command prior to returning this command's end + 37 message. + + 38 Note that in cases where multiple class drivers located in the + 39 specified host system have established separate connections with + 40 the server receiving this command and each of those connections + 41 is associated with the same "connection reference number," the + 42 server shall terminate all connections so established. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-1 + 11 June 1992 + + + 1 CHAPTER 8 + + 2 CONTROLLER INITIATED BAD BLOCK REPLACEMENT + + + 3 8.1 Controller Initiated Bad Block Replacement Overview + + 4 Controller Initiated Bad Block Replacement is an MSCP option that + 5 relieves host class drivers from the task of performing bad block + 6 replacement on disk drives. + + 7 In a disk MSCP server that does not provide Controller Initiated + 8 Bad Block Replacement the server reports bad blocks to the class + 9 driver, and the class driver and/or an auxiliary process + 10 associated with it actually replaces the bad block. With + 11 Controller Initiated Bad Block Replacement, the disk MSCP server + 12 replaces bad blocks itself, transparent to the class driver. + 13 This requires that the server also take over maintenance of the + 14 Replacement Control Table (RCT), which contains replacement + 15 context information. + + 16 Note that a controller may implement Controller Initiated Bad + 17 Block Replacement on some or all of the disk types that may be + 18 connected to it, at its option. In addition, Controller + 19 Initiated Bad Block Replacement does not apply to Tape Mass + 20 Storage Control Protocol, as bad block replacement is not used on + 21 tape class devices. + + 22 Conceptually, Controller Initiated Bad Block Replacement is + 23 implemented by inserting a Bad Block Replacement layer between a + 24 Gatekeeper layer and the Disk MSCP layer, as shown in Figure 8-1 + 25 below. The Gatekeeper layer ensures that Sequential, + 26 Non-Sequential, and Immediate commands behave as described. It + 27 recognizes when a Sequential command has begun execution, and + 28 defers all Non-Sequential commands on that unit until the + 29 Sequential command completes. The Bad Block Replacement layer + 30 performs bad block replacement and RCT maintenance by issuing + 31 MSCP commands to the Disk MSCP layer. + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-2 + Controller Initiated Bad Block Replacement Overview 11 June 1992 + + + 1 Class Driver + 2 A + 3 | + 4 V + 5 / +----------------------------------+ + 6 / | Gatekeeper | + 7 / +----------------------------------+ + 8 MSCP server | Bad Block Replacement | + 9 \ +----------------------------------+ + 10 \ | Disk MSCP | + 11 \ +----------------------------------+ + + + 12 Figure 8-1: Controller Initiated Bad Block Replacement + 13 Layers + + + 14 The remainder of this chapter describes the algorithms used by + 15 the Bad Block Replacement layer, the concepts that Controller + 16 Initiated Bad Block Replacement adds to standard Disk MSCP, the + 17 changes to MSCP control message formats (described in Chapter 6, + 18 "Minimal MSCP Command Set" and, if the controller provides + 19 Multihost Support, Chapter 7, "Multihost Support"). Actual + 20 implementations of Controller Initiated Bad Block Replacement + 21 need not be a distinct layer or use exactly the algorithms given + 22 here, so long as all class driver visible results are identical. + + 23 8.2 Data Safety Write Protection + + 24 As described in Section 4.14, "Write Protection," MSCP has three + 25 forms of write protection: Hardware Write Protection, Software + 26 Write Protection, and Data Safety Write Protection. Data Safety + 27 Write Protection shall be put into effect whenever the Bad Block + 28 Replacement layer detects that the volume has an inconsistent + 29 Replacement Control Table (RCT) or a replacement has failed on + 30 the volume. + + 31 When a unit is brought "Unit-Online," the Bad Block Replacement + 32 layer examines block 0 of the RCT to see if the volume must be + 33 Data Safety Write Protected. If so, the layer write protects the + 34 unit and disables all bad block replacement attempts. The layer + 35 provides read-only access to the unit on a "best efforts" basis, + 36 so that a host can copy the volume's data to a backup device. + + 37 If a volume has an incomplete replacement attempt, and its unit + 38 is Hardware Write Protected when it is brought "Unit-Online," the + 39 Bad Block Replacement layer cannot complete the replacement + 40 attempt. As an incomplete replacement attempt is one form of an + 41 inconsistent RCT, the unit is Data Safety Write Protected when it + 42 is brought "Unit-Online." If the unit subsequently ceases to be + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-3 + Data Safety Write Protection 11 June 1992 + + + 1 Hardware Write Protected, the layer shall attempt to complete the + 2 incomplete replacement. If this succeeds, Data Safety Write + 3 Protection may be cleared for the unit. + + 4 The only way to clear Data Safety Write Protection due to an + 5 invalid RCT is to reformat the volume. + + 6 8.3 Bad Block Replacement + + 7 With Controller Initiated Bad Block Replacement, the MSCP server + 8 performs all bad block replacement. At a minimum, the MSCP + 9 server replaces the first bad block encountered by each transfer + 10 command. That is, the MSCP server shall replace all bad blocks + 11 that would have been reported in any end message's "first bad + 12 block" field by an MSCP server that does not provide Controller + 13 Initiated Bad Block Replacement. Replacement of any additional + 14 bad blocks encountered by a transfer is strongly recommended, but + 15 not required. + + 16 Bad blocks can be detected by both read and write operations. + 17 For read operations, the success or failure of the read cannot be + 18 changed by retrying the read after performing the replacement. + 19 However, with writes it is definitely possible (indeed, probable) + 20 that a write that fails before the replacement will succeed after + 21 the replacement. Consider that most bad blocks detected on write + 22 operations will be due to invalid headers -- defects in the + 23 header area of a sector. A write to such a block will fail + 24 before the replacement, but succeed afterwards. + + 25 For this reason, if a write operation fails on a bad block, the + 26 Bad Block Replacement layer shall retry the write operation after + 27 replacing the block. This implies that the replacement operation + 28 must be performed before such a write command completes (i.e., + 29 before the end message is returned). In all other cases, + 30 however, the replacement operation may be asynchronous with + 31 respect to completion of the command that detected the bad block. + 32 That is, since the replacement cannot affect the success or + 33 failure of the command, the replacement may be performed either + 34 before or after the command completes. + + 35 In addition to detecting bad blocks in transfers issued by hosts + 36 or higher layers in the MSCP server, the Bad Block Replacement + 37 layer may also check for bad blocks spontaneously, without + 38 receiving any actual commands. In effect, whenever a unit is + 39 "Unit-Online," the Bad Block Replacement layer may periodically + 40 generate reads to the unit. Any bad blocks detected by such + 41 internally generated transfers should be replaced, exactly the + 42 same as if the read were externally generated. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-4 + Bad Block Replacement 11 June 1992 + + + 1 Bad block replacement cannot be performed when the unit is + 2 Hardware Write Protected. If a bad block is detected on a + 3 Hardware Write Protected unit, replacement is not attempted. If + 4 the unit becomes Hardware Write Protected after the bad block is + 5 detected, but before the replacement is completed, some phase of + 6 the bad block replacement algorithm will fail with a "Write + 7 Protect" error. This error is handled the same as any other + 8 failure of the bad block replacement algorithm; see the + 9 discussion below. + + 10 When both Disk MSCP and Controller Initiated Bad Block + 11 Replacement are implemented in the same controller, it is + 12 strongly recommended that the controller defer recognition of + 13 Hardware Write Protection until all pending replacement + 14 operations have completed. That is, when an operator actuates + 15 the unit's write protect mechanism, the controller does not + 16 physically write protect the unit until after all previously + 17 detected bad blocks have been replaced. This is similar to the + 18 requirement in standard Disk MSCP of providing a smooth + 19 transition to the write protected state (see Section 4.14, "Write + 20 Protection"). + + 21 Bad block replacement shall be performed regardless of the + 22 Software Write Protect status of the unit. If a bad block is + 23 detected when the unit is Software Write Protected, the Bad Block + 24 Replacement layer shall write enable the unit, perform the + 25 replacement, then re-write protect the unit. The layer shall + 26 guarantee that all host or higher layer write commands are still + 27 rejected in spite of the unit being temporarily write enabled. + + 28 Bad block replacement shall not be attempted when the unit is + 29 Data Safety Write Protected or when the unit was brought + 30 "Unit-Online" with the "Ignore Media Format Error" modifier. + + 31 If the unit is Hardware Write Protected when it is brought + 32 "Unit-Online" and it subsequently ceases to be Hardware Write + 33 Protected, the Bad Block Replacement layer shall perform certain + 34 actions before it attempts a replacement or modifies the volume + 35 in any other way. These actions are to read and rewrite + 36 Replacement Control Table (RCT) block 0 and to attempt to + 37 complete any incomplete replacement operation. See Section 8.10, + 38 "Actions Before First Modification." + + 39 If a bad block replacement fails for any reason, the Bad Block + 40 Replacement layer handles the failure as follows: + + 41 1. The status code returned for the command that detected + 42 the bad block is not affected by the failed replacement + 43 attempt. That is, the status code appropriate for the + 44 original access is returned. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-5 + Bad Block Replacement 11 June 1992 + + + 1 2. The replacement failure is reported with a "Bad Block + 2 Replacement Attempt" error log message (see Section + 3 5.9.8). + + 4 Many of the errors that cause replacement failure are + 5 themselves reported with error log messages. For + 6 example, failure of a multiread or multiwrite access to + 7 the RCT produces at least two error log messages: a + 8 (usually) "Disk Transfer Error" message reporting the + 9 access failure and a separate "Bad Block Replacement + 10 Attempt" message reporting the replacement failure. All + 11 such error log messages that report the cause of a + 12 replacement failure should have the "Error During + 13 Replacement" error log flag set and should be sent + 14 before the "Bad Block Replacement Attempt" error log + 15 message. + + 16 3. The Bad Block Replacement layer forces the unit to + 17 become "Unit-Available" (or "Unit-Offline") with respect + 18 to all class drivers, exactly as if an AVAILABLE command + 19 with the "All Class Drivers" modifier had been issued. + 20 This, of course, causes an AVAILABLE Attention message + 21 to be sent to all class drivers that have enabled them. + + 22 Note that Data Safety Write Protection will be in effect + 23 when the unit's volume is next brought "Unit-Online" + 24 (unless the problem is no longer present at that time). + + 25 4. Between the time that the server discovers the + 26 replacement failure and the unit completes its + 27 transition to "Unit-Available," the setting of the Data + 28 Safety Write Protected unit flag is indeterminate. This + 29 flag may be either set or clear if it is returned to a + 30 host during this interval. + + 31 5. Any pending bad block replacement attempts for the unit + 32 are discarded, exactly as if the unit had been Data + 33 Safety Write Protected when those bad blocks were + 34 detected. Error log messages or other notifications are + 35 not generated to report the dropped replacements. + + 36 6. No attempt is made to replace any additional bad blocks + 37 that may be detected during the transition to + 38 "Unit-Available," exactly as if the unit were Data + 39 Safety Write Protected. + + 40 7. Subject to the constraint of not attempting further bad + 41 block replacement, the server shall complete any + 42 outstanding commands that it has already initiated. All + 43 new commands received after the replacement failure + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-6 + Bad Block Replacement 11 June 1992 + + + 1 shall be rejected. Outstanding commands that have not + 2 yet been initiated may be completed or rejected. + 3 Commands are rejected with a "Unit-Available" or + 4 "Unit-Offline" status code. + + + 5 The success or failure of read operations is not affected by bad + 6 block replacement or the replacement's success or failure. The + 7 status code reported for read operations is the status + 8 appropriate to the original read attempt, before any replacement + 9 was performed. The success or failure of write operations is + 10 affected by replacement, since the write must be retried after + 11 the replacement is performed. If the replacement succeeds, the + 12 status code reported is that appropriate to the retry (unless the + 13 retry also encounters a bad block, in which case another + 14 replacement and another retry are performed, and the process + 15 repeated until the retry does not encounter a bad block). If the + 16 replacement fails, the status code reported is that appropriate + 17 to the original write attempt that caused the bad block + 18 replacement. The cause of a bad block replacement failure is + 19 only reported as an event code in an error log message; it is + 20 never reported as a status code in an end message. + + 21 8.4 Replacement Control Table Access + + 22 The standard Disk MSCP server shall allow read and write access + 23 to the Replacement Control Table (RCT), as such access is + 24 required by higher layers in order to be able to perform bad + 25 block replacement. The Bad Block Replacement layer need not + 26 provide RCT access, however, since it implements bad block + 27 replacement itself. + + 28 Even though it is not necessary for the Bad Block Replacement + 29 layer to provide RCT access, in many cases it is desirable to do + 30 so. Providing such access allows a host to examine certain + 31 additional information contained in RCT block 0. Also, since + 32 accessing a replacement block is usually slower than accessing a + 33 good logical block, a host could use the RCT contents to allocate + 34 files with critical, real-time access requirements in portions of + 35 the volume that do not contain bad blocks. + + 36 Therefore a server's Bad Block Replacement layer shall provide + 37 one of the following RCT access options. The server may provide + 38 different options for different disk types. The options are: + + 39 1. No RCT access. Any attempt to access any block inside + 40 the RCT will be rejected. + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-7 + Replacement Control Table Access 11 June 1992 + + + 1 2. Read-only access to the entire RCT. Attempts to read + 2 any block in the first copy of the RCT will be honored. + 3 That is, a READ command with "logical block number" in + 4 the range "unit size" through "unit size" plus "RCT + 5 size" minus one and "byte count" equal to the unit's + 6 block size will be honored. Any other attempt to access + 7 the RCT will be rejected. + + 8 When an RCT access attempt is rejected the command is rejected as + 9 an "Invalid Command" parameter error (see "Invalid Command" + 10 status in Section 5.5, "Status Codes"). If the command is a READ + 11 command with a valid "logical block number," but the "byte count" + 12 is not equal to the unit's block size, then the subcode is + 13 "Invalid Byte Count." Otherwise the subcode is "Invalid Logical + 14 Block Number." Attempts to write the RCT are rejected with an + 15 "Invalid Logical Block Number" subcode. + + 16 Note that option 2, entire RCT access, only allows access + 17 attempts to the first copy of the RCT. The Bad Block Replacement + 18 layer uses the multicopy read algorithm to locate the proper RCT + 19 copy to use in satisfying the request. + + 20 The Bad Block Replacement layer reports which option it + 21 implements by altering the "RCT size" and "copies" parameters in + 22 the GET UNIT STATUS end message when it passes that message on to + 23 higher layers. These parameters are altered to describe the host + 24 accessible portion of the RCT. The actual alterations are as + 25 follows: + + 26 RCT Access Option "RCT size" "copies" + 27 ----------------- ---------- -------- + + 28 No RCT access 0 0 + + 29 Entire RCT actual RCT size 1 + + 30 It is recommended that high-end controllers provide access to the + 31 entire RCT. Minimal, low-end controllers will probably provide + 32 no RCT access. Note that any disk that uses a nonstandard means + 33 of bad block replacement, and therefore does not have an RCT, + 34 appears identical to a disk that provides no RCT access. + + 35 The Bad Block Replacement layer may optionally allow additional + 36 RCT access when a unit is brought "Unit-Online" with the "Ignore + 37 Media Format Error" modifier. This may include read-write access + 38 and/or access to individual copies of the RCT. The layer should + 39 ensure that the values returned for "RCT size" and "copies" + 40 reflect the RCT geometry presented to hosts. Note that any + 41 additional access provided is intended for diagnostic use, and is + 42 inherently controller dependent. Attempts to write to the unit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-8 + Replacement Control Table Access 11 June 1992 + + + 1 when the "Ignore Media Format Error" modifier has been set may + 2 have undefined results, including permanent corruption of the + 3 volume. The errors produced by such corruption may be + 4 indistinguishable from device hardware failures. + + 5 8.5 Atomic Bad Block Replacement + + 6 The Bad Block Replacement layer shall perform bad block + 7 replacement operations as atomic operations. That is, while a + 8 bad block replacement operation is in progress, any transfer + 9 operations for either the bad block being replaced or block 0 of + 10 the Replacement Control Table (RCT) shall not be performed. Such + 11 transfer operations shall be deferred until after the bad block + 12 replacement has completed. For a multiblock transfer that + 13 includes the block being replaced, only the transfer of the block + 14 being replaced need be deferred; the blocks before and after the + 15 one being replaced may be transferred immediately. + + 16 A bad block replacement operation begins just before the "best + 17 guess" data is obtained for the block. This is not necessarily + 18 the same transfer that detects the bad block and causes it to be + 19 replaced. The bad block replacement operation ends just after + 20 RCT block 0 is updated to indicate that replacement is no longer + 21 in progress. The Controller Bad Block Replacement layer shall + 22 lock out all host and higher layer access to the block being + 23 replaced and RCT block 0 between these two times. Note that read + 24 access must be locked out as well as write access. + + 25 8.6 Error Log Messages + + 26 Any error severe enough to warrant replacement of the affected + 27 block is, by definition, a "significant" error that shall be + 28 reported in an error log message. The error log message shall + 29 use the "Disk Transfer Error" format or some other format that + 30 specifies the disk location at which the error occurred. The + 31 "Bad Block Replacement Request" error log flag is set in the + 32 error log message to indicate that replacement of the block will + 33 be attempted. + + 34 When the replacement attempt completes, the Bad Block Replacement + 35 layer generates an additional "Bad Block Replacement Attempt" + 36 format error log message to report the replacement attempt's + 37 success or failure. + + 38 Due to the different error characteristics of the Replacement + 39 Control Table (RCT), controllers should use an altered strategy + 40 for logging errors on RCT accesses. In the host area of a disk, + 41 the most common errors are eliminated by bad block replacement. + 42 Since bad block replacement is not used in the RCT, these common + 43 errors can be expected to occur, and are therefore relatively + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-9 + Error Log Messages 11 June 1992 + + + 1 uninteresting for an error log. + + 2 The goal for logging RCT errors is to not log any error that + 3 would cause bad block replacement in the host area. Controllers + 4 that contain both standard Disk MSCP and Controller Initiated Bad + 5 Block Replacement can do this precisely, since they know exactly + 6 which errors they use to trigger replacement. Layered + 7 controllers, where standard Disk MSCP and Controller Initiated + 8 Bad Block Replacement are distinct entities, can only approximate + 9 this by filtering out "Data Errors." That is, an independent Bad + 10 Block Replacement layer should only log the non-"Data Errors" + 11 that occur on RCT accesses. + + 12 The one exception to not logging RCT "Data Errors" is when an RCT + 13 access fails -- that is, when the multiread or multiwrite + 14 algorithms fail, indicating that the read or write failed to all + 15 copies of the RCT. Whenever the multiread or multiwrite + 16 algorithms fail, an error log message shall be generated + 17 reporting the error that occurred when the last RCT copy was + 18 accessed. If this error is a "Data Error," its event code is + 19 converted to a "Media Format Error" with the same subcode value + 20 before being reported in the error log message. All other errors + 21 are reported without event code alteration. + + 22 Other than the altered strategy for logging RCT "Data Errors" + 23 described above, any errors resulting from accesses to the unit + 24 during bad block replacement are logged according to normal + 25 controller policies. The only change is that the "Error During + 26 Replacement" error log flag should be set in such messages, + 27 indicating that the operation was requested by the bad block + 28 replacement process. All such messages should be issued before + 29 the "Bad Block Replacement Attempt" format error log message that + 30 reports the replacement attempt's status. + + 31 8.7 Unit Context Information + + 32 The Bad Block Replacement layer shall separately maintain the + 33 following unit flags for each unit it has "Unit-Online": + + 34 Write Protected (software) + + 35 Write Protected (data safety) + + + 36 The reason for this is that the Bad Block Replacement layer sets + 37 the "Write Protected (software)" unit flag in the Disk MSCP layer + 38 if either of these flags are set. The replacement layer shall + 39 keep track of these flags itself, in order to remember the + 40 reason(s) for write protecting the unit. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-10 + Unit Context Information 11 June 1992 + + + 1 The Bad Block Replacement layer also maintains internal, per + 2 unit, flags to record: + + 3 o The individual causes of Data Safety Write Protection. + 4 It uses these flags to return the proper status + 5 subcodes. + + 6 o Whether Replacement Control Table (RCT) block 0 has been + 7 rewritten and any incomplete replacements finished. + 8 Normally these actions are performed when the unit is + 9 brought "Unit-Online." However, if the unit is Hardware + 10 Write Protected when it is brought "Unit-Online," then + 11 these actions cannot be performed. Thus this flag is + 12 set to remember to perform these actions when or if the + 13 unit subsequently ceases to be Hardware Write Protected. + 14 This flag is further described in Sections 8.8, "Actions + 15 During ONLINE" and 8.10, "Actions Before First + 16 Modification." + + 17 o Whether the "Ignore Media Format Error" modifier was set + 18 when the unit was brought "Unit-Online." It uses this + 19 flag to inhibit bad block replacement. + + + 20 8.8 Actions During ONLINE + + 21 The Bad Block Replacement layer performs two different courses of + 22 action for an ONLINE command, depending on whether the "Ignore + 23 Media Format Error" modifier is set. Normally, the layer reads + 24 block 0 of the Replacement Control Table (RCT) to perform various + 25 volume consistency checks. However, if the "Ignore Media Format + 26 Error" modifier is set, the layer does not access the RCT in any + 27 way. + + 28 If an ONLINE command has the "Ignore Media Format Error" modifier + 29 set, the Bad Block Replacement layer merely passes the unmodified + 30 command on to the Disk MSCP layer. Similarly, it passes the + 31 unmodified response from the Disk MSCP layer back to the host or + 32 higher layer that issued the command. The replacement layer's + 33 only additional action is to remember, in an internal flag, that + 34 the "Ignore Media Format Error" modifier was set. It uses this + 35 flag to inhibit all bad block replacement attempts and to + 36 optionally allow additional access to the RCT for diagnostics. + + 37 When the "Ignore Media Format Error" modifier is not set, the Bad + 38 Block Replacement layer performs the following steps to process + 39 an ONLINE command: + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-11 + Actions During ONLINE 11 June 1992 + + + 1 1. Issue an ONLINE command to the Disk MSCP layer. All + 2 fields except the "modifiers" field are copied from the + 3 ONLINE command received by the replacement layer. The + 4 "modifiers" field is constructed as follows: + + 5 a. The "Allow Self Destruction" modifier is copied from + 6 the received command. + + 7 b. If the Disk MSCP layer provides Multihost Support, + 8 the "Exclusive Access" modifier is set. + + 9 c. All other modifiers are clear. + + + 10 If the Disk MSCP ONLINE fails, return its end message as + 11 the result of this layer's ONLINE and exit. If the Disk + 12 MSCP ONLINE reports that the unit is already + 13 "Unit-Online," the ONLINE has succeeded. Again, return + 14 its end message as the result of this layer's ONLINE and + 15 exit. Otherwise save its end message as the prototype + 16 for this layer's ONLINE end message. + + 17 2. Read block 0 of the RCT with the multicopy read + 18 algorithm. If the multicopy read algorithm fails, + 19 report its result as the status of this ONLINE and exit. + + 20 3. If the unit is Hardware Write Protected, set an internal + 21 flag and go to step 6. This flag is further described + 22 in Section 8.10, "Actions Before First Modification." + + 23 4. Write the data read by step 2 back out to block 0 of the + 24 RCT with the multicopy write algorithm. If the + 25 multicopy write algorithm fails, report its result as + 26 the status of this ONLINE and exit. + + 27 5. If the data read by step 2 indicates that there is an + 28 incomplete bad block replacement on the volume, attempt + 29 to complete it. If the completion attempt fails, report + 30 it with an error log message. Continue with the next + 31 step regardless of whether the completion attempt + 32 succeeds or fails. + + 33 6. Examine the contents of RCT block 0, as read in step 2 + 34 and possibly modified in step 5. If there is an + 35 incomplete bad block replacement attempt or the RCT is + 36 invalid, set the "Write Protect (data safety)" unit flag + 37 in the unit's context. The checks, if any, that the + 38 controller performs to verify the RCT's validity are + 39 specified by the Digital Storage Architecture Disk + 40 Format and/or the controller's functional specification. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-12 + Actions During ONLINE 11 June 1992 + + + 1 7. If the "Enable Set Write Protect" modifier was set in + 2 the original ONLINE command received from the higher + 3 layer, then copy the "Write Protected (software)" unit + 4 flag from the original command to the unit's context. + + 5 8. If either of the "Write Protect (data safety)" or "Write + 6 Protect (software)" unit flags are set in the unit's + 7 context, issue a SET UNIT CHARACTERISTICS command to the + 8 Disk MSCP layer to software write protect the unit. If + 9 the command fails, report its status as the status of + 10 this ONLINE and exit. + + 11 9. The ONLINE operation has completed successfully. Copy + 12 the "Write Protect (data safety)" and "Write Protect + 13 (software)" unit flags from this unit's context to the + 14 prototype end message saved in step 1. If the unit is + 15 Data Safety Write Protected, set the appropriate status + 16 subcodes. Return the resulting end message to the host + 17 or higher layer. + + + 18 If the ONLINE operation fails, clean-up may or may not be + 19 necessary, depending on where the failure occurs. If the failure + 20 occurs in step 1 (the ONLINE command to the Disk MSCP layer), the + 21 unit will not be "Unit-Online" through the Disk MSCP layer, so no + 22 clean-up is necessary. If the failure occurs anywhere else, the + 23 Bad Block Replacement layer shall issue an AVAILABLE command with + 24 the "Spin-down" modifier set to the Disk MSCP layer, since the + 25 unit may still be "Unit-Online" through the Disk MSCP layer. + + 26 As part of bringing a unit "Unit-Online," the Bad Block + 27 Replacement layer attempts to complete any incomplete replacement + 28 on the volume. If the unit is not Hardware Write Protected, the + 29 attempt is made as part of the ONLINE command. If the unit is + 30 Hardware Write Protected, the attempt is made after the unit + 31 ceases to be Hardware Write Protected and no later than the first + 32 attempt to write to the unit or the first SET UNIT + 33 CHARACTERISTICS command after the unit ceases to be Hardware + 34 Write Protected. This is discussed in Section 8.10, "Actions + 35 Before First Modification." In either case, there is only one + 36 attempt to complete the replacement. If that one attempt fails, + 37 no other attempt will be made until the next time the volume is + 38 brought "Unit-Online." + + 39 8.9 Actions During SET UNIT CHARACTERISTICS + + 40 The Bad Block Replacement layer performs the following steps to + 41 process a SET UNIT CHARACTERISTICS command: + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-13 + Actions During SET UNIT CHARACTERISTICS 11 June 1992 + + + 1 1. If the internal flag is set indicating that the unit was + 2 Hardware Write Protected when it was brought + 3 "Unit-Online" and it is no longer Hardware Write + 4 Protected, perform the actions described in Section + 5 8.10, "Actions Before First Modification" and clear the + 6 flag. If those actions fail, report their result as the + 7 status of this SET UNIT CHARACTERISTICS and exit. Note + 8 that this step may clear the "Write Protect (data + 9 safety)" unit flag in the unit's context. + + 10 2. If the "Enable Set Write Protect" modifier was set in + 11 the original SET UNIT CHARACTERISTICS command received + 12 from the higher layer, then copy the "Write Protected + 13 (software)" unit flag from the original command to the + 14 unit's context. + + 15 3. Issue a SET UNIT CHARACTERISTICS command to the Disk + 16 MSCP layer. The command is identical to the original + 17 SET UNIT CHARACTERISTICS command received by the + 18 replacement layer with the following changes: + + 19 a. The "Enable Set Write Protect" modifier is always + 20 set. + + 21 b. The "Write Protect (software)" unit flag is set to + 22 the "inclusive-or" of the "Write Protect (data + 23 safety)" and "Write Protect (software)" unit flags + 24 in the unit's context. + + + 25 If the command fails, report its status as the status of + 26 this SET UNIT CHARACTERISTICS and exit. + + 27 4. The SET UNIT CHARACTERISTICS operation has completed + 28 successfully. Copy the "Write Protect (data safety)" + 29 and "Write Protect (software)" unit flags from this + 30 unit's context to the end message returned in the + 31 previous step. If the unit is Data Safety Write + 32 Protected, set the appropriate status subcodes. Return + 33 the resulting end message to the host or higher layer. + + + 34 If the SET UNIT CHARACTERISTICS operation fails for any reason, + 35 the Bad Block Replacement layer shall issue an AVAILABLE command + 36 with all modifiers clear to the Disk MSCP layer and send an + 37 AVAILABLE attention message to the host and higher layers. This + 38 is necessary to preserve the rule that the unit may not be left + 39 "Unit-Online" if a command that might change the unit's context + 40 fails. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-14 + Actions Before First Modification 11 June 1992 + + + 1 8.10 Actions Before First Modification + + 2 As part of bringing a unit "Unit-Online," the Bad Block + 3 Replacement layer reads and rewrites Replacement Control Table + 4 (RCT) block 0. The reason for this is that, when the volume was + 5 last in use, there may have been a failure after some copies of + 6 RCT block 0 were written but before all of them were written. If + 7 this situation were to occur, a transient or inconsistent error + 8 could cause successive reads of RCT block 0 to return different + 9 data, as data was returned from different copies. By reading and + 10 rewriting block 0 the layer ensures that all copies contain the + 11 same data, so that successive reads will always return the same + 12 results. + + 13 However, if the unit is Hardware Write Protected when it is + 14 brought "Unit-Online," this problem can still occur since block 0 + 15 cannot be rewritten. So long as the unit remains Hardware Write + 16 Protected, no problems can occur, since the volume cannot be + 17 modified. However, if the unit ceases to be Hardware Write + 18 Protected, volume modification becomes possible. If this occurs, + 19 RCT block 0 shall be read and rewritten prior to the first + 20 modification. + + 21 When a unit is brought "Unit-Online," the Bad Block Replacement + 22 layer sets an internal flag if the unit is Hardware Write + 23 Protected and RCT block 0 cannot be rewritten. This flag shall + 24 be checked when a host or higher layer attempts to modify the + 25 volume and, if it is set, the actions described below performed. + 26 There are three ways that the volume may be modified: + + 27 1. Bad block replacement. The actions below are performed + 28 after checking that the unit is not Hardware Write + 29 Protected, but before checking if the unit is Data + 30 Safety Write Protected or modifying the RCT in any way. + 31 That is, these actions are performed after the bad block + 32 is detected but before the bad block replacement + 33 algorithm is initiated. + + 34 2. A SET UNIT CHARACTERISTICS command. The point at which + 35 the actions below are performed is described in Section + 36 8.9, "Actions During SET UNIT CHARACTERISTICS." + + 37 3. A host or higher layer write operation. The actions + 38 below are performed after checking that the unit is not + 39 Hardware or Software Write Protected but before any + 40 modification is performed on the unit. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-15 + Actions Before First Modification 11 June 1992 + + + 1 The Bad Block Replacement layer need not wait until a + 2 modification is attempted. It may perform the actions below + 3 spontaneously upon the unit ceasing to be Hardware Write + 4 Protected. From the viewpoint of a host or higher layer, this is + 5 no different from the actions below being performed in response + 6 to an attempted bad block replacement. + + 7 The actions that shall be performed before the first modification + 8 are: + + 9 1. Check the internal flag discussed above. If the flag is + 10 clear, proceed with the modification. If the flag is + 11 set, clear it and continue with the next step. + + 12 2. Read block 0 of the RCT with the multicopy read + 13 algorithm. If the multicopy read algorithm fails, exit. + + 14 3. Check the internal flags recording the reasons, if any, + 15 for the unit being Data Safety Write Protected. If the + 16 incomplete replacement flag is clear, then clear the + 17 incomplete replacement flags in RCT block 0. If the + 18 invalid RCT flag is clear, implying that the RCT was + 19 valid when the unit was brought "Unit-Online," yet the + 20 current RCT image is not valid, either exit with a + 21 "Media Format Error" or "fix" the invalid RCT. An + 22 example of "fixing" the RCT is zeroing a reserved field + 23 that was zero when the unit was brought "Unit-Online," + 24 but that is now nonzero. + + 25 4. Write RCT block 0 with the value read in step 2 and + 26 possibly modified in step 3, using the multicopy write + 27 algorithm. If the multicopy write algorithm fails, + 28 exit. + + 29 5. If the value just written to RCT block 0 indicates there + 30 is an incomplete bad block replacement on the volume, + 31 attempt to complete it. If the completion attempt + 32 fails, report it with an error log message and continue. + + 33 6. Set the "Write Protected (data safety)" unit flag to the + 34 "inclusive-or" of all internal flags representing + 35 possible causes of Data Safety Write Protection. + + 36 7. Issue a SET UNIT CHARACTERISTICS command to the Disk + 37 MSCP layer to set the unit's Software Write Protect + 38 status to the "inclusive-or" of the "Write Protect (data + 39 safety)" and "Write Protect (software)" unit flags in + 40 the unit's context. If the command fails, exit. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-16 + Actions Before First Modification 11 June 1992 + + + 1 8. This algorithm has completed. Proceed with the + 2 modification attempt that caused it to be invoked. + + + 3 There are four places where this algorithm can fail. They are + 4 the multicopy read operation in step 2, the attempt to "fix" an + 5 invalid RCT in step 3, the multicopy write in step 4, and the SET + 6 UNIT CHARACTERISTICS in step 7. If the algorithm fails at one of + 7 these steps, the modification attempt fails with the status code + 8 resulting from the failed step. Also, the unit is forced + 9 "Unit-Available" to all class drivers. The handling of other + 10 commands that may be outstanding is identical to that which is + 11 done for a failed replacement operation. + + 12 Note that execution of the above procedure may complete the + 13 incomplete replacement that was causing a unit to be Data Safety + 14 Write Protected. This yields the possibility that Data Safety + 15 Write Protection may disappear spontaneously, as the result of a + 16 bad block replacement. + + 17 8.11 MSCP Control Message Format Changes + + 18 This section describes the changes in control message formats + 19 between standard Disk MSCP and MSCP with Controller Initiated Bad + 20 Block Replacement. All messages and fields that are not + 21 mentioned in this section are identical to the descriptions found + 22 in Chapter 6, "Minimal MSCP Command Set" and if the controller + 23 provides Multihost Support, Chapter 7, "Multihost Support." + + 24 8.11.1 Controller Flags + + 25 The Controller Initiated Bad Block Replacement controller flag is + 26 returned set in the "controller flags" field of a SET CONTROLLER + 27 CHARACTERISTICS command's end message only if the server supports + 28 Controller Initiated Bad Block Replacement on all disk types that + 29 can be connected to it. Note that a controller is expressly + 30 permitted to implement replacement on some disk types but not on + 31 others. In that case this flag shall be returned clear. See + 32 also the description of this flag in Section 5.6, "Controller + 33 Flags" for additional detail. + + 34 8.11.2 Unit Flags + + 35 The Controller Initiated Bad Block Replacement unit flag is + 36 returned set in the "unit flags" field of the GET UNIT STATUS, + 37 ONLINE, and SET UNIT CHARACTERISTICS command's end messages only + 38 if bad block replacement for this unit will be performed by the + 39 controller. This flag is returned clear if the host is + 40 responsible for bad block replacement for this unit. (As noted + 41 in the previous section, a controller may implement replacement + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-17 + MSCP Control Message Format Changes 11 June 1992 + + + 1 on some disk types but not on others.) See also the description + 2 of this flag in Section 5.7, "Unit Flags" for additional detail. + + 3 8.11.3 Transfer Commands + + 4 The changes described in this section apply to the ACCESS, + 5 COMPARE HOST DATA, ERASE, READ, and WRITE commands. + + 6 The meaning of transfers addressed to the Replacement Control + 7 Table (RCT) portion of the disk is substantially changed; see + 8 Section 8.4, "Replacement Control Table Access." For transfers + 9 addressed to the host area of the disk, the only change is that + 10 the controller itself replaces bad blocks rather than the host. + + 11 Since the controller is replacing bad blocks, the "Bad Block + 12 Reported" end flag will always be clear and the contents of the + 13 "first bad block" end message field will always be undefined. + 14 The "Bad Block Unreported" end flag is set, however, if the + 15 transfer encountered one or more bad blocks. The specific blocks + 16 that were bad and the results of their replacement are reported + 17 only via error log messages. + + 18 8.11.4 ONLINE and SET UNIT CHARACTERISTICS Commands + + 19 Modifiers: + + 20 The "Ignore Media Format Error" modifier is changed from + 21 standard Disk MSCP. Note that this modifier is only allowed + 22 on the ONLINE command. Its revised meaning is as follows: + + 23 Ignore Media Format Error + + 24 This modifier is only allowed on the ONLINE command. In + 25 standard Disk MSCP, this modifier suppresses media + 26 (volume) format validity checking. With Controller + 27 Initiated Bad Block Replacement, this modifier also + 28 suppresses the Replacement Control Table (RCT) checks + 29 normally performed when a unit is brought "Unit-Online." + + 30 Normally, when a unit is brought "Unit-Online," the MSCP + 31 server makes several accesses to the unit. In standard + 32 Disk MSCP, these accesses merely verify volume format + 33 validity. With Controller Initiated Bad Block + 34 Replacement, the MSCP server also accesses the RCT to + 35 check the context information stored there. If any of + 36 these accesses fail, the unit cannot be brought + 37 "Unit-Online" and a Media Format Error is returned. This + 38 modifier suppresses all accesses performed when bringing + 39 the unit "Unit-Online," thus allowing it to be brought + 40 "Unit-Online" when these accesses would fail. The + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-18 + MSCP Control Message Format Changes 11 June 1992 + + + 1 penalty for using this modifier is that data on the + 2 volume may be corrupted. + + 3 The exact checks that are suppressed by this modifier + 4 are: + + 5 1. The format validity checks done by standard Disk + 6 MSCP. + + 7 2. Checking for an incomplete bad block replacement + 8 operation, and completing it if possible. + + + 9 The unit is always brought "Unit-Online" with Data Safety + 10 Write Protection disabled (i.e., writes allowed). + + 11 Setting this modifier inhibits all bad block replacement + 12 attempts and may optionally provide additional access to + 13 the RCT. + + 14 Note that these checks exist to prevent data loss or + 15 corruption. Therefore this modifier should only be used + 16 in exceptional circumstances, such as backing up a known + 17 bad disk. In particular, the results of any attempt to + 18 write to the unit are undefined when this modifier has + 19 been set. + + 20 Status Codes: + + 21 The following new subcodes may be returned with the "Success" + 22 status code for the ONLINE and SET UNIT CHARACTERISTICS + 23 commands. Remember that the subcodes are bit flags, and that + 24 the subcode field contains the "logical-or" of all applicable + 25 subcodes, including the subcodes defined in standard Disk + 26 MSCP. + + 27 Success (subcode "Incomplete Replacement") + + 28 The volume has a partially completed bad block + 29 replacement operation, and the attempt to complete it did + 30 not succeed. The cause of the attempt's failure is + 31 reported with an error log message. This subcode merely + 32 reports that there is a partially completed replacement + 33 on the volume. Note that the unit will be Data Safety + 34 Write Protected whenever this subcode is returned. + + 35 Success (subcode "Invalid RCT") + + 36 The volume has an invalid RCT or, if the disk uses a + 37 nonstandard means of bad block replacement, some data + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-19 + MSCP Control Message Format Changes 11 June 1992 + + + 1 structure used to control bad block replacement is + 2 invalid. The checks, if any, that the controller + 3 performs to verify the RCT's validity are specified by + 4 the Digital Storage Architecture Disk Format and/or the + 5 controller's functional specification. Note that the + 6 unit will be Data Safety Write Protected whenever this + 7 subcode is returned. + + 8 "Media Format Errors" may be reported for SET UNIT + 9 CHARACTERISTICS, which could not happen with standard Disk + 10 MSCP. + + 11 8.11.5 GET UNIT STATUS Command + + 12 End Message Fields: + + 13 RCT size + 14 copies + + 15 The interpretation and meaning of these fields is + 16 identical to standard Disk MSCP. However, the values + 17 returned are altered as described in Section 8.4, + 18 "Replacement Control Table Access." + + 19 Status Codes: + + 20 The following new subcodes may be returned with the "Success" + 21 status code for the GET UNIT STATUS commands. These subcodes + 22 are identical to the new subcodes returned for the ONLINE and + 23 SET UNIT CHARACTERISTICS commands; see the previous section + 24 for their description. Remember that the subcodes are bit + 25 flags, and that the subcode field contains the "logical-or" + 26 of all applicable subcodes, including the subcodes defined in + 27 standard Disk MSCP. + + 28 Success (subcode "Incomplete Replacement") + + 29 Success (subcode "Invalid RCT") + + 30 8.11.6 REPLACE Command + + 31 This command is illegal with Controller Initiated Bad Block + 32 Replacement. As its sole use is to allow hosts to perform bad + 33 block replacement, it is not needed. This command, if issued to + 34 a unit on which the controller is performing bad block + 35 replacement is treated as an "Invalid Command" ("invalid opcode" + 36 protocol error. See "Invalid Command" status in Section 5.5, + 37 "Status Codes"). + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER INITIATED BAD BLOCK REPLACEMENT Page 8-20 + Host Support For Controller Initiated Bad Block ... 11 June 1992 + + + 1 8.12 Host Support For Controller Initiated Bad Block Replacement + + 2 The only specialized support that host class drivers must provide + 3 for Controller Initiated Bad Block Replacement is at the time the + 4 host brings a unit "Unit-Online." That is, these actions shall + 5 be performed immediately after the ONLINE command completes. The + 6 specific actions are: + + 7 1. Check the "Controller Initiated Bad Block Replacement" + 8 unit flag. If this flag is clear, the class driver + 9 shall examine the Replacement Control Table (RCT) for an + 10 incomplete replacement and complete it if one is + 11 present. If this flag is set, the class driver shall + 12 skip this step, as the server has already performed it. + + 13 2. If either of the "Incomplete Replacement" or "Invalid + 14 RCT" subcode flags is set, report the problem to the + 15 user or take whatever other action is dictated by + 16 operating system policy. For the "Incomplete + 17 Replacement" flag, this might be a request to remount + 18 the unit write enabled so that the replacement can be + 19 completed. For the "Invalid RCT" flag, this might be a + 20 warning that the volume has been corrupted. + + + 21 In all other cases, the Bad Block Replacement layer reports + 22 things in a manner that is transparent to class drivers. It will + 23 never set the "Bad Block Reported" end flag, so the class driver + 24 will never attempt a replacement. If the class driver attempts + 25 to read the RCT, the reported geometry is such that the multicopy + 26 read algorithm will work correctly. + + 27 Aside from the above, a class driver that only supports servers + 28 with Controller Initiated Bad Block Replacement need not + 29 implement the Host Initiated Bad Block Replacement, multicopy + 30 read, and multicopy write algorithms. It also need never check + 31 the RCT for incomplete replacements. Such a class driver should, + 32 however, check the "Controller Initiated Bad Block Replacement" + 33 unit flag whenever it brings a unit "Unit-Online." If the flag + 34 is clear, then that unit does not have Controller Initiated Bad + 35 Block Replacement, so it cannot be supported by the class driver. + 36 The class driver should immediately issue an AVAILABLE command to + 37 the unit and refuse to access it. + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-1 + 11 June 1992 + + + 1 APPENDIX A + + 2 OPCODE, FLAG, AND OFFSET DEFINITIONS + + + 3 Table A-1: Control Message Opcodes + + 4 +--------------------+--------------------------+-----------------------------------------+ + 5 | Opcode Value | | | + 6 | (see Note 1) | Preferred Mnemonics | | + 7 |------+------+------+--------+-----------------+ Control Message Type | + 8 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 9 +------+------+------+--------+-----------------+-----------------------------------------+ + 10 | 0 | 00 | 00 | - | - | reserved -- must not be assigned | + 11 +------+------+------+--------+-----------------+-----------------------------------------+ + 12 | Standard Command Messages | | + 13 | 1 | 01 | 01 | OP.ABO | MSCP$K_OP_ABORT | ABORT | + 14 | 16 | 20 | 10 | OP.ACC | MSCP$K_OP_ACCES | ACCESS | + 15 | 8 | 10 | 08 | OP.AVL | MSCP$K_OP_AVAIL | AVAILABLE | + 16 | 32 | 40 | 20 | OP.CMP | MSCP$K_OP_COMP | COMPARE HOST DATA | + 17 | 11 | 13 | 0B | OP.DAP | MSCP$K_OP_DTACP | DETERMINE ACCESS PATHS | + 18 | 13 | 15 | 0D | OP.DCD | MSCP$K_OP_DCD | DISK COPY DATA | + 19 | 6 | 6 | 6 | OP.DSP | MSCP$K_OP_DISPL | DISPLAY | + 20 | 18 | 22 | 12 | OP.ERS | MSCP$K_OP_ERASE | ERASE | + 21 | 24 | 30 | 18 | OP.FMT | MSCP$K_OP_FMT | FORMAT | + 22 | 17 | 21 | 11 | - | - | reserved (see Note 4) | + 23 | 19 | 23 | 13 | - | - | reserved (see Note 4) | + 24 | 2 | 02 | 02 | OP.GCS | MSCP$K_OP_GTCMD | GET COMMAND STATUS | + 25 | 3 | 03 | 03 | OP.GUS | MSCP$K_OP_GTUNT | GET UNIT STATUS | + 26 | 9 | 11 | 09 | OP.ONL | MSCP$K_OP_ONLIN | ONLINE | + 27 | 33 | 41 | 21 | OP.RD | MSCP$K_OP_READ | READ | + 28 | 20 | 24 | 14 | OP.RPL | MSCP$K_OP_REPLC | REPLACE | + 29 | 4 | 04 | 04 | OP.SCC | MSCP$K_OP_STCON | SET CONTROLLER CHARACTERISTICS | + 30 | 10 | 12 | 0A | OP.SUC | MSCP$K_OP_STUNT | SET UNIT CHARACTERISTICS | + 31 | 48 | 60 | 30 | OP.TEC | MSCP$K_OP_TERCO | TERMINATE CLASS DRIVER/SERVER CONNECTION| + 32 | 34 | 42 | 22 | OP.WR | MSCP$K_OP_WRITE | WRITE | + 33 | 25 | 31 | 19 | OP.WHM | MSCP$K_OP_WRHIM | WRITE HISTORY MANAGEMENT | + 34 +------+------+------+--------+-----------------+-----------------------------------------+ + 35 | Optional Command Messages: | + 36 | 5 | 05 | 05 | OP.ANM | MSCP$K_OP_ACCNM | ACCESS NONVOLATILE MEMORY | + 37 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-2 + 11 June 1992 + + + + 1 Table A-1: Control Message Opcodes (cont.) + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Opcode Value | | | + 4 | (see Note 1) | Preferred Mnemonics | | + 5 |------+------+------+--------+-----------------+ Control Message Type | + 6 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 7 +------+------+------+--------+-----------------+-----------------------------------------+ + 8 | Implementation Specific Command Messages (see Note 2): | + 9 | 40 | 50 | 28 | OP.SP1 | MSCP$K_OP_SPEC1 | # 1 | + 10 | 41 | 51 | 29 | OP.SP2 | MSCP$K_OP_SPEC2 | # 2 | + 11 | 42 | 52 | 2A | OP.SP3 | MSCP$K_OP_SPEC3 | # 3 | + 12 | 43 | 53 | 2B | OP.SP4 | MSCP$K_OP_SPEC4 | # 4 | + 13 | 44 | 54 | 2C | OP.SP5 | MSCP$K_OP_SPEC5 | # 5 | + 14 | 45 | 55 | 2D | OP.SP6 | MSCP$K_OP_SPEC6 | # 6 | + 15 | 46 | 56 | 2E | OP.SP7 | MSCP$K_OP_SPEC7 | # 7 | + 16 | 47 | 57 | 2F | OP.SP8 | MSCP$K_OP_SPEC8 | # 8 | + 17 +------+------+------+--------+-----------------+-----------------------------------------+ + 18 | End Messages (see Note 3): | | | + 19 | 128 | 200 | 80 | OP.END | MSCP$K_OP_END | End message flag | + 20 +------+------+------+--------+-----------------+-----------------------------------------+ + 21 | Attention Messages: | | | + 22 | 64 | 100 | 40 | OP.AVA | MSCP$K_OP_AVATN | AVAILABLE | + 23 | 65 | 101 | 41 | OP.DUP | MSCP$K_OP_DUPUN | DUPLICATE UNIT NUMBER | + 24 | 66 | 102 | 42 | OP.ACP | MSCP$K_OP_ACPTH | ACCESS PATH | + 25 +------+------+------+--------+-----------------+-----------------------------------------+ + 26 | Notes: 1. Message opcode bits 6 and 7 indicate the type of message (command, end, or | + 27 | attention). | + 28 | | + 29 | 2. The implementation specific command opcodes may be used by manufacturing test | + 30 | equipment to verify controller operation. They shall not be issued by normal | + 31 | host software, or when a host is running anything other than stand-alone | + 32 | diagnostics. The operation of these commands when issued under anything but | + 33 | the expected manufacturing and/or diagnostic environment is UNDEFINED. | + 34 | | + 35 | 3. End message endcodes are formed by adding the end message flag to the command | + 36 | opcode. For example, a READ command's end message contains (using 16 bit | + 37 | mnemonics) the value OP.RD+OP.END in its endcode field. As described under | + 38 | "Invalid Command" status in Section 5.5, "Status Codes" an MSCP protocol | + 39 | violation produces an Invalid Command end message which contains just the | + 40 | end message flag (OP.END) in its endcode field. | + 41 | | + 42 | 4. Opcodes 17 and 19 (decimal) were originally reserved as a place holder for | + 43 | use in Volume Shadowing and Data Caching. Both Host Based Volume Shadowing | + 44 | and Caching Support have been defined in MSCP, however neither opcode was | + 45 | used. In order to ensure compatibility, controllers shall treat these | + 46 | opcodes as a no-operation (see Section 6.1.1). | + 47 +-----------------------------------------------------------------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-3 + 11 June 1992 + + + 1 Table A-2: Command Modifiers + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | Generic Command Modifier: | | | + 9 | 13 | 20000 | 2000 | MD.CSE | MSCP$x_MD_CLSEX | Clear Serious Exception (see Note 3) | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | ACCESS, COMPARE HOST DATA, ERASE, READ, REPLACE, and WRITE Command Modifier: | + 12 | 15 |100000 | 8000 | MD.EXP | MSCP$x_MD_EXPRS | Express Request | + 13 +------+-------+------+--------+-----------------+----------------------------------------+ + 14 | ACCESS, COMPARE HOST DATA, ERASE, READ, and WRITE Command Modifiers: | + 15 | 8 | 400 | 100 | MD.SER | MSCP$x_MD_SEREC | Suppress Error Recovery | + 16 +------+-------+------+--------+-----------------+----------------------------------------+ + 17 | ACCESS, COMPARE HOST DATA, READ, and WRITE Command Modifier: | + 18 | 9 | 1000 | 200 | MD.SEC | MSCP$x_MD_SECOR | Suppress Error Correction | + 19 +------+-------+------+--------+-----------------+----------------------------------------+ + 20 | AVAILABLE Command Modifiers: | | + 21 | 4 | 20 | 10 | - | - | "Bundled Shadowing" (see Note 5) | + 22 | 1 | 2 | 2 | MD.ALL | MSCP$x_MD_ALLCD | All Class Drivers (see Note 4) | + 23 | 0 | 1 | 1 | MD.SPD | MSCP$x_MD_SPNDW | Spin-down | + 24 +------+-------+------+--------+-----------------+----------------------------------------+ + 25 | AVAILABLE, ONLINE, and SET UNIT CHARACTERISTICS Command Modifier: | + 26 | 5 | 40 | 20 | MD.EXC | MSCP$x_MD_EXCAC | Exclusive Access (see Note 4) | + 27 +------+-------+------+--------+-----------------+----------------------------------------+ + 28 | DISPLAY Command modifier: | | | + 29 | 1 | 2 | 2 | MD.MBI | MSCP$x_MD_MBI | Must Be Implemented | + 30 +------+-------+------+--------+-----------------+----------------------------------------+ + 31 | ERASE and WRITE Command Modifiers: | + 32 | 12 | 10000 | 1000 | MD.ERR | MSCP$x_MD_ERROR | Force Error | + 33 +------+-------+------+--------+-----------------+----------------------------------------+ + 34 | GET UNIT STATUS Command Modifier: | | + 35 | 0 | 1 | 1 | MD.NXU | MSCP$x_MD_NXUNT | Next Unit | + 36 +------+-------+------+--------+-----------------+----------------------------------------+ + 37 | ONLINE Command Modifiers: | | | + 38 | 1 | 2 | 2 | MD.IMF | MSCP$x_MD_IGNMF | Ignore Media Format Error | + 39 | 0 | 1 | 1 | MD.RIP | MSCP$x_MD_RIP | Allow Self Destruction | + 40 +------+-------+------+--------+-----------------+----------------------------------------+ + 41 | ONLINE and SET UNIT CHARACTERISTICS Command Modifiers: | + 42 | 4 | 20 | 10 | - | - | "Bundled Shadowing" (see Note 5) | + 43 | 2 | 4 | 4 | MD.SWP | MSCP$x_MD_STWRP | Enable Set Write Protect | + 44 +------+-------+------+--------+-----------------+----------------------------------------+ + 45 | | READ, and WRITE Command Modifier: | + 46 | 14 | 40000 | 4000 | MD.CMP | MSCP$x_MD_COMP | Compare | + 47 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-4 + 11 June 1992 + + + + 1 Table A-2: Command Modifiers (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | SET CONTROLLER CHARACTERISTICS Command Modifier: | + 9 | 0 | 1 | 1 | MD.CRN | MSCP$x_MD_CRNPR | Connection Reference Number Present | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | ERASE, WRITE, and DISK COPY DATA Command Modifiers: | + 12 | 3 | 10 | 8 | MD.HIL | MSCP$x_MD_HISLO | History Log | + 13 | 7 | 200 | 80 | MD.REU | MSCP$x_MD_REUSE | Reuse Entry | + 14 +------+-------+------+--------+-----------------+----------------------------------------+ + 15 | DISK COPY DATA Command Modifiers: | + 16 | 0 | 1 | 1 | MD.LSU | MSCP$x_MD_LOCSU | Local Source Unit | + 17 | 1 | 2 | 2 | MD.ECP | MSCP$x_MD_ESTCP | Establish Communications Paths | + 18 | 2 | 4 | 4 | MD.RCP | MSCP$x_MD_RETCP | Retain Communications Paths | + 19 +------+-------+------+--------+-----------------+----------------------------------------+ + 20 | REPLACE Command Modifier: | | | + 21 | 0 | 1 | 1 | MD.PRI | MSCP$x_MD_PRIMR | Primary Replacement Block | + 22 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-5 + 11 June 1992 + + + + 1 Table A-2: Command Modifiers (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | | WRITE Command Modifier: | | | + 9 | | 4 | 20 | 10 | MD.SWL | MSCP$x_MD_SUPWL | Supplement Write Log | + 10 | +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | Notes: 1. The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 12 | defined as a bit number (offset) or an "M" if defined as a mask. | + 13 | | + 14 | 2. The command modifiers are listed above according to the command(s) for which | + 15 | they are allowable. All modifiers that are not explicitly allowed for a | + 16 | command are reserved and shall be treated in accordance with the requirements | + 17 | for reserved fields described in Section 5.2, "Reserved and Undefined | + 18 | Fields." | + 19 | | + 20 | 3. For disk controllers the Clear Serious Exception modifier is allowed for all | + 21 | commands except ABORT, ACCESS NONVOLATILE MEMORY, DETERMINE ACCESS PATHS, GET | + 22 | COMMAND STATUS, and SET CONTROLLER CHARACTERISTICS. That modifier has no | + 23 | function for disk class devices. Although allowed, disk controllers shall | + 24 | ignore its setting. Refer to the Tape Mass Storage Control Protocol | + 25 | Specification (TMSCP) for tape class device use details. | + 26 | | + 27 | 4. The modifiers that reference this note have meaning only for controllers that | + 28 | provide Multihost Support. Controllers which do not shall ignore those | + 29 | modifiers. | + 30 | | + 31 | 5. The modifiers that reference this note have meaning only for VMS and for HSC | + 32 | controllers that provided "Bundled Shadowing" support, See Appendix E, | + 33 | "Waivers and Exceptions", Section E.3.1.1.7, "Bundled Shadowing Definitions". | + 34 +-----------------------------------------------------------------------------------------+ + + + 35 Table A-3: End Message Flags + + 36 +------+--------------+--------------------------+----------------------------------------+ + 37 | Bit | Bit Mask | Preferred Mnemonics | | + 38 |Number+-------+------+--------+-----------------+ End Message Flag | + 39 | | Octal | Hex. | 16 bit | 32 bit | | + 40 | | | | | (see Note 1) | | + 41 +------+-------+------+--------+-----------------+----------------------------------------+ + 42 | 7 | 200 | 80 | EF.BBR | MSCP$x_EF_BBLKR | Bad Block Reported | + 43 +------+-------+------+--------+-----------------+----------------------------------------+ + 44 | 6 | 100 | 40 | EF.BBU | MSCP$x_EF_BBLKU | Bad Block Unreported | + 45 +------+-------+------+--------+-----------------+----------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-6 + 11 June 1992 + + + + 1 Table A-3: End Message Flags (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ End Message Flag | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | 5 | 40 | 20 | EF.LOG | MSCP$x_EF_ERLOG | Error Log Generated | + 9 +------+-------+------+--------+-----------------+----------------------------------------+ + 10 | 4 | 20 | 10 | EF.SEX | MSCP$x_EF_SEREX | Serious Exception (see Note 2) | + 11 +------+-------+------+--------+-----------------+----------------------------------------+ + 12 | 3 | 10 | 8 | EF.ALF | MSCP$x_EF_ALLOF | Allocation Failure | + 13 +------+-------+------+--------+-----------------+----------------------------------------+ + 14 | 2 | 4 | 4 | EF.HIL | MSCP$x_EF_HISLO | History Logged | + 15 +------+-------+------+--------+-----------------+----------------------------------------+ + 16 | 0 | 1 | 1 | EF.CPR | MSCP$x_EF_CPRET | Communication Paths Retained | + 17 +------+-------+------+--------+-----------------+----------------------------------------+ + 18 | Notes: 1. The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 19 | defined as a bit number (offset) or an "M" if defined as a mask. | + 20 | | + 21 | 2. The Serious Exception end message flag is only applicable to tape class | + 22 | devices. It will never be returned by disk controllers. Refer to the Tape | + 23 | Mass Storage Control Protocol Specification (TMSCP) for tape class device | + 24 | usage details. | + 25 +-----------------------------------------------------------------------------------------+ + + + 26 Table A-4: Controller Flags + + 27 +------+--------------+--------------------------+----------------------------------------+ + 28 | Bit | Bit Mask | Preferred Mnemonics | | + 29 |Number+-------+------+--------------------------+ Controller Flag | + 30 | | Octal | Hex. | 16 bit | 32 bit | | + 31 | | | | | (see Note 1) | | + 32 +------+-------+------+--------+-----------------+----------------------------------------+ + 33 | 15 |100000 | 8000 | CF.RPL | MSCP$x_CF_REPLC | Controller Initiated Bad Block | + 34 | | | | | | Replacement | + 35 +------+-------+------+--------+-----------------+----------------------------------------+ + 36 | 10 | 2000 | 400 | CF.RDO | MSCP$x_CF_RDO | Restricted DISK COPY DATA Operations | + 37 +------+-------+------+--------+-----------------+----------------------------------------+ + 38 | 9 | 1000 | 200 | CF.WHL | MSCP$x_CF_WHL | Write History Logging Support | + 39 +------+-------+------+--------+-----------------+----------------------------------------+ + 40 | 8 | 400 | 100 | CF.RDC | MSCP$x_CF_RDCD | Remote Disk Copy Data | + 41 +------+-------+------+--------+-----------------+----------------------------------------+ + 42 | 7 | 200 | 80 | CF.ATN | MSCP$x_CF_ATTN | Enable Attention Messages | + 43 +------+-------+------+--------+-----------------+----------------------------------------+ + 44 | 6 | 100 | 40 | CF.MSC | MSCP$x_CF_MISC | Enable Miscellaneous Error Log Messages| + 45 +------+-------+------+--------+-----------------+----------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-7 + 11 June 1992 + + + + 1 Table A-4: Controller Flags (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------------------------+ Controller Flag | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | 5 | 40 | 20 | CF.OTH | MSCP$x_CF_OTHER | Enable Other Host's Error Log Messages | + 9 +------+-------+------+--------+-----------------+----------------------------------------+ + 10 | 4 | 20 | 10 | CF.THS | MSCP$x_CF_THIS | Enable This Host's Error Log Messages | + 11 +------+-------+------+--------+-----------------+----------------------------------------+ + 12 | 3 | 10 | 8 | CF.LDC | MSCP$x_CF_LDCD | Local Disk Copy Data | + 13 +------+-------+------+--------+-----------------+----------------------------------------+ + 14 | 2 | 4 | 4 | CF.MLH | MSCP$x_CF_MLTHS | Multihost Support | + 15 +------+-------+------+--------+-----------------+----------------------------------------+ + 16 | 1 | 2 | 2 | - | - | "Bundled Shadowing" (see Note 2) | + 17 +------+-------+------+--------+-----------------+----------------------------------------+ + 18 | 0 | 1 | 1 | CF.576 | MSCP$x_CF_576 | 576 Byte Sectors | + 19 +------+-------+------+--------+-----------------+----------------------------------------+ + 20 | Notes: 1. The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 21 | defined as a bit number (offset) or an "M" if defined as a mask. | + 22 | | + 23 | 2. The modifiers that reference this note have meaning only for VMS and for HSC | + 24 | controllers that provided "Bundled Shadowing" support, See Appendix E, | + 25 | "Waivers and Exceptions", Section E.3.1.1.7, "Bundled Shadowing Definitions". | + 26 +-----------------------------------------------------------------------------------------+ + + + 27 Table A-5: Unit Flags + + 28 +------+--------------+--------------------------+----------------------------------------+ + 29 | Bit | Bit Mask | Preferred Mnemonics | | + 30 |Number+-------+------+--------+-----------------+ Unit Flag | + 31 | | Octal | Hex. | 16 bit | 32 bit | | + 32 | | | | | (see Note 1) | | + 33 +------+-------+------+--------+-----------------+----------------------------------------+ + 34 | 15 |100000 | 8000 | UF.RPL | MSCP$x_UF_REPLC | Controller Initiated Bad Block | + 35 | | | | | | Replacement | + 36 +------+-------+------+--------+-----------------+----------------------------------------+ + 37 | 14 | 40000 | 4000 | - | - | "Bundled Shadowing" (see Note 2) | + 38 +------+-------+------+--------+-----------------+----------------------------------------+ + 39 | 13 | 20000 | 2000 | UF.WPH | MSCP$x_UF_WRTPH | Write Protect (hardware) | + 40 +------+-------+------+--------+-----------------+----------------------------------------+ + 41 | 12 | 10000 | 1000 | UF.WPS | MSCP$x_UF_WRTPS | Write Protect (software) | + 42 +------+-------+------+--------+-----------------+----------------------------------------+ + 43 | 10 | 2000 | 400 | UF.EXA | MSCP$x_UF_EXACC | Exclusive Access | + 44 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-8 + 11 June 1992 + + + + 1 Table A-5: Unit Flags (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Unit Flag | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (see Note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | 9 | 1000 | 200 | - | - | "Bundled Shadowing" (see Note 2) | + 9 +------+-------+------+--------+-----------------+----------------------------------------+ + 10 | 8 | 400 | 100 | UF.WPD | MSCP$x_UF_WRTPD | Write Protect (data safety) | + 11 +------+-------+------+--------+-----------------+----------------------------------------+ + 12 | 7 | 200 | 80 | UF.RMV | MSCP$x_UF_RMVBL | Removable Media | + 13 +------+-------+------+--------+-----------------+----------------------------------------+ + 14 | 3 | 10 | 8 | UF.WHL | MSCP$x_UF_WHL | Write History Logging Support | + 15 +------+-------+------+--------+-----------------+----------------------------------------+ + 16 | 2 | 4 | 4 | UF.576 | MSCP$x_UF_576 | 576 Byte Sectors | + 17 +------+-------+------+--------+-----------------+----------------------------------------+ + 18 | 1 | 2 | 2 | UF.CMW | MSCP$x_UF_CMPWR | Compare Writes | + 19 +------+-------+------+--------+-----------------+----------------------------------------+ + 20 | 0 | 1 | 1 | UF.CMR | MSCP$x_UF_CMPRD | Compare Reads | + 21 +------+-------+------+--------+-----------------+----------------------------------------+ + 22 | Notes: 1. The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 23 | defined as a bit number (offset) or an "M" if defined as a mask. | + 24 | | + 25 | 2. The modifiers that reference this note have meaning only for VMS and for HSC | + 26 | controllers that provided "Bundled Shadowing" support, See Appendix E, | + 27 | "Waivers and Exceptions", Section E.3.1.1.7, "Bundled Shadowing Definitions". | + 28 +-----------------------------------------------------------------------------------------+ + + + 29 Table A-6: Command Message Offsets + + 30 +--------------------+--------------------------+-------+---------------------------------+ + 31 | Offset Value | Preferred Mnemonics | Field | | + 32 +------+------+------+--------+-----------------+ Size | Field Description | + 33 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 34 +------+------+------+--------+-----------------+-------+---------------------------------+ + 35 | Generic Command Message Offsets: | | | + 36 | 0 | 0 | 0 | P.CRF | MSCP$L_CMD_REF | 4 | Command reference number | + 37 | 4 | 4 | 4 | P.UNIT | MSCP$W_UNIT | 2 | Unit number | + 38 | 6 | 6 | 6 | | | 2 | Reserved | + 39 | 8 | 10 | 8 | P.OPCD | MSCP$B_OPCODE | 1 | Opcode | + 40 | 9 | 11 | 9 | P.CAA | MSCP$B_CAA | 1 | Cache Access Attributes | + 41 | 10 | 12 | A | P.MOD | MSCP$W_MODIFIER | 2 | Modifiers | + 42 | 12 | 14 | C | P.BCNT | MSCP$L_BYTE_CNT | 4 | Byte count | + 43 | 16 | 20 | 10 | P.BUFF | MSCP$B_BUFFER | 12 | Buffer descriptor | + 44 | 28 | 34 | 1C | P.LBN | MSCP$L_LBN | 4 | Logical Block Number | + 45 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-9 + 11 June 1992 + + + + 1 Table A-6: Command Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | ABORT and GET COMMAND STATUS Command Message Offsets: | | + 8 | 12 | 14 | C | P.OTRF | MSCP$L_OUT_REF | 4 | Outstanding reference number | + 9 +------+------+------+--------+-----------------+-------+---------------------------------+ + 10 | ACCESS NONVOLATILE MEMORY Command Message Offsets: | + 11 | 12 | 14 | C | | | 4 | Reserved | + 12 | 16 | 20 | 10 | P.ANOF | MSCP$L_ANM_OFFS | 4 | Offset | + 13 | 20 | 24 | 14 | P.ANOP | MSCP$W_ANM_OPER | 2 | Operation (see Table A-12) | + 14 | 22 | 26 | 16 | P.ANDL | MSCP$W_ANM_DLGH | 2 | Data length | + 15 | 24 | 30 | 18 | P.ANMD | MSCP$T_ANM_MEMD | * | Memory data | + 16 +------+------+------+--------+-----------------+-------+---------------------------------+ + 17 | DISPLAY Command Message Offsets: | | | + 18 | 12 | 14 | 0C | P.DITM | MSCP$W_DSP_ITEM | 2 | Item | + 19 | 14 | 16 | 0E | P.DMOD | MSCP$W_DSP_MODE | 2 | Mode | + 20 | 16 | 20 | 10 | P.DTXT | MSCP$Z_DSP_TEXT | * | Display Text | + 21 +------+------+------+--------+-----------------+-------+---------------------------------+ + 22 | ONLINE and SET UNIT CHARACTERISTICS Command Message Offsets: | + 23 | 12 | 14 | C | | | 2 | Reserved | + 24 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 25 | 16 | 20 | 10 | | | 12 | Reserved | + 26 | 20 | 24 | 14 | - | - | 4 | "Bundled Shadowing" (see note 2)| + 27 | 24 | 30 | 18 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 28 | 28 | 34 | 1C | P.DVPM | MSCP$L_DEV_PARM | 4 | Device dependent parameters | + 29 | 32 | 40 | 20 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 30 | 34 | 42 | 22 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 31 +------+------+------+--------+-----------------+-------+---------------------------------+ + 32 | REPLACE Command Message Offsets: | | | + 33 | 12 | 14 | C | P.RBN | MSCP$L_RBN | 4 | Replacement block number | + 34 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-10 + 11 June 1992 + + + + 1 Table A-6: Command Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | DISK COPY DATA Command Message Offsets: | + 8 | 12 | 14 | 0C | P.LBC | MSCP$L_LBCOUNT | 4 | Logical block count | + 9 | 16 | 20 | 10 | P.SUN | MSCP$W_SRC_UNUM | 2 | Source unit number | + 10 | 18 | 22 | 12 | | | 2 | Reserved | + 11 | 20 | 24 | 14 | P.SUI | MSCP$Q_SRC_UID | 8 | Source unit identifier | + 12 | 28 | 34 | 1C | P.DBN | MSCP$L_DEST_LBN | 4 | Destination LBN | + 13 | 32 | 40 | 20 | P.HRN | MSCP$W_HRN | 2 | HRN or Entloc | + 14 | 34 | 42 | 22 | P.EID | MSCP$W_ENTRY_ID | 2 | Entry ID | + 15 | 36 | 44 | 24 | | | 4 | Reserved | + 16 | 40 | 50 | 28 | P.SLBN | MSCP$L_SRC_LBN | 4 | Source LBN | + 17 | 44 | 54 | 2C | P.PAD | MSCP$Q_PORT_ADR | 8 | Source unit's subsystem port | + 18 | | | | | | | address | + 19 | 52 | 64 | 34 | P.SAD | MSCP$Q_SYS_ADR | 8 | Source unit's subsystem system | + 20 | | | | | | | address | + 21 +------+------+------+--------+-----------------+-------+---------------------------------+ + 22 | TERMINATE CLASS DRIVER/SERVER CONNECTION Command Message Offsets: | + 23 | 12 | 14 | 0C | | 24 | Reserved | + 24 +------+------+------+--------+-----------------+-------+---------------------------------+ + 25 | WRITE HISTORY MANAGEMENT Command Message Offsets: | + 26 | 16 | 20 | 10 | P.HBD | MSCP$B_WRHIS_BD | 12 | Write history buffer descriptor | + 27 | 28 | 34 | 1C | P.OPER | MSCP$W_OPERAT | 2 | Operation | + 28 | 30 | 36 | 1E | P.OFST | MSCP$W_OFFSET | 2 | Offset | + 29 +------+------+------+--------+-----------------+-------+---------------------------------+ + 30 | TERMINATE CLASS DRIVER/SERVER CONNECTION and SET CONTROLLER CHARACTERISTICS Command | + 31 | Message Offset: | + 32 | 32 | 40 | 20 | P.CRN | MSCP$W_CONN_REF | 2 | Connection reference number | + 33 +------+------+------+--------+-----------------+-------+---------------------------------+ + 34 | DISK COPY DATA, WRITE HISTORY MANAGEMENT, ERASE, and WRITE Command Message Offsets: | + 35 | 32 | 40 | 20 | P.HRN | MSCP$W_HRN | 2 | HRN or Entry Locator | + 36 | 34 | 42 | 22 | P.EID | MSCP$W_ENTRY_ID | 2 | Entry id | + 37 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-11 + 11 June 1992 + + + + 1 Table A-6: Command Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | SET CONTROLLER CHARACTERISTICS Command Message Offsets: | + 8 | 4 | 4 | 4 | P.ALLC | MSCP$B_CNT_ALCS | 1 | Allocation Class | + 9 | (Multihost only) | + 10 | 12 | 14 | C | P.VRSN | MSCP$W_VERSION | 2 | MSCP version | + 11 | 14 | 16 | E | P.CNTF | MSCP$W_CNT_FLGS | 2 | Controller flags | + 12 | 16 | 20 | 10 | P.HTMO | MSCP$W_HST_TMO | 2 | Host timeout | + 13 | 18 | 22 | 12 | | | 2 | Reserved | + 14 | 20 | 24 | 14 | P.TIME | MSCP$Q_TIME | 8 | Quad-word time and date | + 15 +------+------+------+--------+-----------------+-------+---------------------------------+ + 16 | Notes: 1. An asterisk (*) in the field size indicates that the size varies. | + 17 | | + 18 | 2. The modifiers that reference this note have meaning only for VMS and for HSC | + 19 | controllers that provided "Bundled Shadowing" support, See Appendix E, | + 20 | "Waivers and Exceptions", Section E.3.1.1.7, "Bundled Shadowing Definitions". | + 21 +-----------------------------------------------------------------------------------------+ + + + 22 Table A-7: End and Attention Message Offsets + + 23 +--------------------+--------------------------+-------+---------------------------------+ + 24 | Offset Value | Preferred Mnemonics | Field | | + 25 +------+------+------+--------+-----------------+ Size | Field Description | + 26 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 27 +------+------+------+--------+-----------------+-------+---------------------------------+ + 28 | Generic End Message Offsets: | | | + 29 | 0 | 0 | 0 | P.CRF | MSCP$L_CMD_REF | 4 | Command reference number | + 30 | 4 | 4 | 4 | P.UNIT | MSCP$W_UNIT | 2 | Unit number | + 31 | 6 | 6 | 6 | P.SEQ | MSCP$W_SEQ_NUM | 2 | Sequence number (LAST error log)| + 32 | 8 | 10 | 8 | P.OPCD | MSCP$B_OPCODE | 1 | Opcode (also called endcode) | + 33 | 9 | 11 | 9 | P.FLGS | MSCP$B_FLAGS | 1 | End message flags | + 34 | 10 | 12 | A | P.STS | MSCP$W_STATUS | 2 | Status | + 35 | 12 | 14 | C | P.BCNT | MSCP$L_BYTE_CNT | 4 | Byte count | + 36 | 16 | 20 | 10 | | | 12 | Reserved | + 37 | 28 | 34 | 1C | P.FBBK | MSCP$L_FRST_BAD | 4 | First bad block | + 38 +------+------+------+--------+-----------------+-------+---------------------------------+ + 39 | ABORT and GET COMMAND STATUS End Message Offsets: | | + 40 | 12 | 14 | C | P.OTRF | MSCP$L_OUT_REF | 4 | Outstanding reference number | + 41 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-12 + 11 June 1992 + + + + 1 Table A-7: End and Attention Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | ACCESS NONVOLATILE MEMORY End Message Offsets: | + 8 | 12 | 14 | C | P.ANSZ | MSCP$L_ANM_SIZE | 4 | Memory Size | + 9 | 16 | 20 | 10 | P.ANOF | MSCP$L_ANM_OFFS | 4 | Offset | + 10 | 20 | 24 | 14 | P.ANOP | MSCP$W_ANM_OPER | 2 | Operation (see Table A-12) | + 11 | 22 | 26 | 16 | P.ANDL | MSCP$W_ANM_DLGH | 2 | Data length | + 12 | 24 | 30 | 18 | P.ANMD | MSCP$T_ANM_MEMD | * | Memory data | + 13 +------+------+------+--------+-----------------+-------+---------------------------------+ + 14 | AVAILABLE Attention Message Offsets: | + 15 | 12 | 14 | C | P.MLUN | MSCP$W_MULT_UNT | 2 | Multiunit code | + 16 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 17 | 16 | 20 | 10 | | | 4 | Undefined | + 18 | 20 | 24 | 14 | P.UNTI | MSCP$Q_UNIT_ID | 8 | Unit identifier | + 19 | 28 | 34 | 1C | P.MEDI | MSCP$L_MEDIA_ID | 4 | Media type identifier | + 20 | 32 | 40 | 20 | - | - | * | Undefined | + 21 +------+------+------+--------+-----------------+-------+---------------------------------+ + 22 | GET COMMAND STATUS End Message Offsets: | | | + 23 | 16 | 20 | 10 | P.CMST | MSCP$L_CMD_STS | 4 | Command status | + 24 +------+------+------+--------+-----------------+-------+---------------------------------+ + 25 | GET UNIT STATUS End Message Offsets: | | | + 26 | 12 | 14 | C | P.MLUN | MSCP$W_MULT_UNT | 2 | Multiunit code | + 27 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 28 | 16 | 20 | 10 | P.SPDL | MSCP$B_SPINDLES | 1 | Spindles | + 29 | 17 | 21 | 11 | | | 3 | Reserved | + 30 | 20 | 24 | 14 | P.UNTI | MSCP$Q_UNIT_ID | 8 | Unit identifier | + 31 | 28 | 34 | 1C | P.MEDI | MSCP$L_MEDIA_ID | 4 | Media type identifier | + 32 | 32 | 40 | 20 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 33 | 34 | 42 | 22 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 34 | 36 | 44 | 24 | P.TRCK | MSCP$W_TRACK | 2 | Track size | + 35 | 38 | 46 | 26 | P.GRP | MSCP$W_GROUP | 2 | Group size | + 36 | 40 | 50 | 28 | P.CYL | MSCP$W_CYLINDER | 2 | Cylinder size | + 37 | 42 | 52 | 2A | P.USVR | MSCP$B_UNIT_SVR | 1 | Unit software version | + 38 | 43 | 53 | 2B | P.UHVR | MSCP$B_UNIT_HVR | 1 | Unit hardware version | + 39 | 44 | 54 | 2C | P.RCTS | MSCP$W_RCT_SIZE | 2 | RCT table size | + 40 | 46 | 56 | 2E | P.RBNS | MSCP$W_RBNS | 1 | RBNs / track | + 41 | 47 | 57 | 2F | P.RCTC | MSCP$B_RCT_CPYS | 1 | RCT copies | + 42 +------+------+------+--------+-----------------+-------+---------------------------------+ + 43 | GET UNIT STATUS, ONLINE, and SET UNIT CHARACTERISTICS End Message and ACCESS PATH and | + 44 | AVAILABLE Attention Message offsets: | + 45 | 52 | 64 | 34 | P.NAME | MSCP$Z_NAME | 16 | Unit name (counted string) | + 46 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-13 + 11 June 1992 + + + + 1 Table A-7: End and Attention Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | ONLINE and SET UNIT CHARACTERISTICS End Messages: | + 8 | 12 | 14 | C | P.MLUN | MSCP$W_MULT_UNT | 2 | Multiunit code | + 9 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 10 | 16 | 20 | 10 | P.SPDL | MSCP$B_SPINDLES | 1 | Spindles | + 11 | 17 | 21 | 11 | | | 3 | Reserved | + 12 | 20 | 24 | 14 | P.UNTI | MSCP$Q_UNIT_ID | 8 | Unit identifier | + 13 | 28 | 34 | 1C | P.MEDI | MSCP$L_MEDIA_ID | 4 | Media type identifier | + 14 | 32 | 40 | 20 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 15 | 34 | 42 | 22 | - | - | 2 | "Bundled Shadowing" (see note 2)| + 16 | | | | | | | Note 2) | + 17 | 36 | 44 | 24 | P.UNSZ | MSCP$L_UNT_SIZE | 4 | Unit size | + 18 | 40 | 50 | 28 | P.VSER | MSCP$L_VOL_SER | 4 | Volume serial number | + 19 +------+------+------+--------+-----------------+-------+---------------------------------+ + 20 | DISK COPY DATA End Message Offsets: | + 21 | 12 | 14 | 0C | P.LBC | MSCP$L_LBCOUNT | 4 | Logical block count | + 22 | 16 | 20 | 10 | P.SCS | MSCP$Z_SBC_STS | 16 | Subcommand status | + 23 +------+------+------+--------+-----------------+-------+---------------------------------+ + 24 | TERMINATE CLASS DRIVER/SERVER CONNECTION and SET CONTROLLER CHARACTERISTICS End Message | + 25 | Offset: | + 26 | 32 | 40 | 20 | P.CRN | MSCP$W_CONN_REF | 2 | Connection reference number | + 27 +------+------+------+--------+-----------------+-------+---------------------------------+ + 28 | DISK COPY DATA, WRITE HISTORY MANAGEMENT, ERASE, and WRITE End Message Offsets: | + 29 | 32 | 40 | 20 | P.ELO | MSCP$W_ENT_LOC | 2 | Entry locator | + 30 | 34 | 42 | 22 | P.EID | MSCP$W_ENT_ID | 2 | Entry id | + 31 +------+------+------+--------+-----------------+-------+---------------------------------+ + 32 | WRITE HISTORY MANAGEMENT End Message Offsets: | + 33 | 16 | 20 | 10 | P.UAL | MSCP$W_UNIT_AL | 2 | Unit allocated | + 34 | 18 | 22 | 12 | P.SAL | MSCP$W_SERV_AL | 2 | Server allocated | + 35 | 20 | 24 | 14 | P.SUA | MSCP$W_SERV_UNAL| 2 | Server unallocated | + 36 | 28 | 34 | 1C | P.CNT | MSCP$W_COUNT | 2 | Count | + 37 | 30 | 36 | 1E | P.OFST | MSCP$W_OFFSET | 2 | Offset | + 38 | 32 | 40 | 20 | P.HRN | MSCP$W_HRN | 2 | HRN or Entry locator | + 39 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-14 + 11 June 1992 + + + + 1 Table A-7: End and Attention Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | SET CONTROLLER CHARACTERISTICS End Message Offsets: | | + 8 | 12 | 14 | C | P.VRSN | MSCP$W_VERSION | 2 | MSCP version | + 9 | 14 | 16 | E | P.CNTF | MSCP$W_CNT_FLGS | 2 | Controller flags | + 10 | 16 | 20 | 10 | P.CTMO | MSCP$W_CNT_TMO | 2 | Controller timeout | + 11 | 18 | 22 | 12 | P.CSVR | MSCP$B_CNT_SVR | 1 | Controller software version | + 12 | 19 | 23 | 13 | P.CHVR | MSCP$B_CNT_HVR | 1 | Controller hardware version | + 13 | 20 | 24 | 14 | P.CNTI | MSCP$Q_CNT_ID | 8 | Controller ID | + 14 | 28 | 34 | 1C | P.CMBC | MSCP$L_MAXBCNT | 4 | Controller maximum byte count | + 15 | | | | | | | (optional) | + 16 +------+------+------+--------+-----------------+-------+---------------------------------+ + 17 | Notes: 1. An asterisk (*) in the field size indicates that the size varies. | + 18 | | + 19 | 2. The modifiers that reference this note have meaning only for VMS and for HSC | + 20 | controllers that provided "Bundled Shadowing" support, See Appendix E, | + 21 | "Waivers and Exceptions", Section E.3.1.1.7, "Bundled Shadowing Definitions". | + 22 +-----------------------------------------------------------------------------------------+ + + + 23 Table A-8: Error Log Message Offsets + + 24 +--------------------+--------------------------+-------+---------------------------------+ + 25 | Offset Value | Preferred Mnemonics | Field | | + 26 +------+------+------+--------+-----------------+ Size | Field Description | + 27 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 28 +------+------+------+--------+-----------------+-------+---------------------------------+ + 29 | Generic Error Log Message Offsets: | | | + 30 | 0 | 0 | 0 | L.CRF | MSLG$L_CMD_REF | 4 | Command reference number | + 31 | 4 | 4 | 4 | L.UNIT | MSLG$W_UNIT | 2 | Unit number | + 32 | 6 | 6 | 6 | L.SEQ | MSLG$W_SEQ_NUM | 2 | Sequence number | + 33 | 8 | 10 | 8 | L.FMT | MSLG$B_FORMAT | 1 | Format | + 34 | 9 | 11 | 9 | L.FLGS | MSLG$B_FLAGS | 1 | Error log message flags | + 35 | 10 | 12 | A | L.EVNT | MSLG$W_EVENT | 2 | Event code | + 36 | 12 | 14 | C | L.CNTI | MSLG$Q_CNT_ID | 8 | Controller ID | + 37 | 20 | 24 | 14 | L.CSVR | MSLG$B_CNT_SVR | 1 | Controller software version | + 38 | 21 | 25 | 15 | L.CHVR | MSLG$B_CNT_HVR | 1 | Controller hardware version | + 39 | 22 | 26 | 16 | L.MLUN | MSLG$W_MULT_UNT | 2 | Multiunit code | + 40 | 24 | 30 | 18 | L.UNTI | MSLG$Q_UNIT_ID | 8 | Unit ID | + 41 | 32 | 40 | 20 | L.USVR | MSLG$B_UNIT_SVR | 1 | Unit software version | + 42 | 33 | 41 | 21 | L.UHVR | MSLG$B_UNIT_HVR | 1 | Unit hardware version | + 43 | 34 | 42 | 22 | | | 2 | Format dependent | + 44 | 36 | 44 | 24 | L.VSER | MSLG$L_VOL_SER | 4 | Volume serial number | + 45 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-15 + 11 June 1992 + + + + 1 Table A-8: Error Log Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | Controller Error with Controller Dependent Information Offsets: | + 8 | 22 | 26 | 16 | | | * | Controller dependent information| + 9 | | | | | | | (optional) | + 10 +------+------+------+--------+-----------------+-------+---------------------------------+ + 11 | Memory Errors with Host Bus Address Error Log Message Offsets: | + 12 | 24 | 30 | 18 | L.BADR | MSLG$L_BUS_ADDR | 4 | Host bus memory address | + 13 | 28 | 34 | 1C | | | * | Controller dependent information| + 14 | | | | | | | (optional) | + 15 +------+------+------+--------+-----------------+-------+---------------------------------+ + 16 | Memory Errors with Controller Memory Address Error Log Message Offsets: | + 17 | 24 | 30 | 18 | L.BADR | MSLG$L_BUS_ADDR | 4 | Controller memory address | + 18 | 28 | 34 | 1C | | | * | Controller dependent information| + 19 | | | | | | | (optional) | + 20 +------+------+------+--------+-----------------+-------+---------------------------------+ + 21 | Disk Transfer Errors Error Log Message Offsets: | | + 22 | 34 | 42 | 22 | L.LVL | MSLG$B_LEVEL | 1 | Level | + 23 | 35 | 43 | 23 | L.RTRY | MSLG$B_RETRY | 1 | Retry | + 24 | 36 | 44 | 24 | L.VSER | MSLG$L_VOL_SER | 4 | Volume serial number | + 25 | 40 | 50 | 28 | L.HDCD | MSLG$L_HDR_CODE | 4 | Header code | + 26 | 44 | 54 | 2C | | | * | Controller or disk dependent | + 27 | | | | | | | information (optional) | + 28 +------+------+------+--------+-----------------+-------+---------------------------------+ + 29 | SDI Errors Error Log Message Offsets: | | | + 30 | 40 | 50 | 28 | L.HDCD | MSLG$L_HDR_CODE | 4 | Header code | + 31 | 44 | 54 | 2C | L.SDI | MSLG$Z_SDI | 12 | SDI information | + 32 +------+------+------+--------+-----------------+-------+---------------------------------+ + 33 | Small Disk Errors Error Log Message Offsets: | | | + 34 | 34 | 42 | 22 | L.SCYL | MSLG$W_SDE_CYL | 2 | Cylinder | + 35 | 36 | 44 | 24 | L.VSER | MSLG$L_VOL_SER | 4 | Volume serial number | + 36 +------+------+------+--------+-----------------+-------+---------------------------------+ + 37 | Bad Block Replacement Attempt Error Log Message Offsets: | + 38 | 34 | 42 | 22 | L.RPFL | MSLG$W_RPL_FLGS | 2 | Replace Flags (see Table A-11) | + 39 | 36 | 44 | 24 | L.VSER | MSLG$L_VOL_SER | 4 | Volume serial number | + 40 | 40 | 50 | 28 | L.LBN | MSLG$L_BAD_LBN | 4 | Bad LBN | + 41 | 44 | 54 | 2C | L.ORBN | MSLG$L_OLD_RBN | 4 | Old RBN | + 42 | 48 | 60 | 30 | L.NRBN | MSLG$L_NEW_RBN | 4 | New RBN | + 43 | 52 | 64 | 34 | L.RPEV | MSLG$W_CAUSE | 2 | Cause (an event code) | + 44 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-16 + 11 June 1992 + + + + 1 Table A-8: Error Log Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | Media Loader Errors Error Log Message Offsets: (allocated for future use; see Note 2) | + 8 | 36 | 44 | 24 | L.MLID | MSLG$Q_ML_ID | 8 | Media loader identifier | + 9 | 44 | 54 | 2C | L.LSVR | MSLG$B_ML_SVR | 1 | Media loader software version | + 10 | 45 | 55 | 2D | L.LHVR | MSLG$B_ML_HVR | 1 | Media loader hardware version | + 11 | 46 | 56 | 2E | L.MLUN | MSLG$W_ML_UNIT | 2 | Media loader unit number | + 12 | 48 | 60 | 30 | | | * | Controller or media loader | + 13 | | | | | | | dependent information (optional)| + 14 +------+------+------+--------+-----------------+-----------------------------------------+ + 15 | Disk Copy Data Correlation Error Log Message Offsets: | + 16 | 4 | 4 | 4 | L.DUN | MSLG$W_DST_UNUM | 2 | Destination unit number | + 17 | 12 | 14 | 0C | L.CNTI | MSLG$Q_CNT_ID | 8 | Controller identifier | + 18 | 20 | 24 | 14 | L.CSVR | MSLG$B_CNT_SVR | 1 | Controller software version | + 19 | 21 | 25 | 15 | L.CHVR | MSLG$B_CNT_HVR | 1 | Controller hardware version | + 20 | 24 | 30 | 18 | L.DUI | MSLG$Q_DST_UID | 8 | Destination unit identifier | + 21 | 32 | 40 | 20 | L.SUN | MSLG$W_SRC_UNUM | 2 | Source unit number | + 22 | 36 | 44 | 24 | L.SCID | MSLG$Q_SRC_CID | 8 | Source controller identifier | + 23 | 44 | 54 | 2C | L.SCSV | MSLG$B_SRC_CSVR | 1 | Source controller SW version | + 24 | 45 | 55 | 2D | L.SCHV | MSLG$B_SRC_CHVR | 1 | Source controller HW version | + 25 | 48 | 60 | 30 | L.SUI | MSLG$Q_SRC_UID | 8 | Source unit identifier | + 26 | 56 | 70 | 38 | L.PAD | MSLG$Q_PORT_ADR | 8 | Source unit's subsystem port | + 27 | | | | | | | address | + 28 | 64 | 100 | 40 | L.SAD | MSLG$Q_SYS_ADR | 8 | Source unit's subsystem system | + 29 | | | | | | | address | + 30 | 72 | 110 | 48 | | | * | Event dependent information | + 31 | | | | | | | (optional) | + 32 +------+------+------+--------+-----------------+-----------------------------------------+ + 33 | Notes: 1. An asterisk (*) in the field size indicates that the size varies. | + 34 | | + 35 | 2. These offsets are defined in anticipation of the adoption of a formal media | + 36 | loader architecture. These offsets are in current use as dictated by the | + 37 | temporary waiver in Section E.6. | + 38 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-17 + 11 June 1992 + + + 1 Table A-9: Error Log Message Format Codes + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Format Code | Preferred Mnemonics | | + 4 +------+------+------+--------+-----------------+ Format Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 6 +------+------+------+--------+-----------------+-----------------------------------------+ + 7 | 0 | 0 | 0 | FM.CNT | MSLG$K_CNT_ERR | Controller Errors | + 8 +------+------+------+--------+-----------------+-----------------------------------------+ + 9 | 1 | 1 | 1 | FM.BAD | MSLG$K_BUS_ADDR | Memory Errors with (Host/Controller) | + 10 | | | | | | Memory Address | + 11 +------+------+------+--------+-----------------+-----------------------------------------+ + 12 | 2 | 2 | 2 | FM.DSK | MSLG$K_DISK_TRN | Disk Transfer Errors | + 13 +------+------+------+--------+-----------------+-----------------------------------------+ + 14 | 3 | 3 | 3 | FM.SDI | MSLG$K_SDI | SDI Errors | + 15 +------+------+------+--------+-----------------+-----------------------------------------+ + 16 | 4 | 4 | 4 | FM.SDE | MSLG$K_SML_DSK | Small Disk Errors | + 17 +------+------+------+--------+-----------------+-----------------------------------------+ + 18 | 9 | 11 | 9 | FM.RPL | MSLG$K_REPLACE | Bad Block Replacement Attempt | + 19 +------+------+------+--------+-----------------+-----------------------------------------+ + 20 | 10 | 12 | A | FM.LDR | MSLG$K_LDR_ERR | Media Loader Errors (see Note below) | + 21 +------+------+------+--------+-----------------+-----------------------------------------+ + 22 | 12 | 14 | C | FM.CDC | MSLG$K_DCD_CORR | Disk Copy Data Correlation | + 23 +------+------+------+--------+-----------------+-----------------------------------------+ + 24 | Note: This format code is defined in anticipation of the adoption of a formal media | + 25 | loader architecture. It is in current use as dictated by the temporary waiver | + 26 | in Section E.6. | + 27 +-----------------------------------------------------------------------------------------+ + + + 28 Table A-10: Error Log Message Flags + + 29 +------+--------------+--------------------------+----------------------------------------+ + 30 | Bit | Bit Mask | Preferred Mnemonics | | + 31 |Number+-------+------+--------+-----------------+ Format Description | + 32 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 33 +------+-------+------+--------+-----------------+----------------------------------------+ + 34 | 7 | 200 | 80 | LF.SUC | MSLG$x_LF_SUCC | Operation Successful | + 35 +------+-------+------+--------+-----------------+----------------------------------------+ + 36 | 6 | 100 | 40 | LF.CON | MSLG$x_LF_CONT | Operation Continuing | + 37 +------+-------+------+--------+-----------------+----------------------------------------+ + 38 | 5 | 40 | 20 | LF.BBR | MSLG$x_LF_BBR | Bad Block Replacement Request | + 39 +------+-------+------+--------+-----------------+----------------------------------------+ + 40 | 4 | 20 | 10 | LF.RCT | MSLG$x_LF_RPLER | Error During Replacement | + 41 +------+-------+------+--------+-----------------+----------------------------------------+ + 42 | 3 | 10 | 8 | LF.CDC | MSLG$x_LF_DCDC | Disk Copy Data Correlated | + 43 +------+-------+------+--------+-----------------+----------------------------------------+ + 44 | 1 | 2 | 2 | LF.INF | MSLG$x_LF_INFO | Informational | + 45 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-18 + 11 June 1992 + + + + 1 Table A-10: Error Log Message Flags (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Format Description | + 5 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 6 +------+-------+------+--------+-----------------+----------------------------------------+ + 7 | 0 | 1 | 1 | LF.SNR | MSLG$x_LF_SQNRS | Sequence Number Reset | + 8 +------+-------+------+--------+-----------------+----------------------------------------+ + 9 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 10 | defined as a bit number (offset) or an "M" if defined as a mask. | + 11 +-----------------------------------------------------------------------------------------+ + + + 12 Table A-11: Bad Block Replacement Attempt "Replace Flags" + + 13 +------+--------------+--------------------------+----------------------------------------+ + 14 | Bit | Bit Mask | Preferred Mnemonics | | + 15 |Number+-------+------+--------+-----------------+ Replace Flag | + 16 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 17 +------+-------+------+--------+-----------------+----------------------------------------+ + 18 | 15 |100000 | 8000 | LFR.RP | MSLG$x_LFR_RP | Replacement attempted. | + 19 | | | | | | Set if block was verified as bad. | + 20 | | | | | | Clear if block checked out OK. | + 21 +------+-------+------+--------+-----------------+----------------------------------------+ + 22 | 14 | 40000 | 4000 | LFR.FE | MSLG$x_LFR_FE | Force error. | + 23 | | | | | | Set if data could not be recovered, | + 24 | | | | | | so block was rewritten with the | + 25 | | | | | | Force Error modifier. | + 26 +------+-------+------+--------+-----------------+----------------------------------------+ + 27 | 13 | 20000 | 2000 | LFR.TE | MSLG$x_LFR_TE | Tertiary revector. | + 28 | | | | | | Set if block was revectored to a | + 29 | | | | | | nonprimary RBN. | + 30 +------+-------+------+--------+-----------------+----------------------------------------+ + 31 | 12 | 10000 | 1000 | LFR.RF | MSLG$x_LFR_RF | Reformat error. | + 32 | | | | | | Set if the REPLACE command or its | + 33 | | | | | | analogue failed. | + 34 +------+-------+------+--------+-----------------+----------------------------------------+ + 35 | 11 | 4000 | 800 | LFR.RI | MSLG$x_LFR_RI | RCT inconsistent. | + 36 | | | | | | Set if replacement failed due to an | + 37 | | | | | | inconsistent RCT. | + 38 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-19 + 11 June 1992 + + + + 1 Table A-11: Bad Block Replacement Attempt "Replace Flags" (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Replace Flag | + 5 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 6 +------+-------+------+--------+-----------------+----------------------------------------+ + 7 | 10 | 2000 | 400 | LFR.BR | MSLG$x_LFR_BR | Bad RBN. | + 8 | | | | | | Set if LBN was previously replaced, | + 9 | | | | | | so a bad RBN was replaced. | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 12 | defined as a bit number (offset) or an "M" if defined as a mask. | + 13 +-----------------------------------------------------------------------------------------+ + + + 14 Table A-12: Access Nonvolatile Memory Command Operation Codes + + 15 +--------------------+--------------------------+-----------------------------------------+ + 16 | Opcode Value | Preferred Mnemonics | | + 17 +------+------+------+--------+-----------------+ Operation | + 18 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 19 +------+------+------+--------+-----------------+-----------------------------------------+ + 20 | 0 | 0 | 0 | ANM.RD | MSCP$K_ANM_READ | Read | + 21 +------+------+------+--------+-----------------+-----------------------------------------+ + 22 | 1 | 1 | 1 | ANM.EX | MSCP$K_ANM_EXCG | Exchange | + 23 +------+------+------+--------+-----------------+-----------------------------------------+ + 24 | 2 | 2 | 2 | ANM.TS | MSCP$K_ANM_TSST | Test and Set | + 25 +------+------+------+--------+-----------------+-----------------------------------------+ + + + 26 Table A-13: Format Function Codes + + 27 +--------------------+--------+--------+--------+--------+-------+------------------------+ + 28 | Function Code | | bits | tracks | tracks | | | + 29 +------+------+------+ device | per | per | per | sides | reference | + 30 | Dec. | Oct. | Hex. | | radian | mm | inch | | | + 31 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + 32 | Applicable to all devices: | + 33 | 0 | 0 | 0 | Format using device dependent default. | + 34 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + 35 | Applicable to all devices that support multiple densities or capacities: | + 36 | 1 | 1 | 1 | Lowest supported density or capacity. | + 37 | 2 | 2 | 2 | Highest supported density or capacity. | + 38 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-20 + 11 June 1992 + + + + 1 Table A-13: Format Function Codes (cont.) + + 2 +--------------------+--------+--------+--------+--------+-------+------------------------+ + 3 | Function Code | | bits | tracks | tracks | | | + 4 +------+------+------+ device | per | per | per | sides | reference | + 5 | Dec. | Oct. | Hex. | | radian | mm | inch | | | + 6 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + 7 | Applicable to 200 mm (8 inch) flexible disks: | + 8 | 261 | 405 | 105 | RX01 | 6631 | 1.9 | 48 | 1 | ANSI X3.73-1980 | + 9 | 262 | 406 | 106 | | 6631 | 1.9 | 48 | 2 | ANSI X3B8-140 | + 10 | 265 | 411 | 109 | RX02 | 13262 | 1.9 | 48 | 1 | ANSI X3B8/78-139 | + 11 | 266 | 412 | 10A | | 13262 | 1.9 | 48 | 2 | ANSI X3.121-1984 | + 12 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + 13 | Applicable to 130 mm (5.25 inch) flexible disks: | + 14 | 269 | 415 | 10D | | 3979 | 1.9 | 48 | 1 | ANSI X3.82-1980 | + 15 | 274 | 422 | 112 | | 7958 | 1.9 | 48 | 2 | ANSI X3.125-1985 | + 16 | 277 | 425 | 115 | RX50 | 7958 | 3.8 | 96 | 1 | | + 17 | 278 | 426 | 116 | | 7958 | 3.8 | 96 | 2 | ANSI X3.126-1986 | + 18 | 282 | 432 | 11A | RX33 | 13262 | 3.8 | 96 | 2 | ISO DIS8630-1985 | + 19 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + 20 | Applicable to 90 mm (3.5 inch) flexible disks: | + 21 | 286 | 436 | 11E | | 7958 | 5.3 | 135 | 2 | ANSI X3.137 | + 22 +------+------+------+--------+--------+--------+--------+-------+------------------------+ + + 23 Table A-14: WRITE HISTORY MANAGEMENT Command Operation Codes + + 24 +--------------------+--------------------------+-----------------------------------------+ + 25 | Opcode Value | Preferred Mnemonics | | + 26 +------+------+------+--------+-----------------+ Operation | + 27 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 28 +------+------+------+--------+-----------------+-----------------------------------------+ + 29 | 0 | 0 | 0 | | | Reserved | + 30 +------+------+------+--------+-----------------+-----------------------------------------+ + 31 | 1 | 1 | 1 | WH.DAL | MSCP$K_WHM_DALL | Deallocate All | + 32 +------+------+------+--------+-----------------+-----------------------------------------+ + 33 | 2 | 2 | 2 | WH.DHR | MSCP$K_WHM_DHRN | Deallocate by Host Reference Number | + 34 +------+------+------+--------+-----------------+-----------------------------------------+ + 35 | 3 | 3 | 3 | WH.DEL | MSCP$K_WHM_DELO | Deallocate by Entry Locator | + 36 +------+------+------+--------+-----------------+-----------------------------------------+ + 37 | 4 | 4 | 4 | WH.RAL | MSCP$K_WHM_RALL | Read All | + 38 +------+------+------+--------+-----------------+-----------------------------------------+ + 39 | 5 | 5 | 5 | WH.RHR | MSCP$K_WHM_RHRN | Read by Host Reference Number | + 40 +------+------+------+--------+-----------------+-----------------------------------------+ + 41 | 6 | 6 | 6 | WH.DAF | MSCP$K_WHM_DAFC | Decrement Allocation Failure Count | + 42 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-21 + 11 June 1992 + + + 1 Table A-15: Write History Entry Entry Flags + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Format Description | + 5 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 6 +------+-------+------+--------+-----------------+----------------------------------------+ + 7 | 15 |100000 | 8000 | ET.ERR | MSCP$x_ET_ERR | Error | + 8 +------+-------+------+--------+-----------------+----------------------------------------+ + 9 | 14 | 40000 | 4000 | ET.TLB | MSCP$x_ET_TLIB | Transfer Length in Blocks | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 12 | defined as a bit number (offset) or an "M" if defined as a mask. | + 13 +-----------------------------------------------------------------------------------------+ + + 14 Table A-16: Write History Entry Offsets + + 15 +--------------------+--------------------------+-------+---------------------------------+ + 16 | Offset Value | Preferred Mnemonics | Field | | + 17 +------+------+------+--------+-----------------+ Size | Field Description | + 18 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 19 +------+------+------+--------+-----------------+-------+---------------------------------+ + 20 | 0 | 0 | 0 | W.ELO | WHIS$W_ELO | 2 | Entry Locator | + 21 | 2 | 2 | 2 | W.UNIT | WHIS$W_UNIT | 2 | Unit Number | + 22 | 4 | 4 | 4 | W.LEN | WHIS$L_LENGTH | 4 | Transfer Length | + 23 | 8 | 10 | 8 | W.LBN | WHIS$L_LBN | 4 | Starting Logical Block Number | + 24 | 12 | 14 | 0C | W.HRN | WHIS$W_HRN | 2 | Host Reference Number | + 25 | 14 | 16 | 0E | W.EFL | WHIS$W_ENTFLGS | 2 | Entry Flags | + 26 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + 27 Table A-17: Cache Access Attribute Values + + 28 +--------------------+--------------------------+-----------------------------------------+ + 29 | Cache Access | | | + 30 | Attribute Value | Preferred Mnemonics | | + 31 |------+------+------+--------+-----------------+ Description | + 32 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 33 +------+------+------+--------+-----------------+-----------------------------------------+ + 34 | 00 | 00 | 00 | CA.DEF | MSCP$K_CA_DEF | Default | + 35 | 128 | 200 | 80 | CA.NN | MSCP$K_CA_NN | Not Single / Not Random | + 36 | 129 | 201 | 81 | CA.SN | MSCP$K_CA_SN | Single / Not Random | + 37 | 130 | 202 | 82 | CA.NR | MSCP$K_CA_NR | Not Single / Random | + 38 | 131 | 203 | 83 | CA.SR | MSCP$K_CA_SR | Single / Random | + 39 +------+------+------+--------+-----------------+-----------------------------------------+ + 40 | Note: All unassigned values are interpreted as though they were 00. The interpretation | + 41 | of all values, both assigned and unassigned, may be altered by the System | + 42 | Manager. | + 43 +-----------------------------------------------------------------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + OPCODE, FLAG, AND OFFSET DEFINITIONS Page A-22 + 11 June 1992 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-1 + 11 June 1992 + + + 1 APPENDIX B + + 2 STATUS AND EVENT CODE DEFINITIONS + + + + 3 NOTES + + + 4 1. The combination of a status or event code with a subcode expressed + 5 (assuming 16 bit symbols) as: + + 6 (subcode *ST.SUB)+code + + 7 2. The subcode values shown in Table B-2 are only returned as status codes + 8 in end messages. They are never returned as event codes in error log + 9 messages. In addition, the references to other tables within Table B-2 + 10 | indicate that those tables contain subcodes which are only returned as + 11 | status codes in end messages. Some of the tables referenced by Table + 12 | B-2 show subcodes listed as both status and event subcodes, however, + 13 | under certain conditions some subcode values are only returned as + 14 | status codes. + + 15 3. The subcode values shown in Tables B-3 through B-10, and Table B-12 may + 16 be returned (as indicated in the "EV" and "ST" columns) as status + 17 codes, event codes or both. In those tables, an asterisk in the "EV" + 18 column indicates that the code and subcode may be returned as an event + 19 code. An asterisk in the "ST" column indicates that the code and + 20 subcode may be returned as a status code. + + 21 4. The subcode values shown in Table B-9, "Bad Block Replacement + 22 Completion" Event Only Subcode Values, are only returned as the event + 23 code in "Bad Block Replacement Attempt" error log messages, where they + 24 report the completion status of a bad block replacement attempt. They + 25 are never returned as status codes. The subcode values shown in Table + 26 B-11, "Informational" Event Only Subcode Values, are only returned as + 27 event codes for reporting informational logs. + + 28 | 5. Status and Event code/subcode descriptions that reference this note + 29 | have meaning only for VMS and for HSC controllers that provided + 30 "Bundled Shadowing" support, See Appendix E, "Waivers and Exceptions", + 31 Section E.3.1.1.8, ""Bundled Shadowing" Specific Status Code + 32 Definitions". + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-2 + 11 June 1992 + + + 1 Table B-1: Status and Event Codes + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Value | Preferred Mnemonics | | + 4 +------+------+------+--------+-----------------+ Status or Event Code | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 6 +------+------+------+--------+-----------------+-----------------------------------------+ + 7 | 31 | 37 | 1F | ST.MSK | MSCP$M_ST_MASK | Status / event code mask | + 8 | 32 | 40 | 20 | ST.SUB | MSCP$K_ST_SBCOD | Subcode multiplier | + 9 | | | | | | | + 10 | 0 | 0 | 0 | ST.SUC | MSCP$K_ST_SUCC | Success | + 11 | 1 | 1 | 1 | ST.CMD | MSCP$K_ST_ICMD | Invalid Command | + 12 | 2 | 2 | 2 | ST.ABO | MSCP$K_ST_ABRTD | Command Aborted | + 13 | 3 | 3 | 3 | ST.OFL | MSCP$K_ST_OFFLN | Unit-Offline | + 14 | 4 | 4 | 4 | ST.AVL | MSCP$K_ST_AVLBL | Unit-Available | + 15 | 5 | 5 | 5 | ST.MFE | MSCP$K_ST_MFMTE | Media Format Error | + 16 | 6 | 6 | 6 | ST.WPR | MSCP$K_ST_WRTPR | Write Protected | + 17 | 7 | 7 | 7 | ST.CMP | MSCP$K_ST_COMP | Compare Error | + 18 | 8 | 10 | 8 | ST.DAT | MSCP$K_ST_DATA | Data Error | + 19 | 9 | 11 | 9 | ST.HST | MSCP$K_ST_HSTBF | Host Buffer Access Error | + 20 | 10 | 12 | A | ST.CNT | MSCP$K_ST_CNTLR | Controller Error | + 21 | 11 | 13 | B | ST.DRV | MSCP$K_ST_DRIVE | Drive Error | + 22 | 12 | 14 | C | - | - | "Bundled Shadowing" (see Note 5) | + 23 | 13 | 15 | D | ST.WHE | MSCP$K_ST_WHEAE | Write History Entry Access Error | + 24 | 20 | 24 | 14 | ST.BBR | MSCP$K_ST_BBR | Bad Block Replacement Completion | + 25 | 21 | 25 | 15 | ST.PRM | MSCP$K_ST_IPARM | Invalid Parameter | + 26 | 22 | 26 | 16 | ST.INF | MSCP$K_ST_INFO | Informational (not an error) | + 27 | 23 | 27 | 17 | ST.LDR | MSCP$K_ST_LOADR | Media Loader Error (see note below) | + 28 | 24 | 30 | 18 | ST.HER | MSCP$K_ST_HOST | Host Error | + 29 | | 25 | 31 | 19 | ST.CAC | MSCP$K_ST_CAC | Cache Error | + 30 | 30 | 36 | 1E | ST.SCO | MSCP$K_ST_SBCERR| Subcommand Error | + 31 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-3 + 11 June 1992 + + + 1 Table B-2: Status Only Subcode Values + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Status Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | "Success" Subcode values: | | + 8 | 0 | 0 | 0 | 0 | Normal | + 9 | 1 | 32 | 40 | 20 | Spin-down Ignored | + 10 | 2 | 64 | 100 | 40 | Still Connected | + 11 | 4 | 128 | 200 | 80 | Duplicate Unit Number | + 12 | 8 | 256 | 400 | 100 | Already Online | + 13 | 16 | 512 | 1000 | 200 | Still Online | + 14 | 32 | 1024 | 2000 | 400 | Incomplete Replacement | + 15 | 64 | 2048 | 4000 | 800 | Invalid RCT | + 16 | 128 | 4096 | 10000 | 1000 | Read Only Volume Format | + 17 +------+------+-------+------+---------------------------------------------------------+ + 18 | "Invalid Command" Subcode values: | + 19 | 0 | 1 | 1 | 1 | Invalid Message Length | + 20 | many | | | | Other "Invalid Command" subcodes values are referenced | + 21 | | | | | as follows (note that this is combined with the status | + 22 | | | | | code): | + 23 | | | | | | + 24 | | | | | offset*256.+code | + 25 | | | | | | + 26 | | | | | where "offset" is the command message offset symbol for | + 27 | | | | | the field in error and "code" is the symbol for the | + 28 | | | | | "Invalid Command" status code. | + 29 +------+------+-------+------+---------------------------------------------------------+ + 30 | "Command Aborted" Subcode values: | + 31 | 0 | 2 | 2 | 2 | Subcodes are not used. | + 32 +------+------+-------+------+---------------------------------------------------------+ + 33 | "Unit-Offline" Subcode values: | + 34 | 0 | 3 | 3 | 3 | Unit unknown or online to another controller. | + 35 | 1 | 35 | 43 | 23 | No volume mounted or drive disabled via RUN/STOP | + 36 | | | | | switch (unit is in known substate). | + 37 | 2 | 67 | 103 | 43 | Unit is inoperative | + 38 | | | | | For SI drives, the controller has marked the drive | + 39 | | | | | inoperative due to an unrecoverable error in a | + 40 | | | | | previous level 2 exchange, the drive's C1 flag is | + 41 | | | | | set, or the drive has a duplicate unit identifier. | + 42 | 4 | 131 | 203 | 83 | Duplicate unit number | + 43 | 8 | 259 | 403 | 103 | Unit disabled by field service or diagnostic. | + 44 | | | | | For SI drives, the drive's DD flag is set. | + 45 | 16 | 515 | 1003 | 203 | Exclusive Use | + 46 +------+------+-------+------+---------------------------------------------------------+ + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-4 + 11 June 1992 + + + + 1 Table B-2: Status Only Subcode Values (cont.) + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Status Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | "Unit-Available" Subcode values: | + 8 | 0 | 4 | 4 | 4 | Available | + 9 | 2 | 68 | 104 | 44 | "Bundled Shadowing" (see Note 5) | + 10 | 4 | 132 | 204 | 84 | "Bundled Shadowing" (see Note 5) | + 11 | 32 | 1028 | 2004 | 404 | Already In Use | + 12 +------+------+-------+------+---------------------------------------------------------+ + 13 | "Media Format Error" Subcode values -- see Table B-3 | + 14 +------+------+-------+------+---------------------------------------------------------+ + 15 | "Write Protected" Subcode values: | + 16 | 8 | 262 | 406 | 106 | Unit is Data Safety Write Protected | + 17 | 128 | 4102 | 10006 | 1006 | Unit is Software Write Protected | + 18 | 256 | 8198 | 20006 | 2006 | Unit is Hardware Write Protected | + 19 +------+------+-------+------+---------------------------------------------------------+ + 20 | "Compare Error" Subcode values -- see Table B-4 | + 21 +------+------+-------+------+---------------------------------------------------------+ + 22 | "Data Error" Subcode values -- see Table B-5 | + 23 +------+------+-------+------+---------------------------------------------------------+ + 24 | "Host Buffer Access Error" Subcode values -- see Table B-6 | + 25 +------+------+-------+------+---------------------------------------------------------+ + 26 | "Controller Error" subcode values -- see Table B-7 | + 27 +------+------+-------+------+---------------------------------------------------------+ + 28 | "Write History Entry Access Error" subcodes: | + 29 | 1 | 45 | 55 | 2D | Previous Allocation Failure | + 30 | 2 | 77 | 115 | 4D | Allocation Failure Table Full | + 31 | 8 | 269 | 415 | 10D | No such entry | + 32 +------+------+-------+------+---------------------------------------------------------+ + 33 | "Subcommand Error" subcode values -- see Table B-12 | + 34 +------+------+-------+------+---------------------------------------------------------+ + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-5 + 11 June 1992 + + + 1 Table B-3: "Media Format Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | many | | | |*|*| "Data Error" accessing RCT or FCT. | + 8 | For every "Data Error" subcode that may be reported as a status code (i.e., | + 9 | for every subcode listed in Table B-5 that has an asterisk in the "ST" | + 10 | column), the exact same subcode value may be returned as a "Media Format | + 11 | Error" subcode value. These subcodes indicate that a transfer to the unit's | + 12 | FCT or RCT (using the multicopy structure read and write algorithms) failed | + 13 | for the specified reason. The subcode reports the error that occurred on the | + 14 | last copy of the multicopy structure. For example, the subcode value 7 | + 15 | (combined code and subcode value of 229 decimal) indicates that the FCT or RCT | + 16 | is unreadable due to an Uncorrectable ECC Error. | + 17 | | + 18 | In addition to the subcode values copied from "Data Error" subcode values, | + 19 | the subcode values listed below also exist. | + 20 +------+------+-------+------+-+-+-----------------------------------------------------+ + 21 | 4 | 133 | 205 | 85 |-|-| "Bundled Shadowing" (see Note 5) | + 22 +------+------+-------+------+-+-+-----------------------------------------------------+ + 23 | 5 | 165 | 245 | A5 | |*| Disk isn't formatted with 512 byte sectors | + 24 | | | | | | | The disk's FCT indicates that it is formatted | + 25 | | | | | | | with 576 byte sectors, yet either the controller | + 26 | | | | | | | or the drive only supports 512 byte sectors. | + 27 +------+------+-------+------+-+-+-----------------------------------------------------+ + 28 | 6 | 197 | 305 | C5 | |*| Disk isn't formatted or FCT corrupted | + 29 | | | | | | | The disk's FCT does not indicate that the disk is | + 30 | | | | | | | formatted with either 512 or 576 byte sectors. | + 31 +------+------+-------+------+-+-+-----------------------------------------------------+ + 32 | 8 | 261 | 405 | 105 |*|*| RCT corrupted. | + 33 | | | | | | | The RCT search algorithm encountered an invalid | + 34 | | | | | | | RCT entry. This subcode may be returned by | + 35 | | | | | | | replacement (searching the RCT for a new | + 36 | | | | | | | replacement block), by revectoring (searching the | + 37 | | | | | | | RCT to locate the replacement block for a bad | + 38 | | | | | | | block), and when a unit is brought "Unit-Online." | + 39 +------+------+-------+------+-+-+-----------------------------------------------------+ + 40 | 9 | 293 | 445 | 125 |*| | No replacement block available. | + 41 | | | | | | | Replacement was attempted for a bad block, but a | + 42 | | | | | | | replacement block could not be allocated (i.e., | + 43 | | | | | | | the volume's RCT is full). This subcode may be | + 44 | | | | | | | returned both during actual replacement and when | + 45 | | | | | | | an interrupted replacement is completed as part | + 46 | | | | | | | of bringing a unit "Unit-Online." | + 47 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-6 + 11 June 1992 + + + + 1 Table B-3: "Media Format Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 10 | 325 | 505 | 145 |*| | No multicopy protection. | + 8 | | | | | | | All but one copy of a block in a multicopy | + 9 | | | | | | | structure are bad. This is a warning that the | + 10 | | | | | | | disk should be reformatted or replaced at the | + 11 | | | | | | | earliest convenient time. | + 12 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 13 Table B-4: "Compare Error" Status or Event Subcode Values + + 14 +------+---------------------+-+-+-----------------------------------------------------+ + 15 | Sub- | Code + Subcode |E|S| | + 16 | code +------+-------+------+V|T| Status or Event Subcode | + 17 | | Dec. | Oct. | Hex. | | | | + 18 +------+------+-------+------+-+-+-----------------------------------------------------+ + 19 | 0 | 7 | 7 | 7 |*|*| Subcodes are not used. Note: the compare error | + 20 | | | | | | | code is only used as an event code when the error | + 21 | | | | | | | occurs during a read-compare or write-compare | + 22 | | | | | | | operation. | + 23 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 24 Table B-5: "Data Error" Status or Event Subcode Values + + 25 +------+---------------------+-+-+-----------------------------------------------------+ + 26 | Sub- | Code + Subcode |E|S| | + 27 | code +------+-------+------+V|T| Status or Event Subcode | + 28 | | Dec. | Oct. | Hex. | | | | + 29 +------+------+-------+------+-+-+-----------------------------------------------------+ + 30 | 0 | 8 | 10 | 8 | |*| Sector was written with "Force Error" modifier | + 31 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-7 + 11 June 1992 + + + + 1 Table B-5: "Data Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 2 | 72 | 110 | 48 |*|*| Invalid header. | + 8 | | | | | | | The subsystem read an invalid or inconsistent | + 9 | | | | | | | header for the requested sector. For recoverable | + 10 | | | | | | | errors, this code implies that a retry of the | + 11 | | | | | | | transfer read a valid header. For unrecoverable | + 12 | | | | | | | errors, this code implies that the subsystem | + 13 | | | | | | | attempted tertiary revectoring and determined | + 14 | | | | | | | that the requested sector is not revectored | + 15 | | | | | | | (i.e., the RCT indicates that the sector is not | + 16 | | | | | | | revectored). Causes of an invalid header include | + 17 | | | | | | | header missync, header sync timeout, and a | + 18 | | | | | | | garbage (inconsistent) header. | + 19 +------+------+-------+------+-+-+-----------------------------------------------------+ + 20 | 3 | 104 | 150 | 68 |*|*| Data Sync not found (Data Sync timeout). | + 21 +------+------+-------+------+-+-+-----------------------------------------------------+ + 22 | 4 | 136 | 210 | 88 |*| | Correctable error in ECC field. | + 23 | | | | | | | A transfer encountered a correctable error in | + 24 | | | | | | | which only the ECC field was affected. That is, | + 25 | | | | | | | all data bits were correct but some portion of | + 26 | | | | | | | the ECC field was incorrect. The severity of the | + 27 | | | | | | | error (i.e., the number of symbols in error) is | + 28 | | | | | | | unknown. If the number of symbols in error is | + 29 | | | | | | | known, an "n Symbol ECC Error" subcode should be | + 30 | | | | | | | returned instead. | + 31 +------+------+-------+------+-+-+-----------------------------------------------------+ + 32 | | 5 | 168 | 250 | A8 |*| | Header Threshold Event | + 33 | | | | | | | | This is not an error. Data correction or recovery | + 34 | | | | | | | | was used in the header portion of a block at | + 35 | | | | | | | | levels within the range of normal device | + 36 | | | | | | | | operation. This subcode is typically used when | + 37 | | | | | | | | sufficient events are available to justify | + 38 | | | | | | | | reporting them to automated fault analysis tools. | + 39 | | | | | | | | The information in the log message is unlikely to | + 40 | | | | | | | | be useful for any other purpose. | + 41 | +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-8 + 11 June 1992 + + + + 1 Table B-5: "Data Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | | 6 | 200 | 310 | C8 |*| | Data Threshold Event | + 8 | | | | | | | | This is not an error. Data correction or recovery | + 9 | | | | | | | | was used in the data portion of a block at levels | + 10 | | | | | | | | within the range of normal device operation. This | + 11 | | | | | | | | subcode is typically used when sufficient events | + 12 | | | | | | | | are available to justify reporting them to | + 13 | | | | | | | | automated fault analysis tools. The information in| + 14 | | | | | | | | the log message is unlikely to be useful for any | + 15 | | | | | | | | other purpose. | + 16 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 17 | 7 | 232 | 350 | E8 |*|*| Uncorrectable ECC Error. | + 18 | | | | | | | A transfer without the "Suppress Error | + 19 | | | | | | | Correction" modifier encountered an ECC error | + 20 | | | | | | | that exceeds the correction capability of the | + 21 | | | | | | | subsystem's error correction algorithms, or a | + 22 | | | | | | | transfer with the "Suppress Error Correction" | + 23 | | | | | | | modifier encountered an ECC error of any severity | + 24 | | | | | | | whatsoever. | + 25 +------+------+-------+------+-+-+-----------------------------------------------------+ + 26 | 8 | 264 | 410 | 108 |*| | One Symbol ECC Error. | + 27 | 9 | 296 | 450 | 128 |*| | Two Symbol ECC Error. | + 28 | 10 | 328 | 510 | 148 |*| | Three Symbol ECC Error. | + 29 | 11 | 360 | 550 | 168 |*| | Four Symbol ECC Error. | + 30 | 12 | 392 | 610 | 188 |*| | Five Symbol ECC Error. | + 31 | 13 | 424 | 650 | 1A8 |*| | Six Symbol ECC Error. | + 32 | 14 | 456 | 710 | 1C8 |*| | Seven Symbol ECC Error. | + 33 | 15 | 488 | 750 | 1E8 |*| | Eight Symbol ECC Error. | + 34 | 16 | 520 | 1010 | 208 |*| | Nine Symbol ECC Error. | + 35 | 17 | 552 | 1050 | 228 |*| | Ten Symbol ECC Error. | + 36 | 18 | 584 | 1110 | 248 |*| | Eleven Symbol ECC Error. | + 37 | 19 | 616 | 1150 | 268 |*| | Twelve Symbol ECC Error. | + 38 | 20 | 648 | 1210 | 288 |*| | Thirteen Symbol ECC Error. | + 39 | 21 | 680 | 1250 | 2A8 |*| | Fourteen Symbol ECC Error. | + 40 | 22 | 712 | 1310 | 2C8 |*| | Fifteen Symbol ECC Error. | + 41 | | | | | | | A transfer encountered a correctable ECC error | + 42 | | | | | | | with the specified number of ECC symbols in | + 43 | | | | | | | error. The number of symbols in error roughly | + 44 | | | | | | | corresponds to the severity of the error. | + 45 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-9 + 11 June 1992 + + + 1 Table B-6: "Host Buffer Access Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 0 | 9 | 11 | 9 | |*| Host buffer access error, cause not available. | + 8 | | | | | | | The controller was unable to access a host buffer | + 9 | | | | | | | to perform a transfer, but has no visibility into | + 10 | | | | | | | the cause of the error. | + 11 +------+------+-------+------+-+-+-----------------------------------------------------+ + 12 | 1 | 41 | 51 | 29 | |*| Odd transfer address | + 13 +------+------+-------+------+-+-+-----------------------------------------------------+ + 14 | 2 | 73 | 111 | 49 | |*| Odd byte count | + 15 +------+------+-------+------+-+-+-----------------------------------------------------+ + 16 | 3 | 105 | 151 | 69 |*|*| Nonexistent memory error | + 17 +------+------+-------+------+-+-+-----------------------------------------------------+ + 18 | 4 | 137 | 211 | 89 |*|*| Host memory parity error | + 19 +------+------+-------+------+-+-+-----------------------------------------------------+ + 20 | 5 | 169 | 251 | A9 |*|*| Invalid page table entry | + 21 | | | | | | | (See the Storage Systems Port Specification for | + 22 | | | | | | | additional detail.) | + 23 +------+------+-------+------+-+-+-----------------------------------------------------+ + 24 | 6 | 201 | 311 | C9 |*|*| Invalid buffer name | + 25 | | | | | | | The key in the buffer name does not match the key | + 26 | | | | | | | in the buffer descriptor, the V bit in the buffer | + 27 | | | | | | | descriptor is clear, or the index into the Buffer | + 28 | | | | | | | Descriptor Table is too large. (See the BI VAX | + 29 | | | | | | | Port Specification for additional detail.) | + 30 +------+------+-------+------+-+-+-----------------------------------------------------+ + 31 | 7 | 233 | 351 | E9 |*|*| Buffer length violation | + 32 | | | | | | | The number of bytes requested in the MSCP | + 33 | | | | | | | command exceeds the buffer length as specified | + 34 | | | | | | | in the buffer descriptor. (See the BI VAX | + 35 | | | | | | | Port Specification for additional detail.) | + 36 +------+------+-------+------+-+-+-----------------------------------------------------+ + 37 | 8 | 265 | 411 | 109 |*|*| Access control violation | + 38 | | | | | | | The access mode specified in the buffer | + 39 | | | | | | | descriptor is protected against by the PROT | + 40 | | | | | | | field in the PTE. (See the BI VAX Port | + 41 | | | | | | | Specification for additional detail.) | + 42 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-10 + 11 June 1992 + + + 1 Table B-7: "Controller Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 0 | 10 | 12 | A |-|-| Reserved for host detected command timeout error | + 8 | | | | | | | logging. This subcode is never reported by a | + 9 | | | | | | | controller. | + 10 +------+------+-------+------+-+-+-----------------------------------------------------+ + 11 | 1 | 42 | 52 | 2A |*|*| SERDES overrun or underrun error. | + 12 | | | | | | | Either the drive is too fast for the controller, | + 13 | | | | | | | or (more typically) a controller hardware fault | + 14 | | | | | | | has prevented controller microcode from being | + 15 | | | | | | | able to keep up with data transfer to or from the | + 16 | | | | | | | drive. | + 17 +------+------+-------+------+-+-+-----------------------------------------------------+ + 18 | 2 | 74 | 112 | 4A |*|*| EDC error. | + 19 | | | | | | | The sector was read with correct or correctable | + 20 | | | | | | | ECC and an invalid EDC. There is most likely a | + 21 | | | | | | | fault in the ECC logic of either this controller | + 22 | | | | | | | or the controller that last wrote the sector. | + 23 +------+------+-------+------+-+-+-----------------------------------------------------+ + 24 | 3 | 106 | 152 | 6A |*|*| Software Logic error. | + 25 | | | | | | | Some high level check detected an error that | + 26 | | | | | | | indicates a fault in the execution of code within | + 27 | | | | | | | the controller. For example, an inconsistent data | + 28 | | | | | | | structure is detected (a nonzero reserved field | + 29 | | | | | | | or a value in a field outside its valid range) or | + 30 | | | | | | | an error in the code flow occurs. This error | + 31 | | | | | | | almost always implies the existence of a | + 32 | | | | | | | microcode bug. | + 33 +------+------+-------+------+-+-+-----------------------------------------------------+ + 34 | 4 | 138 | 212 | 8A |*|*| Internal EDC error. | + 35 | | | | | | | Some low level check detected an inconsistent | + 36 | | | | | | | data structure. For example, a microcode | + 37 | | | | | | | implemented checksum or vertical parity (hardware | + 38 | | | | | | | parity is horizontal) associated with internal | + 39 | | | | | | | sector data was inconsistent. This error usually | + 40 | | | | | | | implies a fault in the memory addressing logic of | + 41 | | | | | | | one or more of the controller's processing | + 42 | | | | | | | elements. It may also result from a double bit | + 43 | | | | | | | error or other error that exceeds the error | + 44 | | | | | | | detection capability of the controller's hardware | + 45 | | | | | | | memory checking circuitry. | + 46 +------+------+-------+------+-+-+-----------------------------------------------------+ + 47 | 5 | 170 | 252 | AA |*|*| LESI Adaptor Card parity error on input (adaptor to | + 48 | | | | | | | controller). | + 49 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-11 + 11 June 1992 + + + + 1 Table B-7: "Controller Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 6 | 202 | 312 | CA |*|*| LESI Adaptor Card parity error on output | + 8 | | | | | | | (controller to adaptor). | + 9 +------+------+-------+------+-+-+-----------------------------------------------------+ + 10 | 7 | 234 | 352 | EA |*|*| LESI Adaptor Card "cable in place" not asserted. | + 11 +------+------+-------+------+-+-+-----------------------------------------------------+ + 12 | 8 | 266 | 412 | 10A |*|*| Controller overrun or underrun. | + 13 | | | | | | | The controller attempted to perform too many | + 14 | | | | | | | concurrent transfers, causing one or more of them | + 15 | | | | | | | to fail due to a data overrun or underrun. | + 16 +------+------+-------+------+-+-+-----------------------------------------------------+ + 17 | 9 | 298 | 452 | 12A |*|*| Controller memory error. | + 18 | | | | | | | The controller detected an error in an internal | + 19 | | | | | | | memory, such as a parity error or nonresponding | + 20 | | | | | | | address. This subcode only applies to errors | + 21 | | | | | | | that do not affect the controller's ability to | + 22 | | | | | | | properly generate end and error log messages, as | + 23 | | | | | | | errors that might affect end and error log | + 24 | | | | | | | messages are not reported via MSCP. Therefore, | + 25 | | | | | | | for most controllers this subcode will only be | + 26 | | | | | | | returned for controller memory errors in data or | + 27 | | | | | | | buffer memory and noncritical control | + 28 | | | | | | | structures. If the controller has several such | + 29 | | | | | | | memories, the specific memory involved is | + 30 | | | | | | | reported as part of the error address in the | + 31 | | | | | | | error log message. | + 32 +------+------+-------+------+-+-+-----------------------------------------------------+ + 33 | 10 | 330 | 512 | 14A |-|-| "Bundled Shadowing (see Note 5) | + 34 +------+------+-------+------+-+-+-----------------------------------------------------+ + 35 | 11 | 362 | 552 | 16A |*|*| Drive Interface Hardware error. | + 36 | | | | | | | The controller detected an error that indicates a | + 37 | | | | | | | fault in the Drive Interface Hardware. | + 38 +------+------+-------+------+-+-+-----------------------------------------------------+ + 39 | 12 | 394 | 612 | 18A |*|*| Host Interface Hardware error. | + 40 | | | | | | | The controller detected an error that indicates a | + 41 | | | | | | | fault in the Host Interface Hardware. | + 42 +------+------+-------+------+-+-+-----------------------------------------------------+ + 43 | 13 | 426 | 652 | 1AA |*|*| Internal Bus error. | + 44 | | | | | | | The controller detected an error that indicates a | + 45 | | | | | | | fault in the Internal Bus Hardware. | + 46 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-12 + 11 June 1992 + + + + 1 Table B-7: "Controller Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 14 | 458 | 712 | 1CA |*|*| Policy Processor error. | + 8 | | | | | | | The controller detected an error that indicates a | + 9 | | | | | | | fault in the internal Policy Processor hardware. | + 10 +------+------+-------+------+-+-+-----------------------------------------------------+ + 11 | 15 | 490 | 752 | 1EA |*| | Fault Management Analysis event | + 12 | | | | | | | Some specific fault management threshold within | + 13 | | | | | | | the controller has been exceeded. The server | + 14 | | | | | | | is still operating with designed functionality and | + 15 | | | | | | | performance. Further analysis is required to | + 16 | | | | | | | determine if Field Service action is needed. For | + 17 | | | | | | | example, a pool of spare memory pages has been two | + 18 | | | | | | | thirds consumed to map around bad pages. This | + 19 | | | | | | | event code would have the informational flag set | + 20 | | | | | | | and the Controller Dependent Information field | + 21 | | | | | | | would be used to further define the event. | + 22 +------+------+-------+------+-+-+-----------------------------------------------------+ + 23 | 16 | 522 | 1012 | 20A |*| | Self Test error. | + 24 | | | | | | | The controller detected an error while executing | + 25 | | | | | | | an internal self test. The error detected may | + 26 | | | | | | | still allow continued operation of the server. For | + 27 | | | | | | | example, a periodic test of an unused device port | + 28 | | | | | | | detects an error in that device port. This event | + 29 | | | | | | | code would use Controller Dependent Information | + 30 | | | | | | | field to further define the event. | + 31 +--------------------------------------------------------------------------------------+ + 32 | 20 | 650 | 1212 | 28A | |*| Remote Connection Lost | + 33 +------+------+-------+------+-+-+-----------------------------------------------------+ + 34 | 21 | 682 | 1252 | 2AA | |*| Remote Connection Request Failed, insufficient | + 35 | | | | | | | resources to request remote connection | + 36 +------+------+-------+------+-+-+-----------------------------------------------------+ + 37 | 22 | 714 | 1312 | 2CA |*|*| Remote Connection Request Failed, subsystem port | + 38 | | | | | | | address responded but subsystem system address does | + 39 | | | | | | | not match | + 40 +------+------+-------+------+-+-+-----------------------------------------------------+ + 41 | 23 | 746 | 1352 | 2EA |*|*| Remote Connection Request Failed, subsystem port | + 42 | | | | | | | address responded but no MSCP server present | + 43 +------+------+-------+------+-+-+-----------------------------------------------------+ + 44 | 24 | 778 | 1412 | 30A |*|*| Remote Connection Request Failed, subsystem port | + 45 | | | | | | | address responded but no resources available | + 46 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-13 + 11 June 1992 + + + + 1 Table B-7: "Controller Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 25 | 810 | 1452 | 32A |*|*| Remote Connection Request Failed, subsystem port | + 8 | | | | | | | address responded but no credits available | + 9 +------+------+-------+------+-+-+-----------------------------------------------------+ + 10 | 26 | 842 | 1512 | 34A |*|*| Remote Connection Request Failed, no response from | + 11 | | | | | | | subsystem port address | + 12 +------+------+-------+------+-+-+-----------------------------------------------------+ + 13 | 27 | 874 | 1552 | 36A |*|*| Remote Connection Request Failed, subsystem port | + 14 | | | | | | | address responding but negative acknowledge retry | + 15 | | | | | | | algorithm exhausted | + 16 +------+------+-------+------+-+-+-----------------------------------------------------+ + 17 | 28 | 906 | 1612 | 38A |*|*| Remote Connection Request Failed, subsystem port | + 18 | | | | | | | request timeout exceeded | + 19 +------+------+-------+------+-+-+-----------------------------------------------------+ + 20 | 29 | 938 | 1652 | 3AA |*|*| Local Connection Request Failed, insufficient | + 21 | | | | | | | resources to request local connection | + 22 +------+------+-------+------+-+-+-----------------------------------------------------+ + 23 | 30 | 970 | 1712 | 3CA |*|*| Local Connection Request Failed, subsystem port | + 24 | | | | | | | address responded but rejected with Disconnected | + 25 +------+------+-------+------+-+-+-----------------------------------------------------+ + 26 | | 31 | 1002 | 1752 | 3EA |*| | Last Fail - Hardware | + 27 | | | | | | | | The controller detected a fatal hardware error | + 28 | | | | | | | | that can not be resolved without bugcheck/reinit- | + 29 | | | | | | | | ialization. After reinitialization the controller | + 30 | | | | | | | | builds a last fail error log packet describing | + 31 | | | | | | | | the reason for the bugcheck. | + 32 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 33 | | 32 | 1034 | 2012 | 40A |*| | Last Fail - Software | + 34 | | | | | | | | The controller detected a fatal software error | + 35 | | | | | | | | that can not be resolved without bugcheck/re- | + 36 | | | | | | | | initialization. After reinitialization the | + 37 | | | | | | | | controller builds a last fail error log packet | + 38 | | | | | | | | describing the reason for the bugcheck. | + 39 | +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-14 + 11 June 1992 + + + 1 Table B-8: "Drive Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 1 | 43 | 53 | 2B |*|*| Drive command time out. | + 8 | | | | | | | For SI drives, the controller's timeout expired | + 9 | | | | | | | for either a level 2 exchange or the assertion of | + 10 | | | | | | | Read/Write Ready after an Initiate Seek. | + 11 +------+------+-------+------+-+-+-----------------------------------------------------+ + 12 | 2 | 75 | 113 | 4B |*|*| Controller detected transmission error. | + 13 | | | | | | | For SI drives, the controller detected an invalid | + 14 | | | | | | | framing code or a checksum error in a level 2 | + 15 | | | | | | | response from the drive. The UDA50 and UDA50A | + 16 | | | | | | | also return this subcode for controller detected | + 17 | | | | | | | protocol errors. All other SI controllers return | + 18 | | | | | | | subcode 10 for protocol errors. | + 19 +------+------+-------+------+-+-+-----------------------------------------------------+ + 20 | 3 | 107 | 153 | 6B |*|*| Positioner error (misseek). | + 21 | | | | | | | The drive reported that a seek operation was | + 22 | | | | | | | successful, but the controller determined that | + 23 | | | | | | | the drive had positioned itself to an incorrect | + 24 | | | | | | | cylinder. | + 25 +------+------+-------+------+-+-+-----------------------------------------------------+ + 26 | 4 | 139 | 213 | 8B |*|*| Lost read/write ready during or between transfers. | + 27 | | | | | | | For SI drives, Read/Write ready was negated when | + 28 | | | | | | | the controller attempted to initiate a transfer | + 29 | | | | | | | or at the completion of a transfer, and | + 30 | | | | | | | Read/Write ready had previously been asserted | + 31 | | | | | | | (indicating completion of the preceding seek). | + 32 | | | | | | | This usually results from a drive detected | + 33 | | | | | | | transfer error, in which case an additional error | + 34 | | | | | | | log message may be generated containing the | + 35 | | | | | | | "Drive detected error" subcode. | + 36 +------+---------------------+-+-+-----------------------------------------------------+ + 37 | 5 | 171 | 253 | AB |*|*| Drive clock dropout. | + 38 | | | | | | | For SI drives, either data or state clock was | + 39 | | | | | | | missing when it should have been present. This | + 40 | | | | | | | is usually detected by means of a timeout. | + 41 +------+------+-------+------+-+-+-----------------------------------------------------+ + 42 | 6 | 203 | 313 | CB |*|*| Lost receiver ready for transfer. | + 43 | | | | | | | For SI drives, Receiver Ready was negated when | + 44 | | | | | | | the controller attempted to initiate a transfer | + 45 | | | | | | | or did not assert at the completion of a | + 46 | | | | | | | transfer. This includes all cases of the | + 47 | | | | | | | controller's timeout expiring for a transfer | + 48 | | | | | | | operation (level 1 real time command). | + 49 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-15 + 11 June 1992 + + + + 1 Table B-8: "Drive Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 7 | 235 | 353 | EB |*|*| Drive detected error. | + 8 | | | | | | | For SI drives, the controller received a Get | + 9 | | | | | | | Status or Unsuccessful response with the EL flag | + 10 | | | | | | | set, or the controller received such a response | + 11 | | | | | | | with the DR flag set and it does not support | + 12 | | | | | | | automatic diagnosis for that drive type. | + 13 +------+------+-------+------+-+-+-----------------------------------------------------+ + 14 | 8 | 267 | 413 | 10B |*|*| Controller detected pulse or state parity error. | + 15 | | | | | | | For SI drives, the controller detected a pulse | + 16 | | | | | | | error on either the state or data line or the | + 17 | | | | | | | controller detected a parity error in a state | + 18 | | | | | | | frame. | + 19 +------+---------------------+-+-+-----------------------------------------------------+ + 20 | 10 | 331 | 513 | 14B |*|*| Controller detected protocol error. | + 21 | | | | | | | For SI drives, a level 2 response from the drive | + 22 | | | | | | | had correct framing codes and checksum, but was | + 23 | | | | | | | not a valid response within the constraints of | + 24 | | | | | | | the SI protocol. That is, the response had an | + 25 | | | | | | | invalid opcode, was an improper length, or was | + 26 | | | | | | | not a possible response in the context of the | + 27 | | | | | | | exchange. | + 28 +------+------+-------+------+-+-+-----------------------------------------------------+ + 29 | 11 | 363 | 553 | 16B |*|*| Drive failed initialization. | + 30 | | | | | | | For SI drives, the drive clock did not resume | + 31 | | | | | | | following a controller attempt to initialize the | + 32 | | | | | | | drive. This implies that the drive encountered a | + 33 | | | | | | | fatal initialization error. | + 34 +------+------+-------+------+-+-+-----------------------------------------------------+ + 35 | 12 | 395 | 613 | 18B |*|*| Drive ignored initialization. | + 36 | | | | | | | For SI drives, the drive clock did not cease | + 37 | | | | | | | following a controller attempt to initialize the | + 38 | | | | | | | drive. This implies that the drive did not | + 39 | | | | | | | recognize the initialization attempt. | + 40 +------+------+-------+------+-+-+-----------------------------------------------------+ + 41 | 13 | 427 | 653 | 1AB |*|*| Receiver Ready collision. | + 42 | | | | | | | For SI drives, the controller attempted to assert | + 43 | | | | | | | its Receiver Ready (to receive a response) and | + 44 | | | | | | | the drive's Receiver Ready was still asserted (to | + 45 | | | | | | | receive a command). | + 46 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-16 + 11 June 1992 + + + 1 Table B-9: "Bad Block Replacement Completion" Event Only Subcode Values + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Event Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | 0 | 20 | 24 | 14 | Bad block successfully replaced. | + 8 +------+------+-------+------+---------------------------------------------------------+ + 9 | 1 | 52 | 64 | 34 | Block verified OK; not a bad block. | + 10 +------+------+-------+------+---------------------------------------------------------+ + 11 | 2 | 84 | 124 | 54 | Replacement failure; REPLACE command or its analogue | + 12 | | | | | failed. | + 13 +------+------+-------+------+---------------------------------------------------------+ + 14 | 3 | 116 | 164 | 74 | Replacement failure; inconsistent RCT. | + 15 +------+------+-------+------+---------------------------------------------------------+ + 16 | 4 | 148 | 224 | 94 | Replacement failure; drive access failure. | + 17 | | | | | One or more transfers specified by the replacement | + 18 | | | | | algorithm failed. | + 19 +------+------+-------+------+---------------------------------------------------------+ + 20 | 5 | 180 | 264 | B4 | Replacement failure; no replacement block available. | + 21 | | | | | Replacement was attempted for a bad block, but a | + 22 | | | | | replacement block could not be allocated (i.e., | + 23 | | | | | the volume's RCT is full). | + 24 +------+------+-------+------+---------------------------------------------------------+ + 25 | 6 | 212 | 324 | D4 | Replacement failure; recursion failure. | + 26 | | | | | Two successive RBNs were bad. | + 27 +------+------+-------+------+---------------------------------------------------------+ + + + + 28 Table B-10: "Media Loader Error" Status or Event Subcode Values + + 29 +------+---------------------+-+-+-----------------------------------------------------+ + 30 | Sub- | Code + Subcode |E|S| | + 31 | code +------+-------+------+V|T| Status or Event Subcode | + 32 | | Dec. | Oct. | Hex. | | | | + 33 +------+------+-------+------+-+-+-----------------------------------------------------+ + 34 | 1 | 55 | 67 | 37 |*|*| Loader command time out | + 35 +------+------+-------+------+-+-+-----------------------------------------------------+ + 36 | 2 | 87 | 127 | 57 |*|*| Controller detected transmission error | + 37 +------+------+-------+------+-+-+-----------------------------------------------------+ + 38 | 3 | 119 | 167 | 77 |*|*| Controller detected protocol error | + 39 +------+------+-------+------+-+-+-----------------------------------------------------+ + 40 | 4 | 151 | 227 | 97 |*|*| Loader detected error | + 41 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-17 + 11 June 1992 + + + 1 Table B-11: "Informational" Event Only Subcode Values + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Event Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | 1 | 54 | 66 | 36 | Media Quality log | + 8 +------+------+-------+------+---------------------------------------------------------+ + 9 | 2 | 86 | 126 | 56 | Unload / Spin down statistics | + 10 +------+------+-------+------+---------------------------------------------------------+ + 11 | 3 | 118 | 166 | 76 | Disk Copy Data Correlation | + 12 +------+------+-------+------+---------------------------------------------------------+ + + + 13 Table B-12: "Subcommand Error" Status or Event Subcode Values + + 14 +------+---------------------+-+-+-----------------------------------------------------+ + 15 | Sub- | Code + Subcode |E|S| | + 16 | code +------+-------+------+V|T| Status or Event Subcode | + 17 | | Dec. | Oct. | Hex. | | | | + 18 +------+------+-------+------+-+-+-----------------------------------------------------+ + 19 | 1024 | Destination/source flag bit: 0=Destination, 1=Source | + 20 +------+------+-------+------+-+-+-----------------------------------------------------+ + 21 | 1 | 62 | 76 | 3E |*|*| Destination -- command timed out | + 22 +------+------+-------+------+-+-+-----------------------------------------------------+ + 23 | 1025 |32830 |100076 | 803E |*|*| Source -- command timed out | + 24 +------+------+-------+------+-+-+-----------------------------------------------------+ + 25 | 2 | 94 | 136 | 5E |*|*| Destination -- inconsistent state | + 26 +------+------+-------+------+-+-+-----------------------------------------------------+ + 27 | 1026 |32862 |100136 | 805E |*|*| Source -- inconsistent state | + 28 +------+------+-------+------+-+-+-----------------------------------------------------+ + 29 | 4 | 158 | 236 | 9E |*|*| Destination -- unrecoverable error | + 30 +------+------+-------+------+-+-+-----------------------------------------------------+ + 31 | 1028 |32926 |100236 | 809E |*|*| Source -- unrecoverable error | + 32 +------+------+-------+------+---------------------------------------------------------+ + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + STATUS AND EVENT CODE DEFINITIONS Page B-18 + 11 June 1992 + + + 1 | Table B-13: "Cache Error" Status or Event Subcode Values + + 2 | +------+---------------------+-+-+-----------------------------------------------------+ + 3 | | Sub- | Code + Subcode |E|S| | + 4 | | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | | Dec. | Oct. | Hex. | | | | + 6 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | | many | | | |*|*| "Data Error" | + 8 | | For every "Data Error" subcode that may be reported as a status code (i.e., for | + 9 | | every subcode listed in Table B-5, "Data Error" Status or Event Subcode Values, | + 10 | | that has an asterisk in the "ST" column), the exact same subcode value may be | + 11 | | returned as a "Cache Error" subcode value. These subcodes indicate that a | + 12 | | transfer to the unit's cache failed for the specified reason. For example, the | + 13 | | subcode value 7 (combined code and subcode value of 249 decimal) indicates that | + 14 | | the cache block accessed is unreadable due to an Uncorrectable ECC Error. | + 15 | | | + 16 | | In addition to the subcode values copied from "Data Error" subcode values, the | + 17 | | subcodes listed below also exist. | + 18 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 19 | | 4 | 153 | 231 | 99 |*| | Cache Disabled | + 20 | | | | | | | | The controller has determined that the ability of | + 21 | | | | | | | | the cache to maintain data integrity is in | + 22 | | | | | | | | question. Therefore, the cache has been disabled. | + 23 | | | | | | | | Note that before the cache is disabled, a cache | + 24 | | | | | | | | flush operation is performed. | + 25 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 26 | | 5 | 185 | 271 | B9 |*|*| Cache Detected Error | + 27 | | | | | | | | For controller internal caches, the controller | + 28 | | | | | | | | received an unsuccessful response from the cache, | + 29 | | | | | | | | indicating a hardware error. | + 30 | +------+------+-------+------+-+-+-----------------------------------------------------+ + 31 | | 6 | 217 | 331 | D9 |*|*| Hardware Port Error | + 32 | | | | | | | | The controller received an unsuccessful response | + 33 | | | | | | | | from the device port, used as a cache, indicating | + 34 | | | | | | | | a hardware error. | + 35 | +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-1 + 11 June 1992 + + + 1 APPENDIX C + + 2 CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS + + + + 3 NOTES + + + 4 o Values for new products are assigned by the Storage Systems + 5 Architecture Group. Requests for new assignments should be addressed + 6 to SSAG::SSAG. + + 7 o Values for unannounced products are given in Appendix G, "Unannounced + 8 Products." + + + + 9 Table C-1: Controller and Unit "Class" Values + + 10 +----------+----------------------------------------------+ + 11 |Class Byte| | + 12 | (decimal)| Subsystem Type | + 13 +----------+----------------------------------------------+ + 14 | 0 | reserved -- must not be assigned | + 15 +----------+----------------------------------------------+ + 16 | 1 | Mass storage controllers | + 17 +----------+----------------------------------------------+ + 18 | 2 | Disk class devices -- DEC Standard 166 disks | + 19 +----------+----------------------------------------------+ + 20 | 3 | Tape class devices | + 21 +----------+----------------------------------------------+ + 22 | 4 | Disk class devices -- DEC Standard 144 disks | + 23 +----------+----------------------------------------------+ + 24 | 5 | Loader class devices (see Note below) | + 25 +----------+----------------------------------------------+ + 26 | 6 | SCSI class devices | + 27 +----------+----------------------------------------------+ + 28 | Note: The Media Loader device class is defined in | + 29 | anticipation of the adoption of a formal media | + 30 | loader architecture. This class value is in | + 31 | current use as dictated by the temporary waiver | + 32 | in Section E.6. | + 33 +---------------------------------------------------------+ + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-2 + 11 June 1992 + + + 1 Table C-2: Mass Storage Controller "Model" Values + + 2 +--------------+------------------------------------------+ + 3 | Model Byte | | + 4 | (decimal) | | + 5 | (see Note 1) | Controller Type | + 6 +--------------+------------------------------------------+ + 7 | 0 | reserved -- must not be assigned | + 8 +--------------+------------------------------------------+ + 9 | 1 | HSC50 | + 10 +--------------+------------------------------------------+ + 11 | 2 | UDA50 | + 12 +--------------+------------------------------------------+ + 13 | 3 | RC25 integrated controller | + 14 +--------------+------------------------------------------+ + 15 | 4 | VMS (software MSCP server) | + 16 +--------------+------------------------------------------+ + 17 | 5 | TU81 integrated controller | + 18 +--------------+------------------------------------------+ + 19 | 6 | UDA5OA | + 20 +--------------+------------------------------------------+ + 21 | 7 | RQDX1/RQDX2 | + 22 +--------------+------------------------------------------+ + 23 | 8 | TOPS 10/20 (software MSCP server) | + 24 +--------------+------------------------------------------+ + 25 | 9 | TQK50 | + 26 +--------------+------------------------------------------+ + 27 | 10 | RUX50 | + 28 +--------------+------------------------------------------+ + 29 | 11 | unassigned | + 30 +--------------+------------------------------------------+ + 31 | 12 | KFBTA | + 32 +--------------+------------------------------------------+ + 33 | 13 | KDA50-Q | + 34 +--------------+------------------------------------------+ + 35 | 14 | TQK70 | + 36 +--------------+------------------------------------------+ + 37 | 15 | RV20 | + 38 +--------------+------------------------------------------+ + 39 | 16 | KRQ50 | + 40 +--------------+------------------------------------------+ + 41 | 17 | unassigned | + 42 +--------------+------------------------------------------+ + 43 | 18 | KDB50 | + 44 +--------------+------------------------------------------+ + 45 | 19 | RQDX3 | + 46 +--------------+------------------------------------------+ + 47 | 20 | see Appendix H, Table H-1 | + 48 +--------------+------------------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-3 + 11 June 1992 + + + + 1 Table C-2: Mass Storage Controller "Model" Values (cont.) + + 2 +--------------+------------------------------------------+ + 3 | Model Byte | | + 4 | (decimal) | | + 5 | (see Note 1) | Controller Type | + 6 +--------------+------------------------------------------+ + 7 | 21 | SSP/DSSI Disk (see Note 2) | + 8 +--------------+------------------------------------------+ + 9 | 22 | SSP/DSSI Tape (see Note 2) | + 10 +--------------+------------------------------------------+ + 11 | 23 | SSP/DSSI Disk and Tape(see Note 2) | + 12 +--------------+------------------------------------------+ + 13 | 24 | SSP/DSSI Other (see Note 2) | + 14 +--------------+------------------------------------------+ + 15 | 25 | TUK50 | + 16 +--------------+------------------------------------------+ + 17 | 26 | unassigned | + 18 +--------------+------------------------------------------+ + 19 | 27 | KDM70 | + 20 +--------------+------------------------------------------+ + 21 | 28 | reserved | + 22 +--------------+------------------------------------------+ + 23 | 29 | TM32 | + 24 +--------------+------------------------------------------+ + 25 | | 30 | RQZX1 (See note 2) | + 26 | +--------------+------------------------------------------+ + 27 | | 31 | KCM44 (Polecat) | + 28 +--------------+------------------------------------------+ + 29 | 32 | HSC70 | + 30 +--------------+------------------------------------------+ + 31 | 33 | HSC40 | + 32 +--------------+------------------------------------------+ + 33 | 34 | HSC60 | + 34 +--------------+------------------------------------------+ + 35 | 35 | HSC90 | + 36 +--------------+------------------------------------------+ + 37 | 36 - 40 | unassigned | + 38 +--------------+------------------------------------------+ + 39 | 41 | see Appendix H, Table H-1 | + 40 +--------------+------------------------------------------+ + 41 | 42 | see Appendix H, Table H-1 | + 42 +--------------+------------------------------------------+ + 43 | 43 - 64 | unassigned | + 44 +--------------+------------------------------------------+ + 45 | 65 | TK50-DEBNT | + 46 +--------------+------------------------------------------+ + 47 | 66 | TBK70 | + 48 +--------------+------------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-4 + 11 June 1992 + + + + 1 Table C-2: Mass Storage Controller "Model" Values (cont.) + + 2 +--------------+------------------------------------------+ + 3 | Model Byte | | + 4 | (decimal) | | + 5 | (see Note 1) | Controller Type | + 6 +--------------+------------------------------------------+ + 7 | 67 - 95 | unassigned | + 8 +--------------+------------------------------------------+ + 9 | 96 | RF30 | + 10 +--------------+------------------------------------------+ + 11 | 97 | RF71 | + 12 +--------------+------------------------------------------+ + 13 | 98 | TF85 | + 14 +--------------+------------------------------------------+ + 15 | 99 | TF70 | + 16 +--------------+------------------------------------------+ + 17 | 100 | RF31 | + 18 +--------------+------------------------------------------+ + 19 | 101 | RF72 | + 20 +--------------+------------------------------------------+ + 21 | 102 | RF73 | + 22 +--------------+------------------------------------------+ + 23 | 103 | TF837 | + 24 +--------------+------------------------------------------+ + 25 | 104 | RF35 | + 26 +--------------+------------------------------------------+ + 27 | 105 | see Appendix H, Table H-1 | + 28 +--------------+------------------------------------------+ + 29 | 106 - 107 | unassigned | + 30 +--------------+------------------------------------------+ + 31 | | 108 - 109 | see Appendix H, Table H-1 | + 32 | +--------------+------------------------------------------+ + 33 | | 110 | TF86 | + 34 +--------------+------------------------------------------+ + 35 | 111 | unassigned | + 36 +--------------+------------------------------------------+ + 37 | 112 | see Appendix H, Table H-1 | + 38 +--------------+------------------------------------------+ + 39 | 113 - 127 | unassigned | + 40 +--------------+------------------------------------------+ + 41 | 128 - 247 | reserved for future use | + 42 +--------------+------------------------------------------+ + 43 | 248 - 250 | see Appendix H, Table H-1 | + 44 +--------------+------------------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-5 + 11 June 1992 + + + + 1 Table C-2: Mass Storage Controller "Model" Values (cont.) + + 2 +--------------+------------------------------------------+ + 3 | Model Byte | | + 4 | (decimal) | | + 5 | (see Note 1) | Controller Type | + 6 +--------------+------------------------------------------+ + 7 | 251 - 255 | unassigned | + 8 +--------------+------------------------------------------+ + 9 | Notes: 1. The preferred method for assigning a | + 10 | controller model value is according to the | + 11 | port protocol used. The recommended model | + 12 | ranges are as follows: | + 13 | | + 14 | o 1-31 SSP | + 15 | o 32-63 CI | + 16 | o 64-95 BVP | + 17 | o 96-127 DSSI | + 18 | o 128-247 Reserved for future use | + 19 | o 248-255 Host Software Servers | + 20 | | + 21 | 2. The model values that reference this note | + 22 | identify the generic type of a SSP/DSSI | + 23 | device at the SSP level. Those values | + 24 | are never returned at the MSCP level but | + 25 | appear here to ensure compatibility with the | + 26 | SSP specification assignments. | + 27 +---------------------------------------------------------+ + + + 28 Table C-3: Disk Drive/Media Identifier Values + + 29 +----------+---------+-------+---------------------------+--------------------------------+ + 30 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 31 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 32 | | | | octal | hex | | + 33 +----------+---------+-------+---------------+-----------+--------------------------------+ + 34 | 0 | reserved -- must not be assigned | + 35 +----------+---------+-------+---------------+-----------+--------------------------------+ + 36 | 1 | DU | RA80 | 022544,010120 | 2564,1050 | 121 MB, 14", fixed | + 37 +----------+---------+-------+---------------+-----------+--------------------------------+ + 38 | 2 | DA | RC25 | 020144,030031 | 2064,3019 | 26 MB, 8", removable | + 39 +----------+---------+-------+---------------+-----------+--------------------------------+ + 40 | 3 | DA | RCF25 | 020144,031431 | 2064,3319 | 26 MB, 8", fixed | + 41 +----------+---------+-------+---------------+-----------+--------------------------------+ + 42 | 4 | DJ | RA60 | 021244,010074 | 22A4,103C | 205 MB, 14", removable | + 43 +----------+---------+-------+---------------+-----------+--------------------------------+ + 44 | 5 | DU | RA81 | 022544,010121 | 2564,1051 | 456 MB, 14", fixed | + 45 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-6 + 11 June 1992 + + + + 1 Table C-3: Disk Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 6 | DU | RD51 | 022544,040063 | 2564,4033 | 10 MB, 5.25", fixed, full | + 8 | | | | | | height | + 9 +----------+---------+-------+---------------+-----------+--------------------------------+ + 10 | 7 | DU | RX50 | 022545,100062 | 2565,8032 | 400 KB, 5.25", single-sided | + 11 | | | | | | 96 TPI floppy, full height, | + 12 | | | | | | dual drives (800 KB total) | + 13 +----------+---------+-------+---------------+-----------+--------------------------------+ + 14 | 8 | DU | RD52 | 022544,040064 | 2564,4034 | 33 MB, 5.25", fixed, full | + 15 | | | | | | height | + 16 +----------+---------+-------+---------------+-----------+--------------------------------+ + 17 | 9 | DU | RD53 | 022544,040065 | 2564,4035 | 71 MB, 5.25", fixed, full | + 18 | | | | | | height | + 19 +----------+---------+-------+---------------+-----------+--------------------------------+ + 20 | 10 | DU | RX33 | 022545,100041 | 2565,8021 | 1200 KB, 5.25", double-sided | + 21 | | | | | | 96 TPI floppy, half height, | + 22 | | | | | | (also accepts RX50 media) | + 23 +----------+---------+-------+---------------+-----------+--------------------------------+ + 24 | 11 | DU | RA82 | 022544,010122 | 2564,1052 | 622 MB, 14", fixed | + 25 +----------+---------+-------+---------------+-----------+--------------------------------+ + 26 | 12 | DU | RD31 | 022544,040037 | 2564,401F | 20 MB, 5.25", fixed, half | + 27 | | | | | | height | + 28 +----------+---------+-------+---------------+-----------+--------------------------------+ + 29 | 13 | DU | RD54 | 022544,040066 | 2564,4036 | 160 MB, 5.25", fixed, full | + 30 | | | | | | height | + 31 +----------+---------+-------+---------------+-----------+--------------------------------+ + 32 | 14 | DU | RRD50 | 022545,021062 | 2565,2232 | 500 MB, 4.75", removable, | + 33 | | | | | | DAD (optical) format | + 34 +----------+---------+-------+---------------+-----------+--------------------------------+ + 35 | 15 | see Appendix H, Table H-2 | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 16 | unassigned | + 38 +----------+---------+-------+---------------+-----------+--------------------------------+ + 39 | 17 | DU | RX18 | 022545,100022 | 2565,8012 | 180 KB, 5.25", single-sided | + 40 | | | | | | 96 TPI floppy, full height, | + 41 | | | | | | (aka RX180) | + 42 +----------+---------+-------+---------------+-----------+--------------------------------+ + 43 | 18 | DU | RA70 | 022544,010106 | 2564,1046 | 280 MB, 5.25", fixed, full | + 44 | | | | | | height | + 45 +----------+---------+-------+---------------+-----------+--------------------------------+ + 46 | 19 | DU | RA90 | 022544,010132 | 2564,105A | 1.216 GB, 9", fixed | + 47 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-7 + 11 June 1992 + + + + 1 Table C-3: Disk Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 20 | see Appendix H, Table H-2 | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 21 | DI | RF30 | 021144,060036 | 2264,601E | 150 MB, 5.25" , fixed, half | + 10 | | | | | | height (DSSI Disk Server) | + 11 +----------+---------+-------+---------------+-----------+--------------------------------+ + 12 | 22 | DI | RF71 | 021144,060107 | 2264,6047 | 400 MB, 5.25" , fixed, half | + 13 | | | | | | height (DSSI Disk Server) | + 14 +----------+---------+-------+---------------+-----------+--------------------------------+ + 15 | 23 - 24 | see Appendix H, Table H-2 | + 16 +----------+---------+-------+---------------+-----------+--------------------------------+ + 17 | 25 | DU | ESE20 | 022513,031224 | 254B,3294 | 120 MB Solid State disk drive | + 18 | | | | | | with data retention | + 19 +----------+---------+-------+---------------+-----------+--------------------------------+ + 20 | 26 | DU | RRD40 | 022545,021050 | 2565,2228 | 500 MB, 4.75", removable, | + 21 | | | | | | DAD (optical) format | + 22 +----------+---------+-------+---------------+-----------+--------------------------------+ + 23 | 27 | DI | RF31 | 021144,060037 | 2264,601F | 381 MB, 5.25" fixed, half | + 24 | | | | | | height (DSSI Disk Server) | + 25 +----------+---------+-------+---------------+-----------+--------------------------------+ + 26 | 28 | DI | RF72 | 021144,060110 | 2264,6048 | 1 GB, 5.25", fixed, full | + 27 | | | | | | height (DSSI Disk Server) | + 28 +----------+---------+-------+---------------+-----------+--------------------------------+ + 29 | 29 | DU | RA92 | 022544,010134 | 2564,105C | 1.5 GB, 9", fixed | + 30 +----------+---------+-------+---------------+-----------+--------------------------------+ + 31 | 30 | unassigned | + 32 +----------+---------+-------+---------------+-----------+--------------------------------+ + 33 | 31 | see Appendix H, Table H-2 | + 34 +----------+---------+-------+---------------+-----------+--------------------------------+ + 35 | 32 | unassigned | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 33 | DI | RFH31 | 021144,062037 | 2264,641F | 190.5 MB, 5.25" fixed, half | + 38 | | | | | | height (DSSI Disk Server) | + 39 +----------+---------+-------+---------------+-----------+--------------------------------+ + 40 | 34 | DI | RFH72 | 021144,062110 | 2264,6448 | 500 MB, 5.25", fixed, full | + 41 | | | | | | height (DSSI Disk Server) | + 42 +----------+---------+-------+---------------+-----------+--------------------------------+ + 43 | 35 | DI | RF73 | 021144,060111 | 2264,6049 | 2 GB, 5.25", fixed | + 44 | | | | | | (DSSI Disk Server) | + 45 +----------+---------+-------+---------------+-----------+--------------------------------+ + 46 | 36 | DI | RFH73 | 021144,062111 | 2264,6449 | 1 GB, 5.25", fixed | + 47 | | | | | | (DSSI Disk Server) | + 48 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-8 + 11 June 1992 + + + + 1 Table C-3: Disk Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 37 | DU | RA72 | 022544,010110 | 2564,1048 | 1.0 GB, 5.25", fixed | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 38 - 39 | unassigned | + 10 +----------+---------+-------+---------------+-----------+--------------------------------+ + 11 | 40 | DU | RA71 | 022544,010107 | 2564,1047 | 700 MB, 5.25", fixed | + 12 +----------+---------+-------+---------------+-----------+--------------------------------+ + 13 | 41 | DI | RFF31 | 021144,061437 | 2264,631F | 200 MB, 5.25", fixed, half | + 14 | | | | | | height. (DSSI Disk Server) | + 15 +----------+---------+-------+---------------+-----------+--------------------------------+ + 16 | 42 | DI | RF35 | 021144,060043 | 2264,6023 | 852 MB, 3.5", fixed | + 17 | | | | | | (DSSI Disk Server) | + 18 +----------+---------+-------+---------------+-----------+--------------------------------+ + 19 | 43 | DI | RFH35 | 021144,062043 | 2264,6423 | 426 MB,3.5", fixed | + 20 | | | | | | (DSSI Disk Server) | + 21 +----------+---------+-------+---------------+-----------+--------------------------------+ + 22 | 44 - 46 | unassigned | + 23 +----------+---------+-------+---------------+-----------+--------------------------------+ + 24 | 47 - 57 | see Appendix H, Table H-2 | + 25 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + 26 Table C-4: Tape Drive/Media Identifier Values + + 27 +----------+---------+-------+---------------------------+--------------------------------+ + 28 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 29 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 30 | | | | octal | hex | | + 31 +----------+---------+-------+---------------+-----------+--------------------------------+ + 32 | 0 | reserved -- must not be assigned | + 33 +----------+---------+-------+---------------+-----------+--------------------------------+ + 34 | 1 | MU | TA78 | 066550,010116 | 6D68,104E | 9-track, PE/GCR modes, 125 ips | + 35 | | | | | | start/stop | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 2 | MU | TU81 | 066551,050121 | 6D69,5051 | 9-track, PE/GCR modes, 25/75 | + 38 | | | | | | ips streamer | + 39 +----------+---------+-------+---------------+-----------+--------------------------------+ + 40 | 3 | MU | TK50 | 066550,130062 | 6D68,B032 | 94 MB, Block Mode Cartridge; | + 41 | | | | | | emulates 9-track operation | + 42 | | | | | | (except read reverse), 75 ips | + 43 | | | | | | streamer | + 44 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-9 + 11 June 1992 + + + + 1 Table C-4: Tape Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 4 | MU | TA81 | 066550,010121 | 6D68,1051 | STI version of the TU81 | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 5 | MU | TA79 | 066550,010117 | 6D68,104F | 9-track, PE/GCR modes, 125 ips | + 10 | | | | | | start/stop | + 11 +----------+---------+-------+---------------+-----------+--------------------------------+ + 12 | 6 | unassigned | + 13 +----------+---------+-------+---------------+-----------+--------------------------------+ + 14 | 7 | MU | TA90 | 066550,010132 | 6D68,105A | 200 MB, Cartridge, Modified | + 15 | | | | | | GCR (IBM 3480 .5" Cartridge | + 16 | | | | | | Tape Format), 79 ips streamer | + 17 +----------+---------+-------+---------------+-----------+--------------------------------+ + 18 | 8 | MU | RV60 | 066545,060074 | 6D65,603C | 2 GB, 12.0", removable, Write | + 19 | | | | | | Once (optical) disk, "tape | + 20 | | | | | | mode"; emulates 9-track | + 21 | | | | | | operation, machine loadable | + 22 +----------+---------+-------+---------------+-----------+--------------------------------+ + 23 | 9 | see Appendix H, Table H-3 | + 24 +----------+---------+-------+---------------+-----------+--------------------------------+ + 25 | 10 | MI | TF85 | 065150,060125 | 6A68,6055 | 2.6 GB .50 Cart. 100 ips, | + 26 | | | | | | 800 KB/sec streamer. for DSSI. | + 27 +----------+---------+-------+---------------+-----------+--------------------------------+ + 28 | 11 | MI | TK70 | 065150,130106 | 6A68,B046 | 300 MB, Block Mode Cartridge; | + 29 | | | | | | emulates 9-track operation | + 30 | | |(TF70) | | | (except read reverse), 100 ips | + 31 | | | | | | streamer | + 32 +----------+---------+-------+---------------+-----------+--------------------------------+ + 33 | 12 | MU | TA91 | 066550,010133 | 6D68,105B | 200MB Cartridge, Modified GCR, | + 34 | | | | | | (IBM 3490 .5" Cartridge Tape | + 35 | | | | | | Format), 79 ips Streamer. Store| + 36 | | | | | | up to 1 GB with Compaction. | + 37 +----------+---------+-------+---------------+-----------+--------------------------------+ + 38 | 13 | unassigned | + 39 +----------+---------+-------+---------------+-----------+--------------------------------+ + 40 | 14 | MU | TK70 | 066550,130106 | 6D68,B046 | 300 MB, Block Mode Cartridge; | + 41 | | | | | | emulates 9-track operation | + 42 | | | | | | (except read reverse), 100 ips | + 43 | | | | | | streamer | + 44 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-10 + 11 June 1992 + + + + 1 Table C-4: Tape Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 15 | MU | RV20 | 066545,060024 | 6D65,6014 | 2 GB, 12.0", removable, Write | + 8 | | | | | | Once (optical) disk, "tape | + 9 | | | | | | mode"; emulates 9-track | + 10 | | | | | | operation | + 11 +----------+---------+-------+---------------+-----------+--------------------------------+ + 12 | 16 | MU | TM32 | 066550,150040 | 6D68,D020 | Gapless tape controller / | + 13 | | | | | | interface | + 14 +----------+---------+-------+---------------+-----------+--------------------------------+ + 15 | | 17 | MU | TA85 | 066550,010125 | 6D68,1055 | 2.6 GB .50 Cartridge with 7 | + 16 | | | | | | | cartridge magazine, 100 ips | + 17 | | | | | | | streamer for KDM/HSC. | + 18 | | | | | | | STI version of the TF85 | + 19 +----------+---------+-------+---------------+-----------+--------------------------------+ + 20 | 18 | see Appendix H, Table H-3 | + 21 +----------+---------+-------+---------------+-----------+--------------------------------+ + 22 | 19 | see Appendix H, Table H-3 | + 23 +----------+---------+-------+---------------+-----------+--------------------------------+ + 24 | 20 | see Appendix H, Table H-3 | + 25 +----------+---------+-------+---------------+-----------+--------------------------------+ + 26 | | 21 | MI | TF86 | 065150,060126 | 6A68,6056 | 6.0 GB .50 Cart. 100 ips, | + 27 | | | | | | | 800 KB/sec streamer. for DSSI. | + 28 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + 29 Table C-5: Media Loader Identifier Values + + 30 +----------+---------+-------+---------------------------+--------------------------------+ + 31 |Model Byte| Device | Media | Media Type Identifier | | + 32 | (decimal)|Type Name| Name +---------------+-----------+ Device (see Note below) | + 33 | | | | octal | hex | | + 34 +----------+---------+-------+---------------+-----------+--------------------------------+ + 35 | 0 | reserved -- must not be assigned | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 1 | none | none | none | none | 64 cartridge jukebox | + 38 +----------+---------+-------+---------------+-----------+--------------------------------+ + 39 | Note: The Media Loader Identifier Values are defined in anticipation of the adoption of | + 40 | a formal media loader architecture. These values are in current use as dictated | + 41 | by the temporary waiver in Section E.6. | + 42 +-----------------------------------------------------------------------------------------+ + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-11 + 11 June 1992 + + + 1 Table C-6: SCSI Storage Device/Media Identifier Values + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 0 | reserved -- must not be assigned | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 1 | DK | RX23 | 021345,100027 | 22E5,8017 | | + 10 +----------+---------+-------+---------------+-----------+--------------------------------+ + 11 | 2 | DK | RX26 | 021345,100032 | 22E5,801A | | + 12 +----------+---------+-------+---------------+-----------+--------------------------------+ + 13 | 3 | DK | RX33 | 021345,100041 | 22E5,8021 | | + 14 +----------+---------+-------+---------------+-----------+--------------------------------+ + 15 | 4 | DK | RZ22 | 021345,120026 | 22E5,A016 | | + 16 +----------+---------+-------+---------------+-----------+--------------------------------+ + 17 | 5 | DK | RZ23 | 021345,120027 | 22E5,A017 | | + 18 +----------+---------+-------+---------------+-----------+--------------------------------+ + 19 | 6 | DK | RZL23 | 021345,123027 | 22E5,A617 | | + 20 +----------+---------+-------+---------------+-----------+--------------------------------+ + 21 | 7 | DK | RZ24 | 021345,120030 | 22E5,A018 | | + 22 +----------+---------+-------+---------------+-----------+--------------------------------+ + 23 | 8 | DK | RZ25 | 021345,120031 | 22E5,A019 | | + 24 +----------+---------+-------+---------------+-----------+--------------------------------+ + 25 | | 9 | DK | RZL24 | 021345,123030 | 22E5,A618 | | + 26 +----------+---------+-------+---------------+-----------+--------------------------------+ + 27 | 10 | unassigned | + 28 +----------+---------+-------+---------------+-----------+--------------------------------+ + 29 | 11 | see Appendix H, Table H-4 | + 30 +----------+---------+-------+---------------+-----------+--------------------------------+ + 31 | 12-13 | unassigned | + 32 +----------+---------+-------+---------------+-----------+--------------------------------+ + 33 | 14 | DK | RZ55 | 021345,120067 | 22E5,A037 | | + 34 +----------+---------+-------+---------------+-----------+--------------------------------+ + 35 | 15 | DK | RZ56 | 021345,120070 | 22E5,A038 | | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 16 | DK | RZ57 | 021345,120071 | 22E5,A039 | | + 38 +----------+---------+-------+---------------+-----------+--------------------------------+ + 39 | 17 | DK | RZ58 | 021345,120072 | 22E5,A03A | tbs | + 40 +----------+---------+-------+---------------+-----------+--------------------------------+ + 41 | 18-20 | unassigned | + 42 +----------+---------+-------+---------------+-----------+--------------------------------+ + 43 | 21 | DK | RZ72 | 021345,120110 | 22E5,A048 | | + 44 +----------+---------+-------+---------------+-----------+--------------------------------+ + 45 | 22 | see Appendix H, Table H-4 | + 46 +----------+---------+-------+---------------+-----------+--------------------------------+ + 47 | 23-49 | unassigned | + 48 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-12 + 11 June 1992 + + + + 1 Table C-6: SCSI Storage Device/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 50 | see Appendix H, Table H-4 | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 51-127 | unassigned | + 10 +----------+---------+-------+---------------+-----------+--------------------------------+ + 11 | 128 | MK | TZ30 | 065351,120036 | 6AE9,A01E | | + 12 +----------+---------+-------+---------------+-----------+--------------------------------+ + 13 | 129 | MK | TZ50 | 065351,120062 | 6AE9,A032 | | + 14 +----------+---------+-------+---------------+-----------+--------------------------------+ + 15 | 130 | MK | TZ70 | 065351,120106 | 6AE9,A046 | | + 16 +----------+---------+-------+---------------+-----------+--------------------------------+ + 17 | 131 | MK | TZ85 | 065351,120125 | 6AE9,A055 | TZ857. | + 18 +----------+---------+-------+---------------+-----------+--------------------------------+ + 19 | | 132 | MK | TZ86 | 065351,120126 | 6AE9,A056 | tbs | + 20 +----------+---------+-------+---------------+-----------+--------------------------------+ + 21 | 133-137 | unassigned | + 22 +----------+---------+-------+---------------+-----------+--------------------------------+ + 23 | 138 | MK | TLZ04 | 065350,146404 | 6AE8,CD04 | | + 24 +----------+---------+-------+---------------+-----------+--------------------------------+ + 25 | 139 | see Appendix H, Table H-4 | + 26 +----------+---------+-------+---------------+-----------+--------------------------------+ + 27 | 140 | MK | TKZ08 | 065350,136410 | 6AE8,BD08 | Exabyte | + 28 +----------+---------+-------+---------------+-----------+--------------------------------+ + 29 | 141 | see Appendix H, Table H-4 | + 30 +----------+---------+-------+---------------+-----------+--------------------------------+ + 31 | 142 | see Appendix H, Table H-4 | + 32 +----------+---------+-------+---------------+-----------+--------------------------------+ + 33 | | 143 | MK | TKZ09 | 065350,136411 | 6AE8,BD09 | Exabyte-2 | + 34 +----------+---------+-------+---------------+-----------+--------------------------------+ + 35 | 144 | MK | TSZ05 | 065351,036405 | 6AE9,3D05 | 9 track 1600 bpi | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 145 | MK | TSZ07 | 065351,035411 | 6AE9,3D09 | 9 track 1600/6250 bpi | + 38 +----------+---------+-------+---------------+-----------+--------------------------------+ + 39 | 146-191 | unassigned | + 40 +----------+---------+-------+---------------+-----------+--------------------------------+ + 41 | 192 | DK | RRD40 | 021345,021050 | 22E5,2228 | | + 42 +----------+---------+-------+---------------+-----------+--------------------------------+ + 43 | 193 | DK | RRD42 | 021345,021052 | 22E5,222A | | + 44 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + CONTROLLER, UNIT, AND MEDIA TYPE IDENTIFIERS Page C-13 + 11 June 1992 + + + + 1 Table C-6: SCSI Storage Device/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 194-255 | unassigned | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | Notes: 1. The preferred method for assigning a model value is according to | + 10 | the device type (i.e. disk, tape, or optical). The recommended model byte | + 11 | ranges are as follows: | + 12 | | + 13 | o 1-127 Disk devices | + 14 | o 128-191 Tape devices | + 15 | o 192-255 Optical disk devices | + 16 | | + 17 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + BUFFER DESCRIPTOR FORMATS Page D-1 + 11 June 1992 + + + 1 APPENDIX D + + 2 BUFFER DESCRIPTOR FORMATS + + + 3 The information in this Appendix is NOT a formal part of MSCP. + 4 The formal specification for buffer descriptors is in the + 5 individual communications mechanism specifications. This + 6 information is summarized here in order to provide a convenient + 7 reference for all buffer descriptors in a single document. + + 8 It is recommended that communications mechanisms adhere as + 9 closely as possible to the following preferred or generic buffer + 10 descriptor format. Although not required by MSCP, similarity of + 11 buffer descriptor format can only simplify the design of host and + 12 controller port drivers. The preferred or generic buffer + 13 descriptor format is as follows: + + 14 31 0 + 15 +-------------------------------+ + 16 | offset to start of buffer | + 17 +-------------------------------+ + 18 | buffer name | + 19 +-------------------------------+ + 20 | connection identifier | + 21 +-------------------------------+ + + 22 The "connection identifier" identifies a specific connection + 23 across which the block data transfer should take place. Thus + 24 this field identifies, in a communications mechanism dependent + 25 manner, the host or node with which the transfer should take + 26 place. The "buffer name" identifies, in a communications + 27 mechanism dependent manner, the buffer or region of memory on + 28 that system to which the transfer should take place. The "offset + 29 to start of buffer" is the byte offset from the beginning of the + 30 named buffer to the point at which the transfer should actually + 31 start. + + 32 The "connection identifier" allows for third party transfers -- + 33 that is, it allows a host to request transfers to or from some + 34 other host's memory. The "buffer name" provides a logical rather + 35 than physical identification of the buffer, thus simplifying + 36 virtual memory management and possibly providing a consistency + 37 check that the buffer is valid. The "offset to start of buffer" + 38 simplifies certain aspects of third party transfers. It allows a + 39 controlling host to accept a transfer from some other host, break + 40 the transfer up into segments, and forward each segment + 41 independently to a controller. Such segmentation of transfers is + 42 especially useful with file systems, in which a contiguous + 43 transfer within a file may require transferring physically + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + BUFFER DESCRIPTOR FORMATS Page D-2 + 11 June 1992 + + + 1 noncontiguous portions of a disk. + + 2 The buffer descriptor used with the CI communications mechanism + 3 uses the exact format illustrated for the generic buffer + 4 descriptor. The "offset to start of buffer" is indeed a byte + 5 offset and the "buffer name" is the CI block transfer buffer + 6 name. The "connection identifier" is the controller's SCA + 7 connection identifier for the connection between the disk class + 8 driver and the disk MSCP server. + + 9 There are two buffer descriptor formats used with the UNIBUS and + 10 QBUS in order to accommodate two different transfer methods: + 11 unmapped and mapped. + + 12 The format for unmapped transfers is as follows: + + 13 31 0 + 14 +-+-----+-----------------------+ + 15 |0| chan|buffer physical address| + 16 +-+-----+-----------------------+ + 17 | reserved | + 18 +-------------------------------+ + 19 | reserved | + 20 +-------------------------------+ + + 21 The format for mapped transfers is as follows: + + 22 31 9 8 0 + 23 +-+-----+-----------------------+ + 24 |1| map register index | offset | + 25 +-+-----+-----------------------+ + 26 |mbz| map register base | + 27 +-------------------------------+ + 28 | reserved | + 29 +-------------------------------+ + + 30 The following interpretation shows that the unmapped transfer + 31 format is consistent with the generic buffer descriptor format. + 32 The UNIBUS and QBUS are inherently single host busses. + 33 Furthermore, all anticipated controllers for these busses only + 34 support a single device class. Therefore there can only be a + 35 single connection between the host and any controller. Thus it + 36 is reasonable to assign a fixed connection identifier of zero. + 37 Secondly, since these busses are not used with any (bus visible) + 38 form of virtual memory, there is no use for the concept of a + 39 logical buffer name. Thus it is reasonable to assign a fixed + 40 buffer name of zero, denoting the entire address space available + 41 on the bus. This leaves the offset field to denote the byte + 42 offset from address zero, or merely the starting address of the + 43 buffer. In order to accommodate VAX-11/780 UBAs, it is necessary + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + BUFFER DESCRIPTOR FORMATS Page D-3 + 11 June 1992 + + + 1 to include the UBA channel number so that controllers can request + 2 UBA purges. This has been placed with the bus address for + 3 controller convenience. + + 4 On the other hand the mapped transfer format, with the exception + 5 of the fixed connection identifier of zero, deviates totally from + 6 the generic buffer descriptor format. See the Storage Systems + 7 Port Specification (SSP) for complete details on mapped + 8 transfers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-1 + 11 June 1992 + + + 1 APPENDIX E + + 2 WAIVERS AND EXCEPTIONS + + + + 3 E.1 UDA50 + + 4 E.1.1 Unit And Controller Revision Numbers + + 5 Waiver: + + 6 Early serial number UDA50 controllers do not return unit + 7 revision numbers in the GET UNIT STATUS end message or + 8 controller revision numbers in the SET CONTROLLER + 9 CHARACTERISTICS end message. + + + 10 E.2 RC25 + + 11 E.2.1 Error Log Message Ordering + + 12 Waiver: + + 13 Under certain circumstances the RC25 will return error log + 14 messages after the corresponding command's end message. + 15 Section 5.9 "Error Messages," requirement #3 of the + 16 requirements controllers must meet in order to not provide + 17 error log sequence numbers, requires that all error log + 18 messages be returned before the corresponding command's end + 19 message. + + 20 The particular circumstances where the error log is returned + 21 after the corresponding command's end message are as follows: + + 22 1. If the host does not abide by the credit limit + 23 supplied by the controller, and posts +1 commands, and an event occurs which requires + 25 the generation of an error log. + + 26 2. If the host abides by the credit limit supplied by + 27 the controller, and posts commands, + 28 and two (or more) events occur which require the + 29 generation of two (or more) error logs. + + 30 3. Sometimes, if while processing Immediate type + 31 commands the host posts commands and + 32 an event occurs which requires the generation of an + 33 error log. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-2 + RC25 11 June 1992 + + + 1 E.2.2 Data Error (subcode "Forced Error") Reporting + + 2 Waiver: + + 3 The RC25 reports Success (subcode "Normal") status instead of + 4 Data Error (subcode "Forced Error") status upon termination + 5 of the following: + + 6 1. a COMPARE HOST DATA command which encounters a + 7 logical block containing a "Forced Error." + + 8 2. the compare portion of a "Compare, Force Error" + 9 modified WRITE command. + + 10 3. the compare portion of a "Force Error" modified WRITE + 11 command when the "Compare Write" unit characteristic + 12 was enabled via an ONLINE or SET UNIT CHARACTERISTICS + 13 command. + + + 14 WARNING + + 15 A discovery was made after this waiver was + 16 approved (and the RC25 already shipped) that + 17 the erroneous behavior described above, + 18 especially with regard to the last two cases + 19 listed, adversely affected the operation of + 20 the Host Initiated Bad Block Replacement + 21 (HIBBR) algorithm described in early versions + 22 of the Digital Storage Architecture Disk + 23 Format (DSDF) specification. One of the most + 24 harmful consequences is that under certain + 25 conditions HIBBR could mark all available + 26 replacement blocks contained on an RC25 disk + 27 as unusable (BAD), thereby rendering the disk + 28 essentially unusable. A brief description, + 29 paraphrasing DSDF V1.4.0, Section 7.5 "Host + 30 Initiated Block Replacement Algorithm," of + 31 how this problem might occur is as follows: + + 32 1. HIBBR determines that the data + 33 obtained from the block being + 34 replaced were invalid, and that the + 35 block was in fact bad. + 36 2. HIBBR scans the RCT to obtain a + 37 replacement block. If RBN found, + 38 proceed to Step 3, below. If RBN not + 39 found proceed to Step 7, below. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-3 + RC25 11 June 1992 + + + 1 3. HIBBR issues a REPLACE command to + 2 revector the LBN to the RBN acquired. + 3 4. HIBBR issues a "Force Error, Compare" + 4 modified WRITE command to the + 5 revectored LBN. + 6 5. Assuming that no other errors occur + 7 during the WRITE, the RC25 reports + 8 Success (subcode "Normal") status. + 9 6. HIBBR assumes that the RBN was bad + 10 because a Data Error (subcode "Forced + 11 Error") status was not returned. + 12 7. HIBBR marks the RCT entry of the RBN + 13 in question as unusable, then + 14 continues processing at Step 2, + 15 above. + 16 8. HIBBR issues a "Force Error" modified + 17 WRITE, of the saved data to the LBN + 18 that was being replaced, puts an + 19 entry in the host's error log + 20 indicating that the replacement + 21 failed, cleans-up the RCT to indicate + 22 replacement is no longer in progress, + 23 and takes whatever host dependent + 24 action is appropriate for a failed + 25 bad block replacement. + + 26 Note that the DSDF HIBBR has since been ECOed + 27 to eliminate the possibility of this problem + 28 (and numerous others) occurring. + + + + 29 E.2.3 Improper Duplicate Unit Number Processing + + 30 Waiver: + + 31 RC25 operation does not fully comply with all Duplicate Unit + 32 Number processing requirements. The specific erroneous + 33 behavior is described below in the form of four operational + 34 cases. + + 35 The case descriptions assume two RC25 drives connected in a + 36 master/slave configuration. Throughout the discussion the + 37 master drive is referred to as "M" and the slave as "S". + + 38 o Case #1 + + 39 Set-up Conditions: + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-4 + RC25 11 June 1992 + + + 1 1. "M" drive spun up with 0/1 unit plug inserted + 2 2. "S" drive spun down with no unit plug (unknown to + 3 the controller) + 4 3. controller initialized and characteristics set + 5 4. "M" unit 0 and "M" unit 1 brought ONLINE to host + 6 5. duplicate unit number condition created by + 7 inserting 0/1 unit number plug into "S" and + 8 attempting to spin it up + + + 9 Improper operation: + + 10 Status code Success (subcode "Duplicate Unit Number") + 11 is not reported in the end messages of all commands + 12 which require it when a duplicate unit number + 13 condition exists and the affected unit is ONLINE to a + 14 host. The improper operation occurs on the following + 15 commands: + + 16 > WRITE + 17 > READ + 18 > ACCESS + 19 > COMPARE HOST DATA + 20 > ERASE + 21 > REPLACE + 22 > SET UNIT CHARACTERISTICS + + + 23 The only command which reports the status correctly + 24 is the GET UNIT STATUS command. The failure occurs + 25 on commands issued to both "M" unit 0 and "M" unit 1. + + 26 o Case #2 + + 27 Set-up Conditions: + + 28 1. "M" unit 0 and "M" unit 1 ONLINE from Case #1 + 29 2. AVAILABLE command issued to "M" unit 0 + + + 30 Improper operation: + + 31 "M" unit 0 enters the "Unit-Available" state instead + 32 of the "Unit-Offline" state as required. + + 33 An ONLINE command directed to "M" unit 0, issued + 34 immediately after the AVAILABLE command, reports + 35 Success (subcode "Duplicate Unit Number") instead of + 36 Unit-Offline (subcode "Duplicate Unit Number"). + 37 Success (subcode "Duplicate Unit Number") status is + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-5 + RC25 11 June 1992 + + + 1 not valid for the ONLINE command. + + 2 In addition, "M" unit 0 is actually brought + 3 "Unit-Online" and subsequent commands execute + 4 successfully, reporting Success (subcode "Normal") + 5 status instead of being rejected with Unit-Offline + 6 (subcode "Duplicate Unit Number") status. That + 7 improper operation occurs on the following commands: + + 8 > GET UNIT STATUS + 9 > WRITE + 10 > READ + 11 > ACCESS + 12 > COMPARE HOST DATA + 13 > ERASE + 14 > REPLACE + 15 > SET UNIT CHARACTERISTICS + + + 16 o Case #3 + + 17 Set-up Conditions: + + 18 1. "M" unit 1 ONLINE from Case #3 + 19 2. AVAILABLE command issued to "M" unit 1 + + + 20 Improper Operation: + + 21 Same as that described in Case #2 with one additional + 22 anomaly: the drive is not spun down as required. + + 23 o Case #4 + + 24 Set-up Conditions: + + 25 1. controller initialized and default host access + 26 timeout allowed to expire resulting in the + 27 controller entering the "Controller-Available" + 28 state + 29 2. "M" drive spun down with 0/1 unit plug inserted + 30 3. "S" drive spun down with 0/1 unit plug inserted + 31 4. controller initialized and characteristics set + + + 32 Improper operation: + + 33 Status code Unit-Offline (subcode "Duplicate Unit + 34 Number") is not reported in the end messages of all + 35 commands which require it when a duplicate unit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-6 + RC25 11 June 1992 + + + 1 number condition exists and the affected unit is not + 2 ONLINE to a host. The RC25 reports status code + 3 Unit-Offline (subcode "Unit Disabled by Field Service + 4 or Internal Diagnostic") instead. The improper + 5 operation occurs on the following commands: + + 6 > ONLINE + 7 > GET UNIT STATUS + 8 > WRITE + 9 > READ + 10 > ACCESS + 11 > COMPARE HOST DATA + 12 > ERASE + 13 > REPLACE + 14 > SET UNIT CHARACTERISTICS + + + 15 The failure occurs on commands issued to both "M" + 16 unit 0 and "M" unit 1. + + + + 17 E.3 HSC And VAX/VMS + + + 18 E.3.1 "Bundled" Shadowing + + 19 Temporary Implementation: + + 20 "Bundled Shadowing" is a VAX/VMS-HSC (models 50 and 70) + 21 specific temporary implementation. A more general approach + 22 to shadowing, referred to as "Unbundled Shadowing," has been + 23 proposed. The "Unbundled Shadowing" specification is + 24 currently in a stable state, lacking only a first + 25 implementation before becoming an approved ECO to MSCP. When + 26 "Unbundled Shadowing" is finally approved the temporary + 27 "Bundled Shadowing" implementation will be eliminated in a + 28 timely fashion. + + 29 E.3.1.1 Shadowing Concepts + + 30 E.3.1.1.1 Shadowing Functionality + + 31 Shadowing is an optional feature of MSCP for enhancing the + 32 availability of critical data by the duplication of the data on + 33 two or more compatible disk volumes so that the data will still + 34 be available if one of the volumes becomes inaccessible. + 35 Furthermore, data which becomes unreadable due to degradation + 36 over a period of time may be repaired by reading the data from + 37 another volume and restoring the data to the failing volume. The + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-7 + HSC And VAX/VMS 11 June 1992 + + + 1 individual volumes containing the duplicate data may be + 2 considered to be members of a 'virtual' volume, which is known as + 3 the shadow set. + + 4 Note that shadowing may decrease the write performance, since new + 5 data must be written to all members of the shadow set. On an + 6 optimizing controller however, shadowing may enhance read + 7 performance, as the data may be read from any member of the + 8 shadow set, and the controller may therefore optimize read + 9 requests across the various members. + + 10 Conceptually, shadowing is implemented by inserting a shadowing + 11 layer between the gatekeeper and bad block replacement layers + 12 (note that controller initiated bad block replacement is + 13 mandatory for shadowing). The shadowing layer recognizes and + 14 manages shadow sets by issuing MSCP requests to the bad block + 15 replacement layer. This section describes the concepts that + 16 shadowing adds to MSCP, the changes to MSCP control message + 17 formats, and the algorithms used by the shadowing layer. Note + 18 that the actual implementation of shadowing need not be a + 19 distinct layer nor use the exact algorithms given here, as long + 20 as all class driver visible results are identical. + + 21 Class Driver + 22 A + 23 | + 24 V + 25 / +----------------------------------+ + 26 / | Gatekeeper | + 27 / +----------------------------------+ + 28 / | Shadowing | + 29 MSCP server +----------------------------------+ + 30 \ | Controller Bad Block Replacement | + 31 \ +----------------------------------+ + 32 \ | Basic MSCP | + 33 \ +----------------------------------+ + + + 34 E.3.1.1.2 Invalid Commands + + 35 Basic MSCP allows considerable flexibility in how extensively a + 36 server checks for invalid commands. For example, if the byte + 37 count in a transfer command is too large, the server may + 38 optionally perform the transfer up to the maximum legal byte + 39 count. As another example, checking that reserved fields + 40 actually contain zero is usually optional. + + 41 This flexibility can cause problems with shadowing. Consider a + 42 write operation on a shadow set where the byte count is too large + 43 or some other field is invalid. The shadowing layer will + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-8 + HSC And VAX/VMS 11 June 1992 + + + 1 decompose the write operations into one subcommand for each + 2 member of the shadow set and, if the members are serviced by + 3 different basic MSCP servers, one server may choose to perform + 4 the transfer while another server may choose to not perform it. + 5 The net result of this series of events is that the shadow set + 6 has become inconsistent, which is unacceptable. + + 7 For this reason, the shadowing layer may not just blindly reissue + 8 commands that it receives as subcommands, but instead, must + 9 guarantee that all subcommands that it issues to the lower + 10 layer(s) are valid. In other words, the shadowing layer must + 11 perform all command validity checking itself, without trusting to + 12 any checking which may be performed by the lower layers. Note + 13 that if the shadowing layer has knowledge of the basic MSCP + 14 layer(s) below it (as will generally be the case in an integrated + 15 controller), and it can guarantee that all of the individual + 16 servers will treat the the command identically, then the + 17 shadowing layer may pass the responsibility of command + 18 verification to the individual servers. + + 19 If this is not the case, the shadowing layer must use one of two + 20 approaches. The first is that it may explicitly check that a + 21 reserved field is zero before it begins processing the command, + 22 and reject the command if the field is nonzero. The second is + 23 that it may totally ignore the contents of the reserved field for + 24 its own internal processing, and explicitly zero the field in any + 25 copies of the command that it issues as subcommands. These + 26 correspond to the options allowed for reserved fields in basic + 27 MSCP, namely rejecting the command or being totally unaffected by + 28 the field's contents. + + 29 For nonreserved fields, the shadowing layer generally must + 30 validate the field before it begins processing the command, and + 31 reject the command if the field's contents are invalid. The only + 32 exception to this general rule is the byte count in a transfer + 33 command. In this case, the shadowing layer must still check that + 34 the byte count is valid, however if the byte count is too large, + 35 the layer may either reject the command before beginning + 36 processing or process the command up to the maximum legal byte + 37 count. The latter case effectively means that the shadowing + 38 layer substitutes the maximum legal byte count for the actual + 39 byte count before processing the command. + + 40 Since the shadowing layer guarantees that it will never issue an + 41 invalid command to a lower layer, any "Invalid Command" errors + 42 returned by a lower layer are internal controller errors and must + 43 be reported as such. The shadowing layer translates "Invalid + 44 Command" status codes to a "Controller Error" status code before + 45 returning such errors to higher layers. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-9 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.3 Virtual And Member Units + + 2 The shadow set itself exists as a virtual unit distinct from any + 3 physical unit, that is, the shadow set itself has a unit number + 4 and context that is distinct from the unit number and context of + 5 any member of the shadow set. The shadow set -- i.e., its unit + 6 number -- may be "Unit-Offline," "Unit-Available," or + 7 "Unit-Online," in a like manner to a real unit. Class drivers + 8 access the shadow set with commands that specify the shadow set's + 9 unit number. Although the full 16 bit unit number range is + 10 available for virtual units, it is suggested that numbers outside + 11 the SDI range (i.e., greater than 4095) be utilized to prevent + 12 possible operator confusion. + + 13 The shadowing layer presents both the individual member units in + 14 the shadow set as well as the virtual unit itself to upper layers + 15 or class drivers for access. It provides full read/write access + 16 to both the shadow set itself and to the member units. It relies + 17 upon the host class driver in combination with the host shadowing + 18 layer to take appropriate actions to ensure shadow set internal + 19 consistency. + + 20 E.3.1.1.4 Shadow Member Compatibility + + 21 Although it is conceptually possible for a shadow set to consist + 22 of a mixture of physical disk types, the overhead could be + 23 significant, and for this reason all members of a shadow set must + 24 be compatible. Two disk volumes are compatible, and therefore + 25 allowable as members of the same shadow set, if and only if the + 26 following geometry parameters are identical: + + 27 1. Unit size + + 28 2. Track size + + 29 3. Group size + + 30 4. Cylinder size + + 31 5. Hardware/software write protect status + + 32 6. Sector size (512/576) + + 33 7. Media type + + 34 Any attempt to create a shadow set with members which do not + 35 conform to the above requirements will be rejected with a status + 36 of "Media Format Error," subcode of "Characteristics Or + 37 Protection Mismatch For Shadow Member." Note that these + 38 parameters, which are returned in the end messages of the GET + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-10 + HSC And VAX/VMS 11 June 1992 + + + 1 UNIT STATUS, ONLINE, and SET UNIT CHARACTERISTICS commands, are + 2 characteristic of a specific disk volume, and that it is possible + 3 for a single disk drive to accept different disk volumes that + 4 have different geometries. + + 5 E.3.1.1.4.1 Hardware Write Protected Shadow Sets + + 6 When there is no intention to write to a shadow set, the shadow + 7 set should be software write protected, not hardware write + 8 protected. Hardware write protection of a shadow set is an + 9 anachronism. Hardware write protection of a shadow set prevents + 10 both bad block replacement and shadow set data repair operations. + + 11 Because hardware write protection prohibits bad block + 12 replacements, blocks which degrade over time will produce "Data + 13 error" subcode values other than "Forced Error." Such errors are + 14 not repairable, and shadow set members on which a block + 15 spontaneously becomes unreadable will be removed from the shadow + 16 set. + + 17 Since spontaneous decay of a block cannot produce a forced error, + 18 all blocks containing forced errors must be present due to + 19 explicit host action. Therefore, there is no need to read + 20 additional members of a hardware write protected shadow set when + 21 one member has a forced error. All members of the shadow set + 22 contain a forced error because they were identical when the + 23 shadow set was formed (an implicit assumption the shadowing layer + 24 must make because no copy operations could be performed). + + 25 The only possible use for a hardware write protected shadow set + 26 is during an attempt to recover data from a shadow set in which + 27 all the members have suffered sufficient data corruption to + 28 require their mounting in a hardware write protected mode, (e.g. + 29 all member RCTs are invalid). In such a case, the normal + 30 shadowing layer algorithms are insufficient to provide a + 31 reasonable probability of recovering the data. Therefore, an + 32 intelligent MSCP controller may choose to implement a shadow set + 33 data recovery mode which is activated by the presence of the + 34 "Ignore Media Format Errors" modifier on an ONLINE command for a + 35 virtual unit. + + 36 If supported, "Ignore Media Format Errors" modifier places the + 37 shadow set in a special data recovery state. In this state, any + 38 error detected while reading one shadow set member will result in + 39 an attempt to read another shadow set member. If all shadow set + 40 members produce an error, the last error received along with any + 41 data transferred will be returned to the host. Member units will + 42 be removed from the shadow set only upon explicit request from + 43 the host. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-11 + HSC And VAX/VMS 11 June 1992 + + + 1 The "Ignore Media Format Errors" modifier is illegal when the + 2 shadow set is not hardware write protected or when the shadow set + 3 is online to another connection. In these cases, the ONLINE + 4 command will produce a status of "Invalid Command" with a subcode + 5 which points to the modifiers field. If the controller does not + 6 support the special data recovery mode, an ONLINE command with + 7 the "Ignore Media Format Errors" modifier will be rejected with a + 8 status of "Invalid Command" and a subcode pointing to the + 9 modifiers field. + + 10 E.3.1.1.5 Shadow Set Management + + 11 This section provides an overview of shadow set management from + 12 the perspective of both the host and the controller, with + 13 numerous details omitted to allow a general understanding of the + 14 principles without adding unnecessary confusion. Later sections + 15 of this specification deal with the actual specifics in a more + 16 rigorous fashion. + + 17 The mechanism for managing the membership of a shadow set is via + 18 the ONLINE, SET UNIT CHARACTERISTICS, and AVAILABLE commands. + 19 Member units are added to the shadow set one at a time, with the + 20 first member also performing an implicit creation of the virtual + 21 unit (effectively causing the virtual unit to transition from + 22 "Unit-Offline" to "Unit-Available"). If the member unit to be + 23 added is "Unit-Available" to the issuing host, it must be added + 24 to the shadow set via the ONLINE command, while if it is + 25 "Unit-Online" to the issuing host, it must be added to the set by + 26 the SET UNIT CHARACTERISTICS command. + + 27 When adding additional members to the shadow set, a host may + 28 specify that all data from the virtual unit is to be copied to + 29 the newly added member (allowing an uninitialized volume to be + 30 consistent with the shadow set). During the process of the + 31 controller copying this data, normal host I/O to all units except + 32 the newly added member is unaffected, with the controller having + 33 the responsibility for correctly segmenting the host I/O and the + 34 internal disk to disk copy operation. + + 35 The state of the virtual unit relative to the issuing host will + 36 remain unchanged by these operations (other than the initial + 37 transition from "Unit-Offline" to "Unit-Available"), so the + 38 issuing host must also issue an ONLINE command addressed to the + 39 virtual unit itself in order to access it with commands requiring + 40 the unit to be in a "Unit-Online" state. If a host issues an + 41 ONLINE command to a virtual unit with no members, it will be + 42 rejected with a status of "Unit-Available," subcode of "No + 43 Members In Shadow Set." + + 44 Once a host brings a virtual unit online, it may still add + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-12 + HSC And VAX/VMS 11 June 1992 + + + 1 members with ONLINE or SET UNIT CHARACTERISTICS commands as + 2 appropriate for the specific physical unit. As previously noted, + 3 such additions will not alter the unit state of the virtual unit; + 4 i.e., it will remain "Unit-Online." + + 5 Removal of a member from a shadow set (other than asynchronous + 6 error states) is accomplished by the host issuing an AVAILABLE + 7 command to the specific member it is desired to remove. On + 8 receipt of this command, the controller will remove the affected + 9 member from the shadow set, place that member in a + 10 "Unit-Available" state, and place the shadow set itself in a + 11 "Unit-Available" state. All other members of the shadow set will + 12 remain in a "Unit-Online" state. + + 13 If an AVAILABLE command is addressed to the virtual unit itself, + 14 the shadow set is placed in a "Unit-Available" state, and all + 15 members remain in a state of "Unit-Online." The host may issue a + 16 modifier which removes all members from the shadow set, placing + 17 the virtual unit in a "Unit-Offline" state. + + 18 Error states within shadowing may be broken into three generic + 19 cases: + + 20 1. Repairable (recoverable) error - A repairable error is + 21 defined as being a data error with a subcode of forced + 22 EDC. Note that although this is usually generated is + 23 the last step of the bad block replacement layer, it may + 24 also be present due to explicit action by the host. The + 25 controller is unable to distinguish these two cases, and + 26 will proceed with the repair process as detailed below. + + 27 2. Unrecoverable (unrepairable) error - This class of + 28 errors encompasses all drive errors which the controller + 29 is unable to recover from after its retry algorithms + 30 have been exhausted. + + 31 3. Controller errors - This class of errors includes not + 32 only those errors currently defined in the MSCP + 33 specification, but also any invalid command errors + 34 returned to the shadowing layer by the MSCP layer. + + + 35 If a forced EDC error (e.g., a repairable error) is detected on a + 36 member of a shadow set while reading, the controller will attempt + 37 to repair the data by reading the equivalent data from an + 38 alternate member of the set, writing the data to the member which + 39 failed, and then returning the (corrected) data to the host. If + 40 a member is determined to be unrepairable, the affected member + 41 will be removed from the set, and the virtual unit will be placed + 42 in a "Unit-Available" state. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-13 + HSC And VAX/VMS 11 June 1992 + + + 1 If an unrecoverable error occurs on a member which is not + 2 associated with a read request, the failing member will be + 3 removed from the shadow set, and the shadow set will be placed in + 4 a "Unit-Available" state. + + 5 E.3.1.1.6 MSCP Command Changes + + 6 One of the goals of shadowing is to attempt to make a virtual + 7 unit present much the same appearance to a host as a physical + 8 unit. For this reason, no new MSCP commands have been added for + 9 shadowing, and only those commands which are involved with + 10 creation and dissolution of a shadow set have new features + 11 (although transfer commands now have a new status code to deal + 12 with errors detected during shadow set operations). + + 13 In the descriptions below, the terms "host" and "connection" are + 14 used interchangeably. Unless otherwise explicitly stated, the + 15 descriptions in Sections E.3.1.1.6.1 through E.3.1.1.6.10 refer + 16 to single host operation. + + 17 E.3.1.1.6.1 ONLINE Command Changes + + 18 The ONLINE command is issued by a host when it is desired to + 19 bring a physical unit which is currently "Unit-Available" to the + 20 issuing host into a shadow set. If the shadow set already exists + 21 at the time of the ONLINE command, the physical unit is added to + 22 the set. If the shadow unit is nonexistent at the time of the + 23 command, the virtual unit representing the shadow set is created + 24 as part of the online process. As part of the addition process, + 25 the host may optionally specify that all data on the virtual + 26 volume be copied to the newly added member, and if this option is + 27 chosen, may also specify that a single definable portion of the + 28 virtual volume be excluded from the copy operation. As mentioned + 29 previously, the state of the virtual unit relative to all hosts + 30 remains unaltered by the addition of a new member to the set, + 31 other than the possible transition from "Unit-Offline" to + 32 "Unit-Available" if the virtual unit did not previously exist. + + 33 If the unit to which the command is issued is currently + 34 "Unit-Online" as a nonmember to any host, the command will be + 35 rejected with a status of "Illegal Command," with the subcode + 36 pointing to the modifiers field. In this case, the command is + 37 rejected without changing the unit state of any unit. + + 38 E.3.1.1.6.1.1 Changes in the ONLINE Command Syntax + + 39 Volume shadowing introduces the following changes to the syntax + 40 of the ONLINE command: + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-14 + HSC And VAX/VMS 11 June 1992 + + + 1 1. Shadow Unit Specified - This modifier is applied to an + 2 ONLINE command addressed to a physical unit to indicate + 3 to the controller that the remaining fields are valid. + 4 If this modifier is clear, all the remaining fields + 5 detailed below are undefined, while if it is set, all + 6 fields must be examined to determine their validity as + 7 detailed below. + + 8 2. Shadow Unit - This field refers to the virtual unit + 9 number to which the new member is to be added. It is 16 + 10 bits in length and may be fully utilized. Four possible + 11 states exist with reference to the passed shadow unit + 12 number: + + 13 a. The specified shadow unit number is already known to + 14 the controller as an existing virtual unit number + 15 with known characteristics. Note this includes the + 16 possibility that the unit has no members but that + 17 the characteristics were previously defined by the + 18 addition of one or more members which were + 19 subsequently removed. The virtual unit will be in + 20 either the "Unit-Online" or "Unit-Available" state. + 21 In this instance, the newly added member is added + 22 into the already existing shadow set (upon + 23 successful completion of the ONLINE command), and + 24 the state of the virtual unit remains unchanged with + 25 respect to the host. + + 26 b. The specified shadow unit number is already known to + 27 the controller as an existing virtual unit number + 28 with unknown characteristics. The virtual unit will + 29 be in the "Unit-Offline" state, substate of "No + 30 Volume Mounted." In this instance, the virtual unit + 31 will be assigned the characteristics of the newly + 32 added member. The virtual unit is placed in the + 33 "Unit-Available" state and an AVAILABLE ATTENTION + 34 message will be sent notifying all hosts of the + 35 existence of a new unit. + + 36 c. The specified shadow unit number is unknown to the + 37 controller. In this instance, the controller will, + 38 during execution of the ONLINE command, 'create' the + 39 virtual unit and assign it the characteristics of + 40 the newly added member. The virtual unit is placed + 41 in a "Unit-Available" state and an AVAILABLE + 42 ATTENTION message will be sent notifying all hosts + 43 of the existence of a new unit. If the ONLINE + 44 command fails after the virtual unit is 'created' + 45 but before the characteristics are assigned, no + 46 AVAILABLE ATTENTION message will be sent and the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-15 + HSC And VAX/VMS 11 June 1992 + + + 1 virtual unit will be left in the "Unit-Offline" + 2 state, substate of "No Volume Mounted." + + 3 d. The specified shadow unit number is known to the + 4 controller as an existing physical unit number. In + 5 this instance, the controller must reject the + 6 attempted ONLINE command with a status of "Invalid + 7 Command," with the subcode pointing to the "Shadow + 8 Unit" field. + + 9 3. Copy Mode - This field is used by the host to indicate + 10 how the entire LBN space on the virtual volume should be + 11 copied to the newly added shadow set member as part of + 12 the online process. + + 13 The virtual unit and the newly added member must be in + 14 the same state with reference to write protection, or + 15 the command will be rejected with a status of "Media + 16 Format Error," subcode of "Characteristics or Protection + 17 Mismatch For Shadow Member." + + 18 The "Copy Mode" field itself is settable at the option + 19 of the host, and may currently take one of three + 20 distinct values. Symbolic names for these values are + 21 defined in Table "Bundled Shadowing" A-a, "Shadow Copy + 22 Mode Operation Codes." The values are: + + 23 a. ZERO, indicating that no copy operation is to be + 24 performed. + + 25 b. ONE, indicating that a FULL copy operation is + 26 performed. The controller will copy all LBNs in the + 27 host area from the virtual unit to the newly added + 28 shadow member (Note that the term 'virtual unit' + 29 implies the entire existing shadow set membership, + 30 so the controller may elect to divide the READ + 31 requests among the various membership). + + 32 c. TWO, indicating that a MERGE copy operation is to be + 33 performed. This operation is identical to the + 34 NORMAL copy operation with one exception. If, + 35 during the copy operation, all members of the shadow + 36 set return a forced error, the controller will + 37 attempt to read the same LBN on the newly added + 38 member, and if successful, will copy this data to + 39 all members of the shadow set. If the data on the + 40 newly added member also has a forced error + 41 indicator, the controller will merely insure that + 42 all members of the shadow set and the newly added + 43 member contain consistent data, flagging the LBN on + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-16 + HSC And VAX/VMS 11 June 1992 + + + 1 all members with the forced error indicator. This + 2 "backwards copy" operation encompasses ONLY the LBN + 3 in error, with the remainder of the copy operation + 4 reverting to the normal mode (unless other errors + 5 are detected). + + 6 The presence of a shadow set member in the merge + 7 copy mode also effects the processing of READ + 8 transfer requests. See Section E.3.1.1.6.1.4 for + 9 details of this effect. + + 10 Note that although this mode of operation may result + 11 in "repairing" an LBN on the shadow set by copying + 12 data from the newly added member, it should only be + 13 invoked when the host has a high degree of + 14 confidence that the member to be added differs from + 15 the rest of the shadow set only by write operations + 16 in progress when the shadow set was "accidentally" + 17 dissolved. + + 18 All other values are undefined and will result in a + 19 returned status of "Invalid Command" with the subcode + 20 pointing to this field. In all but one case, the + 21 command will be rejected without changing the unit state + 22 of any unit. If the unit field specifies a unit which + 23 is already online to the issuing host as a nonmember and + 24 the command is SET UNIT CHARACTERISTICS, the unit state + 25 will be changed to "Unit-Available." + + 26 The presence of a nonzero copy mode field requires + 27 special handling of shadow sets which are write + 28 protected. If the virtual unit is in a hardware write + 29 protect state, then the ONLINE command will be rejected + 30 with a status of "Illegal Command," with the subcode + 31 pointing to the "Copy Mode" field. If the virtual unit + 32 is software write protected, then the write protection + 33 will be disabled on the newly added member for the + 34 duration of the copy operation, and re-enabled when the + 35 copy is completed. + + 36 4. Excluded LBN Block Address - This field may be used by + 37 the host in conjunction with the "Copy Mode" field to + 38 indicate that a specific portion of the virtual volume + 39 is not to be copied to the newly added volume. This + 40 field is valid only if both the "Copy Mode" field and + 41 the "Excluded LBN Count" fields are nonzero. In + 42 addition, if this field is valid it must represent a + 43 host accessible LBN, or the command will be rejected + 44 with a status of "Invalid Command," with the subcode + 45 pointing to the offset of this field. If either the + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-17 + HSC And VAX/VMS 11 June 1992 + + + 1 "Copy Mode" or "Excluded LBN Count" fields are zero, the + 2 contents of this field are undefined. + + 3 5. Excluded LBN Count - This field may be used by the host + 4 in conjunction with the "Copy Mode" and "Excluded LBN + 5 Block Address" fields to indicate that a specific + 6 portion of the virtual volume is not to be copied to the + 7 newly added volume. This field is valid only if the + 8 "Copy Mode" field is nonzero. In addition, if this + 9 field is nonzero, the contents of this field added to + 10 the "Excluded LBN Block Address" must represent a range + 11 of host accessible LBNs, or the command will be rejected + 12 with a status of "Invalid Command," with the subcode + 13 pointing to the offset of this field. If this field is + 14 zero, the contents of the "Excluded LBN Block Address" + 15 field is undefined, and no LBN's will be excluded from + 16 the copy operation. + + 17 E.3.1.1.6.1.2 Changes Which Enforce Shadow Set Membership Rules + + 18 The ONLINE command modified by "Shadow Unit Specified" is + 19 responsible for enforcing all shadow set membership rules. Some + 20 of these rules are listed in Section E.3.1.1.4. Other of these + 21 rules are detailed in the paragraphs which follow. + + 22 A shadow set may consist of only physical volumes, e.g., a host + 23 may not create a shadow set and then attempt to create another + 24 shadow set specifying the virtual unit number of the first set as + 25 a member of the second set. If a host attempts such an + 26 operation, the controller will reject the command with a status + 27 of "Invalid Command," with the subcode pointing to the "Unit" + 28 field. In this case, the command is rejected without changing + 29 the unit state of any unit. + + 30 A physical unit may belong to one and only one shadow set. Any + 31 attempt by a host to add a physical unit which is a member of one + 32 set to another set will be rejected with a status of "Invalid + 33 Command" with the subcode pointing to the "Shadow Unit" field. + 34 In this case, the command is rejected without changing the unit + 35 state of any unit. + + 36 A physical unit cannot be "Unit-Online" both as a member and as a + 37 nonmember. Any attempt by a host to bring a unit which is + 38 already a member of a shadow set online as a nonmember will be + 39 rejected with a status of "Invalid Command" with the subcode + 40 pointing to the "Shadow Unit" field. In this case, the command + 41 is rejected without changing the unit state of any unit. + + 42 If any of the unit characteristics of a member proposed for + 43 addition to a shadow set fail to match those of the already + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-18 + HSC And VAX/VMS 11 June 1992 + + + 1 existing shadow set, the ONLINE command will be rejected with a + 2 status of "Media Format Error," subcode of "Characteristics Or + 3 Protection Mismatch For Shadow Member." In this case, the + 4 physical unit is placed in the "Unit-Available" state. The unit + 5 state of the virtual unit remains unchanged. + + 6 E.3.1.1.6.1.3 Changes in Sequential Gatekeeping + + 7 Since a copy operation takes an extended period of time to + 8 complete, the Sequential command operation of the ONLINE command + 9 is modified somewhat, and is detailed as follows: + + 10 1. The ONLINE command is deferred by the sequential + 11 gatekeeper until such time as all outstanding commands + 12 addressed to both the shadow unit and the physical unit + 13 in question known to the controller have completed. + + 14 2. The ONLINE command is then performed on the controller, + 15 with all commands to both the shadow unit and the + 16 physical unit (except Immediate commands) being deferred + 17 until the noncopy portion has completed. + + 18 3. When the copy portion of the command starts, the gate + 19 imposed by the sequential nature of the ONLINE is + 20 lifted, and all commands directed to the shadow unit may + 21 proceed in parallel with the copy operation. Any + 22 commands (except Immediate commands) directed to the + 23 physical unit prior to completion of the copy operation + 24 will be rejected with a status of "Unit Available," + 25 subcode of "Copy In Progress." + + 26 The copy operation will not be affected by any commands + 27 directed to the virtual unit with two exceptions: + + 28 a. If an AVAILABLE command is addressed to the virtual + 29 unit which would cause the shadow set to dissolve + 30 (see Section E.3.1.1.6.5), the copy operation will + 31 be aborted with a status of "Shadow Set Status Has + 32 Changed." + + 33 b. If the host issues a SET UNIT CHARACTERISTICS to the + 34 virtual unit which would cause the virtual unit (and + 35 all member units) to become software write protected + 36 (see Section E.3.1.1.6.3), the member to which the + 37 copy is being done will only be 'logically' write + 38 protected until completion of the copy (at which + 39 time it will become physically write protected). In + 40 other words, all host attempts to write the virtual + 41 unit must be rejected by the controller with a + 42 status of "Write Protected" even though the member + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-19 + HSC And VAX/VMS 11 June 1992 + + + 1 unit is still physically write enabled for the + 2 duration of the copy operation. Note that any + 3 attempt to directly write the member unit will be + 4 rejected with a status of "Unit-Available," subcode + 5 of "Copy In Progress." + + 6 E.3.1.1.6.1.4 Performing Shadow Copy Operations + + 7 Controllers may optionally allow concurrent addition of more than + 8 one shadow set member requiring a shadow copy. Whenever the + 9 controller's limit on concurrent shadow copy operations is + 10 reached, further attempts to add members with shadow copy + 11 operations must be rejected with a status of "Unit-Available," + 12 subcode of "Copy In Progress." + + 13 At any given point in time, a shadow set may be composed of + 14 members in one of three states: + + 15 1. Full-fledged member, no copy in progress. + 16 2. New member, target of NORMAL copy. + 17 3. New member, target of MERGE copy. + + 18 Because multiple shadow copy operations may be in progress + 19 concurrently, as few as zero units and as many units as permitted + 20 by the controller may be in each of these states. Note: a + 21 shadow set containing zero full-fledged members but one or more + 22 copy members of either type is a short-lived degenerate case. + 23 Based upon the copy algorithms detailed below, lack of any + 24 full-fledged members should quickly produce the expulsion of all + 25 copy members. The remainder of this section will refer to shadow + 26 set member in the various states as full-members, copy-members, + 27 and merge-members, respectively. + + 28 Due to the sequential gatekeeping rules described in Section + 29 E.3.1.1.6.1.3, write operations directed to the shadow set may be + 30 executed concurrently with shadow copy operations. The + 31 controller is responsible for insuring the coordination of writes + 32 to the newly added member in such a manner as to insure shadow + 33 set consistency. Note: this means that ALL write operations + 34 must be propagated to ALL merge-members. Depending upon the + 35 exact shadow copy implementation, write operations may or may not + 36 need to be propagated to one or to all copy-members. + + 37 Also, due to the sequential gatekeeping rules described in + 38 Section E.3.1.1.6.1.3, read operations directed to the shadow set + 39 may be executed concurrently with shadow copy operations. The + 40 controller is responsible for insuring that the data read is NOT + 41 CHANGED by a copy operation, i.e., that an LBN read before it is + 42 copied does not differ from when it is read after it is copied. + 43 This possibility can occur if a merge copy operation is taking + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-20 + HSC And VAX/VMS 11 June 1992 + + + 1 place since the data which ultimately ends up in a particular LBN + 2 can be taken from one of two or more members which MAY contain + 3 different data for that LBN. This implies that LBNs which are + 4 read from a shadow set which is undergoing a shadow merge copy + 5 operation MUST have the copy operation(s) performed on them + 6 before they are read. Depending upon the exact shadow copy + 7 implementation, this shadow copy operation may or may not be + 8 performed redundantly. + + 9 Write operations which fall completely within an excluded region + 10 must NEVER be propagated to either copy-members or merge-members + 11 for which a excluded region has been specified. Obviously, any + 12 shadow copy operation must not copy the excluded region, if one + 13 has been legally specified. The results of writing a multiple + 14 block region some of which lies within the excluded region and + 15 some of which lies outside the excluded region are unpredictable. + 16 Hosts must confine their shadow set write operations to being + 17 either entirely inside or entirely outside the excluded region. + + 18 If the connection between the host class driver and the MSCP + 19 shadowing server is broken during the copy operation or an ABORT + 20 command is received, the controller must terminate the copy + 21 operation within the controller timeout interval. + + 22 All types of shadow copy operation treat the set of full-members + 23 as the primary source of copy data. Whenever copy data cannot be + 24 successfully read from the set of full-members, the set of + 25 merge-members is used as a secondary source of data. A failure + 26 to locate source copy data occurs only when both the set of + 27 full-members and the set of merge-members have been exhausted. + 28 All errors detected during attempts to acquire source copy data + 29 are subject to read repair (exactly as if they occurred during a + 30 normal read operation). In addition, any read repair operation + 31 which repairs using data obtained from a merge-member must write + 32 both all full-members and all merge-members. + + 33 As with normal read and write operations, any unrecoverable error + 34 is cause for removing the failing unit from the shadow set. If + 35 the failing unit is a full-member, the resulting shadow set state + 36 change places the virtual unit in the "Unit-Available" state, but + 37 the shadow copy operation continues (if possible). Note: when a + 38 full-member is failed out of a shadow set due to an error + 39 detected during a shadow copy operation, the host receives no + 40 notification other than rejection of future commands with a + 41 "Unit-Available" status. If the failing unit is either a + 42 copy-member or a merge-member, the ONLINE command is completed + 43 with a status of "Shadow Set Status Has Changed," and the virtual + 44 unit will be placed in a "Unit-Available" state. In the event + 45 that source copy data cannot be located (i.e. no full-member or + 46 merge-member is "readable"), the ONLINE command is completed with + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-21 + HSC And VAX/VMS 11 June 1992 + + + 1 a status of "Shadow Set Status Has Changed." This is equivalent + 2 to having the shadow set membership reduced to zero volumes. + + 3 Whenever all full-members and merge-members contain a forced + 4 error block, a forced error block is written to the shadow copy + 5 target. The controller will select the contents of one + 6 full-member copy of the block and insure that the equivalent + 7 block in all shadow set members including the target of the + 8 shadow copy contains that data with the forced error flag set. + + 9 E.3.1.1.6.1.5 Restrictions and Miscellaneous Notes + + 10 Since the controller is responsible for maintaining the integrity + 11 of the shadow set, it cannot allow the addition of members for + 12 which data reliability cannot be maintained. For this reason, + 13 the "Allow Self Destruction" and "Ignore Media Format Error" + 14 command modifiers are not allowed. If they are specified, the + 15 ONLINE command will be rejected with a status of "Invalid + 16 Command," with the subcode pointing to the offset of the modifier + 17 field. + + 18 If in the process of bringing a member unit online it is + 19 discovered that the RCT is invalid or that an incomplete + 20 replacement cannot be completed, which results in the "Write + 21 Protect (data safety)" unit flag being set, the ONLINE command + 22 will be rejected with a status of "Media Format Error," subcode + 23 of "Characteristics Or Protection Mismatch For Shadow Member." + + 24 E.3.1.1.6.2 ONLINE End Message Changes + + 25 This following changes are made to the ONLINE command end message + 26 for shadowing: + + 27 1. Two additional unit flags are defined for the ONLINE + 28 command end message: + + 29 1. Shadow Set Master - This flag will be set in the + 30 unit flags field by the controller if the "Unit" + 31 field of the command references a virtual unit. + + 32 2. Shadow Set Member - This flag will be set in the + 33 unit flags field by the controller if the "Unit" + 34 field of the command references a unit which is a + 35 member of a shadow set including members which are + 36 the target of a shadow copy operation. + + + 37 2. Two additional fields are defined for the ONLINE end + 38 message: + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-22 + HSC And VAX/VMS 11 June 1992 + + + 1 1. Shadow Status - If the "Shadow Set Master" unit flag + 2 is set (which will only be the case when referencing + 3 the virtual volume itself), this field represents + 4 the total number of members (excluding the virtual + 5 volume) which are currently "Unit-Online" in the + 6 shadow set. Note that this number will include all + 7 members on which copy operations are currently in + 8 progress. + + 9 If the "Shadow Set Member" unit flag is set, this + 10 field will contain the copy mode for this unit. + 11 Note that the values are identical to the copy mode + 12 values permitted in the "Copy Mode" field of the + 13 ONLINE and SET UNIT CHARACTERISTICS commands. A + 14 value of ZERO indicates that no copy operation is in + 15 progress. + + 16 If both the "Shadow Set Master" and "Shadow Set + 17 Member" unit flags are clear, this field is + 18 undefined. + + 19 2. Shadow Unit - This field may take on one of two + 20 distinct values: + + 21 1. If "Shadow Set Master" is set (which will only + 22 be the case when the original command is + 23 addressed to the virtual unit), then this field + 24 represents the lowest unit number of the members + 25 in the shadow set. + + 26 2. If "Shadow Set Member" is set (which will be the + 27 case when the original command is addressed to a + 28 member of the shadow set), then this field + 29 represents the virtual unit number of the shadow + 30 set of which this unit is a member. + + + 31 If both the "Shadow Set Master" and "Shadow Set + 32 Member" unit flags are clear, this field is + 33 undefined. + + + 34 3. Although no architectural limit is placed on the minimum + 35 or maximum number of shadow sets a controller must + 36 support or the number of members in a shadow set, a + 37 controller may elect to restrict the maximum number due + 38 to internal resource limitations. If a controller + 39 elects to reject an operation which would add members to + 40 the shadow set strictly because of internal resource + 41 limitations, the controller must indicate this with a + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-23 + HSC And VAX/VMS 11 June 1992 + + + 1 returned status of "Controller Error," subcode of + 2 "Insufficient Resources." + + 3 4. If the "Shadow Set Master" unit flag is set (implying + 4 that the unit is the virtual volume), then the following + 5 additional changes exist: + + 6 1. The "Multiunit Code" field is zero. + + 7 2. The "Unit Identifier" field is undefined. + + 8 3. The "Media Type Identifier" field contains the media + 9 type of the lowest member unit. + + 10 4. The "Volume Serial Number" field contains zeroes. + + + + 11 E.3.1.1.6.3 SET UNIT CHARACTERISTICS Command Changes + + 12 The SET UNIT CHARACTERISTICS command exists as a way for a host + 13 to bring a unit which is already "Unit-Online" to the issuing + 14 host into a shadow set. If the unit has different + 15 characteristics than those of the shadow set (which would + 16 normally be grounds for rejecting its entry into the shadow set), + 17 this command allows the characteristics to be changed to be in + 18 conformance with the shadow set characteristics as a part of + 19 bringing it into the shadow set. The changes to the SET UNIT + 20 CHARACTERISTICS command are identical to those of the ONLINE + 21 command, with only three additions. + + 22 If a SET UNIT CHARACTERISTICS command is addressed to a physical + 23 unit and the "Shadow" modifier is set (to bring it into a shadow + 24 set), the connection issuing the command MUST be the only one + 25 which has it "Unit-Online." If it is not, the command will be + 26 rejected with a status of "Invalid Command," with the subcode + 27 pointing to the "Unit" field. The unit will be placed in the + 28 "Unit-Available" state relative to the issuing connection. The + 29 state of the referenced virtual unit remains unchanged. + + 30 If a SET UNIT CHARACTERISTICS command is addressed to the virtual + 31 unit, the successful completion of this command will modify not + 32 only the virtual unit itself, but also all member units. + + 33 If a SET UNIT CHARACTERISTICS command is addressed to a member of + 34 a shadow set, it may not alter the characteristics of the member + 35 in such a manner as to violate the requirements set forth + 36 previously for shadow set membership compatibility (hence, a + 37 successful SET UNIT CHARACTERISTICS command addressed to a member + 38 of a shadow set is nothing more than a Sequential NOP). If a + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-24 + HSC And VAX/VMS 11 June 1992 + + + 1 host attempts to modify a member's characteristics in such a + 2 manner as to make it incompatible with the shadow set, the + 3 command will be rejected with a status of "Invalid Command," with + 4 the subcode pointing to the field in error. In this special + 5 case, the unit will not be placed in the "Unit-Available" state + 6 but will remain in the "Unit-Online" state and the state of the + 7 referenced virtual unit will also remain unchanged. + + 8 E.3.1.1.6.4 SET UNIT CHARACTERISTICS End Message Changes + + 9 The SET UNIT CHARACTERISTICS end message modifications are + 10 identical to those for the ONLINE end message. + + 11 E.3.1.1.6.5 AVAILABLE Command Changes + + 12 The AVAILABLE command is the mechanism whereby members may be + 13 removed from a shadow set, or the shadow set itself may be + 14 dissolved. The actual function performed by the AVAILABLE + 15 command depends on whether the command is addressed to a member + 16 of a shadow set, or the virtual unit itself. + + 17 1. If the command is addressed to a member of a shadow set, + 18 that member will transition from "Unit-Online" to a + 19 state of "Unit-Available," and will be removed from the + 20 shadow set, with the shadow set itself being placed in a + 21 "Unit-Available" state. This is the means whereby a + 22 host may remove members from a shadow set while + 23 preserving the shadow set. Note that it is possible for + 24 a host to remove all members from a shadow set while + 25 preserving the virtual volume via this mechanism. + + 26 2. If the command is addressed to the virtual unit, all + 27 members will remain "Unit-Online," and the shadow set + 28 will transition to a "Unit-Available" state. If the + 29 "Spin-down" modifier is present, the end message will + 30 contain a status of "Success," subcode of "Spin-down + 31 Ignored." This is the means whereby a host may place a + 32 virtual unit in the "Unit-Available" state while + 33 preserving the shadow set. + + 34 3. If the command is addressed to a virtual unit and the + 35 "Dissolve" modifier is specified, all member units will + 36 be placed in a state of "Unit-Available," and the + 37 virtual unit will be placed in a state of "Unit-Offline" + 38 (i.e., it will disappear). If the "Spin-down" modifier + 39 is also specified, all member units will be spun down as + 40 part of the transition to the "Unit-Available" state. + 41 This is the means whereby a host may totally dissolve a + 42 shadow set. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-25 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.6.6 GET UNIT STATUS Command End Message Changes + + 2 The end message of a GET UNIT STATUS command has two additional + 3 fields defined, "Shadow Unit" and "Shadow Status." These fields + 4 function in an identical fashion to the fields described + 5 previously for the ONLINE command end message. + + 6 In addition, the GET UNIT STATUS end message also contains the + 7 additional unit flags "Shadow Set Master" and "Shadow Set + 8 Member," which also operate in the same manner as previously + 9 described. + + 10 If the "Shadow Set Master" flag is set in the "Unit Flags" field + 11 (implying that the unit is a virtual unit) and there are members, + 12 then the following changes exist: + + 13 1. The "Multiunit Code" is zero. + + 14 2. The "Unit Identifier" field is undefined. + + 15 3. The "Media Type Identifier" contains the media type of + 16 the lowest member unit. + + 17 4. The hardware and software microcode version number + 18 fields ("Usvrsn" and "Uhvrsn") are undefined. + + 19 5. The "RCT Size" field is zero. + + 20 6. The "RBNs" field contains the replacement blocks per + 21 track for the lowest member unit. + + 22 7. The "RCT Copies" field is zero. + + 23 If the "Shadow Set Master" flag is set in the "Unit Flags" field + 24 and there are no members ("Shadow Status" IS zero), all fields + 25 after the "Unit Flags" field will be zero. + + 26 E.3.1.1.6.7 DETERMINE ACCESS PATHS Command Changes + + 27 If a DETERMINE ACCESS PATHS command is addressed to a virtual + 28 unit, the controller will treat the command as a NOP, but must + 29 follow the rules for sequential command gatekeeping. If this + 30 command is addressed to a member of the shadow set, it will + 31 operate as if the addressed unit were not a member of the shadow + 32 set. + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-26 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.6.8 COMPARE CONTROLLER DATA Command Changes + + 2 If a COMPARE CONTROLLER DATA COMMAND is addressed to a physical + 3 unit, it functions in a manner unchanged from that of basic MSCP. + + 4 If this command is addressed to a virtual unit however, the + 5 controller will interpret it to mean "Compare data on all members + 6 of the shadow set as specified by the LBN and byte count + 7 fields." The controller will perform a read-compare operation on + 8 the specified range on all members of the shadow set, comparing + 9 the data from all members. Six results are possible from this + 10 operation: + + 11 1. If all data compares, the controller will return a + 12 status of "Success." + + 13 2. If the data differs between members, the controller will + 14 return a status of "Compare Error." + + 15 3. If a forced error is detected on one unit with good (and + 16 equivalent) data on all other units, the controller must + 17 repair the forced error as detailed in Section + 18 E.3.1.1.6.9.1. + + 19 4. If forced errors are detected on all units, and the data + 20 in the sectors containing the forced error is identical + 21 on all units, the controller will treat the data as + 22 equal, and proceed with the remainder of the command. + + 23 5. If forced errors are detected on all units, and the data + 24 in the sectors containing the forced error is NOT + 25 identical on all units, the controller will return a + 26 status of "Compare Error." + + 27 6. If an unrecoverable error occurs on a member during the + 28 compare operation, the command will be terminated with a + 29 status of "Shadow Set Status Has Changed." + + 30 It is important for a host to realize that a write operation + 31 directed to an area on which the controller is currently + 32 performing a compare operation may result in a returned status of + 33 "Compare Error" (see Section E.3.1.1.6.9.4). + + 34 E.3.1.1.6.9 Transfer Commands + + 35 The shadowing layer passes transfer operations on nonshadow set + 36 units through to the basic MSCP layer unaltered, and similarly + 37 returns their end messages unaltered. + + 38 Although not recommended, it is perfectly legal for a host to + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-27 + HSC And VAX/VMS 11 June 1992 + + + 1 issue transfer commands to an individual member of a shadow set. + 2 It must be remembered that if a write is issued to a specific + 3 member and not to the other members of the set, the volumes will + 4 no longer be consistent. + + 5 Since the issuance of a transfer command to a specific member of + 6 the set implies that the host is only interested in that specific + 7 unit, the controller will interpret this command to have an + 8 implied "suppress shadowing" action. Failure of the transfer + 9 command will NOT result in an attempt by the controller to repair + 10 the data in the affected block(s) by replacing it with the data + 11 from other members of the shadow set, but will instead result in + 12 the end packet being returned to the host with the appropriate + 13 error status. The member on which the error occurred will NOT be + 14 removed from the shadow set (unless the controller determines + 15 that the unit is inoperative), and the shadow set membership will + 16 continue as it was prior to the command. It should be noted that + 17 issuance of a command to an individual member of a shadow set is + 18 only legal if the issuing host has previously brought that unit + 19 online with the ONLINE command. + + 20 As implied by the statements about the changes in the ending + 21 status for the GET UNIT STATUS command, a shadow unit does not + 22 have an RCT. Thus, transfer commands which attempt to access + 23 LBNs beyond the "host LBN area" will be rejected with a status of + 24 "Invalid Command," with a subcode pointing to either the "Logical + 25 Block Number" or the "Byte Count" depending upon their values. + + 26 E.3.1.1.6.9.1 READ Operations + + 27 Read operations encompass those MSCP commands which obtain data + 28 from the virtual unit, and (may) return that data to the host. + 29 The read commands are ACCESS, COMPARE HOST DATA, and READ. + 30 (COMPARE CONTROLLER DATA is a special READ operation, and has + 31 been detailed in Section E.3.1.1.6.8). + + 32 The shadowing layer performs a shadow read operation as follows. + 33 For each block of the transfer, the layer chooses a member of the + 34 shadow set and attempts the transfer on that unit (note that a + 35 layer may elect to either perform the entire read on one member + 36 or divide that read among several members). If that attempt + 37 succeeds, then that block of the transfer is completed. If that + 38 attempt fails, then either that block of the transfer fails or + 39 that block must be repaired, depending on the cause of the + 40 failure as indicated by its status code and the hardware write + 41 protect status of the shadow set. + + 42 For hardware write protected shadow sets, if the status code is + 43 "Data Error," subcode of "Forced Error," the transfer completes + 44 with that status. The data obtained at that point is the data + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-28 + HSC And VAX/VMS 11 June 1992 + + + 1 returned. If any other error is encountered, the member is + 2 removed from the shadow set and the status returned is "Shadow + 3 Set Status Has Changed." + + 4 For shadow sets that are not hardware write protected, the status + 5 code "Data Error," subcode of "Forced Error," is considered to be + 6 repairable. Any other error is considered to be nonrepairable, + 7 and the layer will not attempt to repair it, but will instead + 8 remove the unit in accordance with Section E.3.1.1.6.10. + + 9 Note that the layer must attempt to repair forced errors, even + 10 though they may have been caused by deliberate host action. If + 11 the forced error was caused by deliberate host action, then the + 12 repair attempt is pointless as it is guaranteed to fail. + 13 However, there is no way for the layer to distinguish between + 14 forced errors due to deliberate host action and forced errors due + 15 to a bad block replacement operation. Forced errors due to + 16 replacements can be repaired, therefore the layer must attempt to + 17 repair all forced errors. If all members of the shadow set + 18 contain a forced error, the controller will report that fact via + 19 the end packet with a status of "Data Error," subcode of "Forced + 20 Error." Note that the virtual unit will remain "Unit-Online," as + 21 will all shadow set members. This may be considered a special + 22 case of error handling in that the normal mechanism of placing + 23 the virtual unit in a "Unit-Available" state is bypassed. + + 24 The repair process consists of two phases. The first phase + 25 searches the other members of the shadow set to find a member + 26 from which the data can be successfully obtained. That is, the + 27 layer tries to read the block on successive members of the shadow + 28 set until it is read without error. The second phase writes the + 29 data obtained by the first phase out to all the members on which + 30 the read failed, including the original member. Note that the + 31 repair process is always performed on a specific, individual + 32 block. Repairable errors on several blocks of a transfer are + 33 handled as several distinct repair operations, each of which can + 34 succeed or fail independently of the others. + + 35 To accomplish the first phase of the repair process, the layer + 36 first initializes a list of the members needing repair to contain + 37 just the one member on which the transfer was originally tried + 38 (and failed). The layer chooses a member of the shadow set not + 39 in the list of members needing repair and attempts to read the + 40 block's data from it with a read operation. If another + 41 repairable error occurs on that read attempt, then that member is + 42 added to the list of members needing repair, the layer chooses + 43 another member of the shadow set, and attempts to read the + 44 block's data from it. This continues until the data is + 45 successfully read from some member or every member of the shadow + 46 set is listed as needing repair. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-29 + HSC And VAX/VMS 11 June 1992 + + + 1 If an unrepairable error is detected on a member while reading + 2 data for the repair operation, that member is removed from the + 3 shadow set, the shadow set is placed in a "Unit-Available" state, + 4 the original command (i.e., the one which caused the repair + 5 operation to be initiated) is returned with a status of "Shadow + 6 Set Status has Changed," and the attempt to find an alternate + 7 unit to read from continues. Note that detection of an + 8 unrepairable error does NOT terminate the repair operation (which + 9 must continue to insure shadow set compatibility), but merely + 10 terminates the original read operation. + + 11 If a repairable error occurs on every member of the shadow set, + 12 then correct data cannot be obtained for that block. The block + 13 is not repaired on any member and that block of the original + 14 transfer command fails with a status of "Data Error," subcode of + 15 "Forced Error." The controller must then insure shadow set + 16 consistency by writing identical data (copied from one of the + 17 members) to all members in the shadow set with the forced error + 18 indicator set. + + 19 If the data is successfully read from some member, the shadowing + 20 layer enters phase two of the repair process. The layer takes + 21 the data and attempts to write it to all the members needing + 22 repair. This is done as a write-compare operation (with the + 23 controller disabling software write protect for the duration of + 24 the repair as necessary). The repair of a member succeeds if the + 25 write-compare to that member succeeds, and fails if the + 26 write-compare fails. If the write-compare operation fails, the + 27 error is considered to be unrepairable and the following actions + 28 take place: + + 29 1. The failed member(s) are placed in the "Unit-Available" + 30 state. + + 31 2. Other members remain in the "Unit-Online" state. + + 32 3. The shadow volume itself is placed in the + 33 "Unit-Available" state. + + 34 4. An end message is returned for the READ operation, with + 35 a failure status indicating "Shadow Set Status Has + 36 Changed." + + + 37 In addition to writing the data to the members needing repair, + 38 the layer also uses the data to satisfy the original transfer + 39 command. In effect, the layer retries the one block of the + 40 transfer command on the member from which it successfully + 41 obtained the data. It can either actually retry the transfer on + 42 that member, retry the transfer on some other member after that + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-30 + HSC And VAX/VMS 11 June 1992 + + + 1 member has been successfully repaired (the write-compare has + 2 succeeded), retry the entire transfer, or accomplish the original + 3 transfer directly using the data it has read. + + 4 The layer must initiate another new repair sequence if the retry + 5 of the original transfer fails with a repairable error. This is + 6 necessary to recover from such errors as a member becoming + 7 inaccessible in the middle of a repair sequence. + + 8 The shadowing layer must not allow the repair sequence to be + 9 aborted. That is, once a repairable error has been detected, the + 10 layer must complete the repair sequence regardless of whether or + 11 not it receives an ABORT command for the original transfer. It + 12 may omit the original transfer's retry if the original transfer + 13 is aborted, but the repair sequence itself -- the read-compare(s) + 14 followed by the write-compare(s) -- must not be affected. + + 15 E.3.1.1.6.9.2 WRITE Operations + + 16 Write operations encompass those MSCP commands which modify data + 17 on the virtual unit, possibly requesting that data from the host. + 18 The write commands are ERASE, FLUSH, and WRITE. + + 19 The shadowing layer performs a shadow write operation in three + 20 phases: + + 21 1. Issue one copy of the original command to the lower + 22 layer for each member of the shadow set (these command + 23 copies are called subcommands). + + 24 2. Handle any errors that occur on the subcommands by + 25 removing the affected members from the shadow set. + + 26 3. Determine the appropriate completion status and report + 27 it to the higher layer or class driver. + + 28 By definition, all members in the shadow set have the identical + 29 write protect status (both hardware and software), so the + 30 shadowing layer need not be concerned about the write protect + 31 status of the individual members. If all the members are write + 32 enabled, the shadowing layer proceeds to the first phase and + 33 issues a copy of the original command to the lower layer for each + 34 member of the shadow set. + + 35 The subcommands to the individual members can be issued and + 36 processed (executed) in any order or concurrently. As the + 37 subcommands complete, the shadowing layer examines their status + 38 codes and divides the subcommands and their associated shadow set + 39 members into three classes: + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-31 + HSC And VAX/VMS 11 June 1992 + + + 1 1. Subcommands that succeed. This class includes commands + 2 that complete with the following status codes: + + 3 1. Success + + 4 2. Data Error with subcode zero (Forced Error) + + 5 3. Command Aborted + + 6 Note that a forced error can only occur on a + 7 write-compare operation with the "Forced Error" + 8 modifier. + + 9 2. Subcommands that indicate that the transfer failed due + 10 to loss of access to the transfer data in host memory. + 11 All failures of this type have a major status code of + 12 "Host Buffer Access Error." + + 13 3. Subcommands that indicate that the transfer failed. + 14 This class includes commands that complete with all + 15 other status codes, including: + + 16 1. Unit-Offline + + 17 2. Unit-Available + + 18 3. Controller Error + + 19 4. Drive Error + + 20 5. Media Format Error + + 21 6. Compare Error + + 22 7. Data Error with nonzero subcode + + 23 Note that an "Invalid Command" status code is converted + 24 to and treated as a "Controller Error," since the + 25 shadowing layer guarantees that it will only issue valid + 26 subcommands. + + 27 After all the subcommands have been completed, the shadowing + 28 layer examines classes 1, 2, and 3 and returns the appropriate + 29 status code as follows: + + 30 1. If there are no members in classes 2 or 3, then the + 31 transfer has succeeded and a status of "Success" is + 32 returned. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-32 + HSC And VAX/VMS 11 June 1992 + + + 1 2. If there are any members in class 2, then the shadow set + 2 enters host write failure recovery as described in + 3 Section E.3.1.1.6.9.3. If there are also members in + 4 class 3, those members are ignored by the host write + 5 failure recovery operation. After the host write + 6 failure recovery is completed, shadow set members in + 7 class 3 are removed from the shadow set as described + 8 below. The status returned in the end message should be + 9 the "Host Buffer Access Error" status and substatus that + 10 placed at least one of the shadow set members into class + 11 2. + + 12 The presence of a shadow set member in class 2 does not + 13 affect the shadow set membership. In this respect, + 14 classes 1 and 2 are identical. + + 15 3. If there are no members in class 2 and some members in + 16 class 3, then: + + 17 1. All class 1 member(s) remain in the "Unit-Online" + 18 state. + + 19 2. All class 3 member(s) are placed in the + 20 "Unit-Available" state. + + 21 3. The shadow volume itself is placed in the + 22 "Unit-Available" state. + + 23 4. An end message is returned for the write operation, + 24 with a failure status indicating "Shadow Set Status + 25 Has Changed." + + + 26 E.3.1.1.6.9.3 Host Write Failure Recovery + + 27 Any write command that fails due to inability to access host + 28 memory must initiate a recovery sequence performed by the + 29 shadowing layer. This recovery sequence has several objectives: + + 30 1. over the region affected by the write operation, + 31 ensuring that all shadow set members contain the same + 32 data. + + 33 2. within the constraints imposed by inability to access + 34 the data buffer described by the write operation, + 35 preserving previously written user data. In many + 36 respects, this objective is identical to the objectives + 37 of a merge copy operation. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-33 + HSC And VAX/VMS 11 June 1992 + + + 1 3. if at least one shadow set member has been fully written + 2 by the write operation, cause the data stored on that + 3 member to be propagated to the remaining shadow set + 4 members. + + 5 The remainder of this section describes the actions that the + 6 shadowing layer must perform during a host write failure recovery + 7 process. This description assumes a shadowing implementation + 8 that contains a separate shadowing layer. Note that the actual + 9 implementation of host write failure recovery processing need not + 10 be done in a distinct layer nor use the exact algorithm given + 11 here, as long as all class driver visible results are identical. + + 12 The host write failure recovery process is an error recovery + 13 operation and is performed as a part of the write command that + 14 failed. Within this context, the host write failure recovery + 15 process is a non-Sequential MSCP operation. Also within this + 16 context, the host write failure recovery process blocks any + 17 Sequential commands received after the original write command + 18 began execution but before the host write failure recovery + 19 process completes. Any Sequential commands received during this + 20 time cannot begin execution until after the host write failure + 21 recovery process completes. + + 22 Although the description above exactly matches the MSCP + 23 definition of a non-Sequential command's effects on a Sequential + 24 command, it is repeated here for emphasis. This feature of host + 25 write failure recovery processing is critical to host + 26 synchronization of I/O requests to the disk region affected by + 27 the host write failure recovery process. + + 28 The host write failure recovery process is composed of the + 29 following steps: + + 30 1. Starting at the specified LBN and proceeding for the + 31 specified number of bytes, the contents of the shadow + 32 set are read. This read proceeds according to the rules + 33 for reading a shadow set described in Section + 34 E.3.1.1.6.9.1. If at least one shadow set member has + 35 been fully written by the write operation, the + 36 controller may at its option use a fully written member + 37 as the preferred source for the read data. + + 38 2. If the read operation results in the removal of some + 39 shadow set members, that removal is postponed until + 40 write failure processing finishes. Whenever the shadow + 41 set contains zero or one operational members, write + 42 failure recovery processing finishes immediately. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-34 + HSC And VAX/VMS 11 June 1992 + + + 1 3. After the read has finished, the data that it read is + 2 written back the shadow set virtual unit. Note this + 3 operation cannot generate any class 2 shadow set members + 4 (as defined in Section E.3.1.1.6.9.2) because no access + 5 to host memory is required. + + + 6 E.3.1.1.6.9.4 Read/Write Concurrency + + 7 It is important for the host to be aware that if multiple + 8 transfer operations are outstanding, the controller provides no + 9 guarantee of the order of the transfer execution and/or + 10 completion. This restriction may result in any of the following + 11 possible inconsistencies: + + 12 1. If both a read and write command are outstanding to the + 13 same LBN, although the final data on the disk will be + 14 the specified write data, the data returned from the + 15 read command may consist of the original data before the + 16 write, the new data after the write, or even a + 17 combination of both (if the transfer encompasses + 18 multiple LBN's). + + 19 2. If two or more write commands are outstanding to the + 20 same LBN, the final data on the disk may consist of the + 21 first write, the second write, or a combination of both + 22 (if the transfer encompasses multiple LBN's). + + 23 3. When a shadow set consists of more than one member, the + 24 issuance of multiple write commands to the same LBN may + 25 result in the above mentioned inconsistencies, with the + 26 added complication of varying combinations across the + 27 individual members of the shadow set. + + 28 4. When a shadow set consists of more than one member, the + 29 issuance of interleaved read and write commands to the + 30 same LBN which result in the controller attempting to + 31 repair the data from the read may result in inconsistent + 32 data across the individual members of the shadow set. + + 33 The above problems may be avoided if the host(s) provide internal + 34 gatekeeping on write commands to an individual LBN. This + 35 gatekeeping may be summarized as "No write command may be issued + 36 which encompasses an LBN if any other I/O operation is currently + 37 outstanding which also encompasses that same LBN." + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-35 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.6.10 Shadow Set Membership Changes + + 2 If a member is removed from the shadow set by either the + 3 controller (e.g., as a result of an unrecoverable error on a + 4 drive), an operator action (e.g., changing the hardware write + 5 protect status), or the host (e.g., as a result of an AVAILABLE + 6 command), the affected member will be placed in a + 7 "Unit-Available" or "Unit-Offline" state, depending on the nature + 8 of the change, and the virtual unit will be placed in a + 9 "Unit-Available" state. + + 10 As a result of this change, all commands known to the controller + 11 which are directed to the affected virtual unit and require the + 12 virtual unit to be in a "Unit-Online" state will be terminated + 13 with a status code of "Shadow Set Status Has Changed." Any + 14 commands received by the controller subsequent to this change + 15 directed to the virtual unit which require the virtual unit to be + 16 in a "Unit-Online" state will be rejected with a status of + 17 "Unit-Available." + + 18 E.3.1.1.6.11 Multihost Access + + 19 A concept which is unique in the multihost environment is that of + 20 "ownership" and "online counts." The controller must maintain + 21 knowledge of all hosts which have brought a specific unit online, + 22 and also know which hosts have which units online. A command + 23 which is addressed to a specific unit will only succeed if that + 24 unit has previously been brought online by the issuing host. At + 25 the same time, the knowledge of "online hosts" must be + 26 maintained. + + 27 Although the higher level management of the shadow set is the + 28 responsibility of the host, many implicit actions are performed + 29 by the controller on behalf of the hosts in a multihost + 30 environment. The sections which follow describe the implicit + 31 actions performed by a controller in a multihost environment. + + 32 E.3.1.1.6.11.1 Member Unit Actions + + 33 When an AVAILABLE command is issued by a host which currently has + 34 the designated unit "Unit-Online," the unit will transition to a + 35 "Unit-Available" state relative to the issuing host, but will + 36 remain "Unit-Online" to all other hosts. The unit itself will + 37 not transition to a "Unit-Available" state relative to the + 38 controller until such time as ALL hosts which have the unit + 39 online issue an AVAILABLE command or the "All Class Drivers" + 40 modifier is used. When no host has the unit "Unit-Online," the + 41 unit will be removed from the shadow set, and the virtual unit + 42 will be placed in a "Unit-Available" state (since the membership + 43 count has changed). In this case, future commands directed to + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-36 + HSC And VAX/VMS 11 June 1992 + + + 1 the virtual unit would be rejected with a status of + 2 "Unit-Available" rather than "Shadow Set Status Has Changed," + 3 since the sequential gatekeeping mechanism would preclude the + 4 possibility of any outstanding commands when the (last) AVAILABLE + 5 message is processed. + + 6 Note that if only one host had the specific unit ONLINE, then if + 7 that host issued an AVAILABLE command, the unit would be removed + 8 from the shadow set and the virtual unit would be placed in a + 9 "Unit-Available" state. This will happen regardless of the + 10 number of hosts which have the shadow set virtual unit ONLINE. + + 11 When processing an ONLINE command with the shadow unit specified + 12 modifier, the controller must first check to see if the specified + 13 virtual unit has already been created by another host. If the + 14 virtual unit is not in existence, it will be created and an + 15 AVAILABLE ATTENTION message will be sent to all other hosts in + 16 accordance with Section 5.8.2. If the virtual unit already + 17 exists and the ONLINE unit flags are identical, several actions + 18 will be taken by the controller as follows: + + 19 1. The shadow set membership will be updated as necessary + 20 to reflect the addition of the new member. Note that if + 21 the member which the requesting host added was already a + 22 member of the shadow set, this step is nugatory (other + 23 than updating the knowledge that the requesting host now + 24 has this unit in a "Unit-Online" state). + + 25 2. The requesting host is informed of the total membership + 26 by the mechanism of the ONLINE (or SET UNIT + 27 CHARACTERISTICS) end message. + + 28 3. Any future requests to the virtual unit by any host will + 29 be addressed to the shadow set as a whole, including + 30 both the new and any pre-existing members. + + 31 The implication of the above items is that if a shadow set is + 32 extended by one host, other hosts will have implicit access to + 33 the new member via the normal shadowing mechanisms, but will not + 34 be explicitly informed of the new members by the controller. At + 35 the same time, only those hosts which have explicitly issued an + 36 ONLINE command to the unit will have access to the individual + 37 unit. Finally, when those hosts which have "privately" added + 38 units to a shadow set crash or issue AVAILABLE commands for those + 39 units, they will be removed from the shadow set. + + 40 In a multihost environment, it is expected that several hosts may + 41 desire to bring members of a shadow set online relative to their + 42 connections. Therefore, commands which would produce results + 43 identical with the current state for a specified "Unit" and + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-37 + HSC And VAX/VMS 11 June 1992 + + + 1 "Shadow Unit" are allowed and are treated as redundant except for + 2 changing the unit state relative to the connection. + + 3 As detailed previously, a unit may not be "Unit-Online" in both + 4 shadowed and nonshadowed mode simultaneously. The implication of + 5 this in a multihost environment is that the individual hosts must + 6 coordinate their activity when bringing a unit into a shadow set. + + 7 E.3.1.1.6.11.2 Shadow Set Virtual Unit Actions + + 8 As noted above, the membership of a shadow set is the union of + 9 all units added to the shadow set by all hosts. Any host + 10 accessing the shadow set effects all units in the shadow set + 11 whether that host added said units or not. + + 12 When a host issues an AVAILABLE command to the shadow set as a + 13 whole, that shadow set will transition to a "Unit-Available" + 14 state relative to the requesting host but will remain + 15 "Unit-Online" to all hosts which have not issued the AVAILABLE + 16 command (unless the "All Class Drivers" modifier is supplied). + 17 When multiple hosts have the shadow set online, the "Dissolve" + 18 modifier will make all shadow set members which the issuing host + 19 has online available with respect to that host. If a given + 20 shadow set member was online only to that host, it will + 21 transition into the "Unit-Available" state and, if the + 22 "Spin-down" modifier was specified, it will spin down. When ONLY + 23 one host has the shadow set and its members online, the + 24 "Dissolve" modifier will remove all members, place the virtual + 25 unit in the "Unit-Offline" state and, if the "Spin-down" modifier + 26 is specified, all members will be spun down. + + 27 When a shadow set membership change is detected, the virtual unit + 28 is placed in the "Unit-Available" state with respect to all + 29 hosts. To regain access to the virtual unit each host must + 30 individually issue an ONLINE command addressed to the virtual + 31 unit. The first host to issue an ONLINE command makes the + 32 virtual unit "Unit-Online" only with respect to itself. The unit + 33 remains in the "Unit-Available" state with respect to other + 34 hosts. + + 35 When a host issues an AVAILABLE command with the "All Class + 36 Drivers" modifier to the shadow set as a whole, that shadow set + 37 will transition to the "Unit-Available" state relative to all + 38 hosts. This action will be carried out even if the shadow set + 39 was "Unit-Available" to the issuing host. If the "Dissolve" + 40 modifier is specified in addition, all members will be removed + 41 from the shadow set and the virtual unit will be placed in the + 42 "Unit-Offline" state and, if the "Spin-down" modifier is + 43 specified, all members will be spun down. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-38 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.6.11.3 Shadow Copy Actions + + 2 For any given physical unit, only one host may have a shadow copy + 3 operation in progress. Subsequent ONLINE commands requesting a + 4 shadow copy operation will be rejected with a status of + 5 "Unit-Available," subcode of "Copy in Progress." + + 6 If an ONLINE command which requests some form of shadow copy + 7 operation is received for a unit which was added without a copy + 8 operation or which has completed a previously requested copy + 9 operation, the copy mode field of the command will be ignored. + 10 The unit will be added to the shadow set without any copy + 11 operation being performed. + + 12 If an ONLINE command which requests some form of shadow copy + 13 operation is received for a unit which is the first member of a + 14 shadow set, the copy mode field of the command will be ignored. + 15 The unit will be added to the shadow set without any copy + 16 operation being performed. + + 17 E.3.1.1.6.11.4 Get Unit Status Actions + + 18 The GET UNIT STATUS command will return the "shadow set master" + 19 and "shadow set member" unit flags, and the Shadow Status and + 20 Shadow Unit fields correctly regardless of whether on not the + 21 specified physical or virtual unit is "Unit-Online" with respect + 22 to the host issuing the command. If one host forms a shadow set + 23 composed of two units, another host can use GET UNIT STATUS to + 24 determine the status of either the virtual unit or the member + 25 units without bringing any of them "Unit-Online" with respect to + 26 itself. + + 27 E.3.1.1.6.12 Error Logs + + 28 Any drive specific error log messages generated as a result of + 29 shadowing operations will be in accordance with Section 5.9. The + 30 command reference number of the message will be that of the + 31 original command reference number directed to the virtual unit + 32 (as opposed to the one issued by the shadowing layer directed to + 33 the MSCP layer), and the drive specific information will be that + 34 of the drive which had the error. The restriction limiting to + 35 three the number of error logs generated for a single error is + 36 extended in the shadowing case to a physical drive basis -- if + 37 errors occur on all members of an 'n' member shadow set, then the + 38 controller must limit its error log messages to three messages + 39 per drive, giving a maximum of 'n' times three messages. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-39 + HSC And VAX/VMS 11 June 1992 + + + 1 E.3.1.1.7 "Bundled Shadowing" Definitions + + 2 The following section contains specific modifier, flag, and + 3 offset information. The tables which follow contain the command + 4 modifier, controller and unit flag, and message offset + 5 definitions specific to "Bundled Shadowing." The tables are + 6 formatted in the same manner as their Appendix A, "Opcode, Flag, + 7 and Offset Definitions" counterparts to ease cross-referencing. + + 8 In addition, Table "Bundled Shadowing" A-a, "Shadow Copy Mode + 9 Operation Codes" contains other definitions specific to + 10 Shadowing. However, it has no Appendix A, "Opcode, Flag, and + 11 Offset Definitions" counterpart. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-40 + HSC And VAX/VMS 11 June 1992 + + + 1 Table "Bundled Shadowing" A-2: Command Modifiers + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 6 +------+-------+------+--------+-----------------+----------------------------------------+ + 7 | AVAILABLE Command Modifiers: | | + 8 | 4 | 20 | 10 | MD.DIS | MSCP$x_MD_DSOLV | Dissolve Shadow Set | + 9 +------+-------+------+--------+-----------------+----------------------------------------+ + 10 | ONLINE and SET UNIT CHARACTERISTICS Command Modifiers: | + 11 | 4 | 20 | 10 | MD.SHD | MSCP$x_MD_SHDSP | Shadow Unit Specified | + 12 +------+-------+------+--------+-----------------+----------------------------------------+ + 13 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 14 | defined as a bit number (offset) or an "M" if defined as a mask. | + 15 +-----------------------------------------------------------------------------------------+ + + + 16 Table "Bundled Shadowing" A-4: Controller Flags + + 17 +------+--------------+--------------------------+----------------------------------------+ + 18 | Bit | Bit Mask | Preferred Mnemonics | | + 19 |Number+-------+------+--------------------------+ Controller Flag | + 20 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 21 +------+-------+------+--------+-----------------+----------------------------------------+ + 22 | 1 | 2 | 2 | CF.SHD | MSCP$x_CF_SHADW | Shadowing | + 23 +------+-------+------+--------+-----------------+----------------------------------------+ + 24 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 25 | defined as a bit number (offset) or an "M" if defined as a mask. | + 26 +-----------------------------------------------------------------------------------------+ + + + 27 Table "Bundled Shadowing" A-5: Unit Flags + + 28 +------+--------------+--------------------------+----------------------------------------+ + 29 | Bit | Bit Mask | Preferred Mnemonics | | + 30 |Number+-------+------+--------+-----------------+ Unit Flag | + 31 | | Octal | Hex. | 16 bit |32 bit (see note)| | + 32 +------+-------+------+--------+-----------------+----------------------------------------+ + 33 | 14 | 40000 | 4000 | UF.MEM | MSCP$x_UF_SSMEM | Shadow Set Member | + 34 +------+-------+------+--------+-----------------+----------------------------------------+ + 35 | 9 | 1000 | 200 | UF.MST | MSCP$x_UF_SSMST | Shadow Set Master | + 36 +------+-------+------+--------+-----------------+----------------------------------------+ + 37 | Note: The "x" in a 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 38 | defined as a bit number (offset) or an "M" if defined as a mask. | + 39 +-----------------------------------------------------------------------------------------+ + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-41 + HSC And VAX/VMS 11 June 1992 + + + 1 Table "Bundled Shadowing" A-6: Command Message Offsets + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | ONLINE and SET UNIT CHARACTERISTICS Command Message Offsets: | + 8 | 20 | 24 | 14 | P.EXBA | MSCP$L_EXCL_LBA | 4 | Excluded LBN Address | + 9 | 24 | 30 | 18 | P.EXBC | MSCP$W_EXCL_LBC | 2 | Excluded LBN Count | + 10 | 32 | 40 | 20 | P.SHUN | MSCP$W_SHDW_UNT | 2 | Shadow unit | + 11 | 34 | 42 | 22 | P.CPMD | MSCP$W_COPY_MOD | 2 | Copy mode (see Table "Bundled | + 12 | | | | | | | Shadowing" A-a) | + 13 +------+------+------+--------+-----------------+-------+---------------------------------+ + 14 | Note: An asterisk (*) in the field size indicates that the size varies. | + 15 +-----------------------------------------------------------------------------------------+ + + + 16 Table "Bundled Shadowing" A-7: End and Attention Message Offsets + + 17 +--------------------+--------------------------+-------+---------------------------------+ + 18 | Offset Value | Preferred Mnemonics | Field | | + 19 +------+------+------+--------+-----------------+ Size | Field Description | + 20 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 21 +------+------+------+--------+-----------------+-------+---------------------------------+ + 22 | GET UNIT STATUS End Message Offsets: | | | + 23 | 32 | 40 | 20 | P.SHUN | MSCP$W_SHDW_UNT | 2 | Shadow unit | + 24 | 34 | 42 | 22 | P.SHST | MSCP$W_SHDW_STS | 2 | Shadow status (see Table | + 25 | | | | | | | "Bundled Shadowing" A-a) | + 26 +------+------+------+--------+-----------------+-------+---------------------------------+ + 27 | ONLINE and SET UNIT CHARACTERISTICS End Message offsets: | + 28 | 32 | 40 | 20 | P.SHUN | MSCP$W_SHDW_UNT | 2 | Shadow unit | + 29 | 34 | 42 | 22 | P.SHST | MSCP$W_SHDW_STS | 2 | Shadow status (see Table | + 30 | | | | | | | "Bundled Shadowing" A-a) | + 31 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-42 + HSC And VAX/VMS 11 June 1992 + + + 1 Table "Bundled Shadowing" A-a: Shadow Copy Mode Operation Codes + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Opcode Value | Preferred Mnemonics | | + 4 +------+------+------+--------+-----------------+ Operation | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 6 +------+------+------+--------+-----------------+-----------------------------------------+ + 7 | 0 | 0 | 0 | CM.NOC | MSCP$K_CM_NOCPY | No Copy | + 8 +------+------+------+--------+-----------------+-----------------------------------------+ + 9 | 1 | 1 | 1 | CM.NCP | MSCP$K_CM_COPY | Normal Copy | + 10 +------+------+------+--------+-----------------+-----------------------------------------+ + 11 | 2 | 2 | 2 | CM.MCP | MSCP$K_CM_MGCPY | Merge Copy | + 12 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + 13 E.3.1.1.8 "Bundled Shadowing" Specific Status Code Definitions + + 14 The following tables contain the status code definitions specific to "Bundled Shadowing." The + 15 tables are formatted in the same manner as their Appendix B, "Status and Event Code Definitions" + 16 counterparts to ease cross-referencing. + + 17 Table "Bundled Shadowing" B-1: Status and Event Codes + + 18 +--------------------+--------------------------+-----------------------------------------+ + 19 | Value | Preferred Mnemonics | | + 20 +------+------+------+--------+-----------------+ Status or Event Code | + 21 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 22 +------+------+------+--------+-----------------+-----------------------------------------+ + 23 | 12 | 14 | C | ST.SSS | MSCP$K_ST_SHST | Shadow Set Status Has Changed | + 24 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-43 + HSC And VAX/VMS 11 June 1992 + + + 1 Table "Bundled Shadowing" B-2: Status Only Subcode Values + + 2 +------+---------------------+------------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Status Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+------------------------------------------------------------+ + 7 | "Unit-Available" Subcode values: | + 8 | 2 | 68 | 104 | 44 | Shadow Set Copy In Progress | + 9 | | | | | This subcode is returned while a copy operation is in | + 10 | | | | | progress if any of the following circumstances occur: | + 11 | | | | | 1) any command is issued directly to the copy recipient; | + 12 | | | | | 2) the controller dependent number of copy operations in | + 13 | | | | | progress limit has already been reached; or 3) another | + 14 | | | | | host has already initiated a copy operation to the unit. | + 15 | | | | | Note that this bit may also be returned in the "Shadow | + 16 | | | | | Status" field of a GET UNIT CHARACTERISTICS end | + 17 | | | | | message if the command is directed to a shadow set | + 18 | | | | | member on which a copy is in progress. | + 19 | 4 | 132 | 204 | 84 | No Members In Shadow Set | + 20 | | | | | An ONLINE command was addressed to the virtual unit of | + 21 | | | | | an existing shadow set from which all members have | + 22 | | | | | been removed. | + 23 +------+------+-------+------+------------------------------------------------------------+ + 24 | "Shadow Set Status Has Changed" Subcode values: | + 25 | 0 | 12 | 14 | C | Subcodes are not used. | + 26 | | | | | In general this status code is returned as the result of | + 27 | | | | | a shadow set member being removed from a shadow set. See | + 28 | | | | | specific references in the "Bundled Shadowing" | + 29 | | | | | specification for details of particular circumstances | + 30 | | | | | under which this status code is returned. | + 31 +------+------+-------+------+------------------------------------------------------------+ + + + 32 Table "Bundled Shadowing" B-3: "Media Format Error" Status or Event Subcode Values + + 33 +------+---------------------+-+-+--------------------------------------------------------+ + 34 | Sub- | Code + Subcode |E|S| | + 35 | code +------+-------+------+V|T| Status or Event Subcode | + 36 | | Dec. | Oct. | Hex. | | | | + 37 +------+------+-------+------+-+-+--------------------------------------------------------+ + 38 | 4 | 133 | 205 | 85 | |*| Characteristics Or Protection Mismatch For Shadow | + 39 | | | | | | | Member | + 40 | | | | | | | The geometry or write protect state of a physical | + 41 | | | | | | | unit being added to a shadow set does not match | + 42 | | | | | | | that of the shadow set or the physical unit's Write | + 43 | | | | | | | Protect (data safety) unit flag is set. | + 44 +------+------+-------+------+-+-+--------------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-44 + HSC And VAX/VMS 11 June 1992 + + + 1 Table "Bundled Shadowing" B-7: "Controller Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+--------------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+--------------------------------------------------------+ + 7 | 10 | 330 | 512 | 14A | |*| Insufficient Resources | + 8 | | | | | | | The controller is unable to honor a request to | + 9 | | | | | | | create a shadow set or to add an additional member | + 10 | | | | | | | to an existing shadow set, due to a lack of internal | + 11 | | | | | | | resources to support the new entity. Note that this | + 12 | | | | | | | subcode must not be used for any other purpose. | + 13 +------+------+-------+------+-+-+--------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-45 + TU81 11 June 1992 + + + 1 E.4 TU81 + + 2 E.4.1 "Enable Miscellaneous Error Log Messages" Modifier Not + 3 Fully Supported + + 4 Waiver: + + 5 The TU81 does not fully support the "Enable Miscellaneous + 6 Error Log Messages" modifier to the SET CONTROLLER + 7 CHARACTERISTICS command as required by Section 5.6, + 8 "Controller Flags." If the modifier is set by the host the + 9 TU81 merely ignores it and returns it clear in the end + 10 message of the SET CONTROLLER CHARACTERISTICS command. + + + 11 E.5 VAX/VMS + + 12 E.5.1 Bad Block Replacement Attempt Error Log Usage + + 13 Usage Note: + + 14 VAX/VMS implements usage of the BAD BLOCK REPLACEMENT ATTEMPT + 15 error log message format for host-initiated bad block + 16 replacement operations performed by VMS. Error log messages + 17 so generated supply all message fields in conformance to the + 18 MSCP specification with the exception of the "sequence + 19 number" field. In VMS generated error log messages, the + 20 "sequence number" field has all bits set (numeric value -1). + + 21 E.6 RV80 + + 22 E.6.1 Media Loader Error Logs + + 23 Waiver: + + 24 Add or modify the following sections of the MSCP specification to + 25 include the means by which an MSCP or TMSCP controller can + 26 generate Media Loader Error Logs: + + 27 o Modify section 4.17 "Controller and Unit Identifiers" + 28 o Add new section "Media Loader Error Log" + 29 o Modify table A-8 "Error Log Message Offsets + 30 o Modify table A-9 "Error Log Message Format Codes" + 31 o Modify table B-1 "Status and Event Codes" + 32 o Add table B-10 "Media Loader Error Status and + 33 Event Subcode Values" + 34 o Modify table C-1 "Controller and Unit Class Values" + 35 o Add table C-5 "Media Loader Values" + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-46 + RV80 11 June 1992 + + + 1 Impact: + + 2 Host error log report generators must be modified to respond to + 3 the new format appropriately. If the error report generator + 4 modification is not implemented for VMS Version 5.0, the Ptolemy + 5 Optical Library schedule will be delayed until the next version + 6 release of VMS. + + 7 This ECO does *not* request that any operating system respond to + 8 a media loader as a new device, just to interpret its error logs. + + 9 E.6.1.1 Controller And Unit Identifiers + + 10 Section 4.17, "Controller and Unit Identifiers," is modified to + 11 read as follows: + + 12 4.17 Controller, Media Loader, and Unit Identifiers + + 13 MSCP requires that all controllers, media loaders, and drives + 14 have unique identifiers, called controller identifiers, media + 15 loader identifiers, and unit identifiers. The structure of these + 16 identifiers is as follows: + + 17 31 0 + 18 +-------------------------------+ + 19 | unique device number | + 20 +-------+-------+ + + 21 | class | model | | + 22 +-------+-------+---------------+ + + 23 The "class" byte identifies the type of the subsystem -- + 24 controller, media loader, disk drive, etc. The "model" byte + 25 identifies the exact model of the subsystem within its class. + 26 All valid class and model codes are nonzero, implying that all + 27 valid identifiers are nonzero. The "unique device number" field + 28 must uniquely identify the device among all devices of that same + 29 class and model. The device serial number could be used as the + 30 "unique device number," though that isn't required. Currently + 31 defined values for the "class" and "model" bytes are listed in + 32 Appendix C, "Controller, Unit, and Media Type Identifiers." + 33 Table C-1, "Controller and Unit 'Class' Values" contains the + 34 "class" values for controllers, media loaders, and drives. Table + 35 C-2, "Mass Storage Controller 'Model' Values" contains the + 36 "model" values for both disk and tape controllers. Tables C-3, + 37 "Disk Drive/Media Identifier Values," C-4, "Tape Drive/Media + 38 Identifier Values," and C-5, "Media Loader Identifier Values," + 39 contain the "model" values for disk drives, tape drives, and + 40 media loaders, respectively. Values for new devices must be + 41 added to those tables via an ECO to this specification as new + 42 products are developed. Note that different units of multiunit + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-47 + RV80 11 June 1992 + + + 1 drives are distinguished by having different "model" bytes; the + 2 "class" and "unique device number" fields are typically + 3 identical. Note also that all MSCP servers for the same device + 4 class within the same controller must return the same controller + 5 identifier. + + 6 As previously stated, MSCP requires that controller and unit + 7 identifiers be unique across all devices accessible via MSCP. + 8 This clearly cannot be checked by controllers. Controllers can, + 9 however, enforce unique unit identifiers across the units that + 10 are attached to themselves. This is done using the following + 11 algorithms: + + 12 1. Controllers should detect and respond to duplicate unit + 13 identifiers across all units whose unit identifiers the + 14 controller can obtain, including all units that would + 15 otherwise be "Unit-Online" or "Unit-Available." + 16 Detection of a duplicate unit identifier on one unit of + 17 a multiunit drive is treated as a duplicate unit + 18 identifier condition on all other units that share one + 19 or more of the following components with the unit having + 20 the duplicate unit identifier: + + 21 a. A unit number select mechanism. + + 22 b. A Run/Stop or Load/Unload switch. + + 23 c. A spindle or other mechanical components. + + 24 Note that duplicate unit identifiers are detected + 25 regardless of the state of a unit's Run/Stop or + 26 Load/Unload switch. + + 27 2. Whenever a controller becomes aware of a duplicate unit + 28 identifier, it immediately spins-down all units with the + 29 duplicate identifier and forces them to remain + 30 spun-down. The controller spins-down the units + 31 regardless of their current state. The controller + 32 typically forces them to remain spun-down by spinning + 33 them down again whenever an operator spins them up. + + 34 3. The controller reports "Unit-Offline (subcode + 35 'Inoperative')" status for all units with duplicate unit + 36 identifiers. In addition, if the unit might potentially + 37 be connected to another controller, the controller + 38 should flag the presence of the duplicate unit + 39 identifier in the drive. Other controllers, if any, + 40 must check this flag and also treat the unit as + 41 "Unit-Offline" if the flag is set. + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-48 + RV80 11 June 1992 + + + 1 Whether or not a controller does in fact check for duplicate unit + 2 identifiers is controller dependent. Note that a duplicate unit + 3 identifier is a drastic failure, indicative of some otherwise + 4 undiagnosed hardware malfunction. + + 5 E.6.1.2 Media Loader Error Log Format + + 6 The following section is added after 5.9.8, "BAD BLOCK + 7 REPLACEMENT ATTEMPT Error Log Format": + + 8 5.n.m MEDIA LOADER ERRORS Error Log Format + + 9 The following format is used to report errors that occur during + 10 media loader operations. + + 11 31 0 + 12 +-------------------------------+ + 13 | command reference number | + 14 +---------------+---------------+ + 15 |sequence number| unit number | + 16 +---------------+-------+-------+ + 17 | event code | flags | format| + 18 +---------------+-------+-------+ + 19 | | + 20 +--- controller identifier ---+ + 21 | | + 22 +---------------+-------+-------+ + 23 |multiunit code |chvrsn | csvrsn| + 24 +---------------+-------+-------+ + 25 | | + 26 +--- unit identifier ---+ + 27 | | + 28 +-------+-------+-------+-------+ + 29 | reserved | uhvrsn| usvrsn| + 30 +-------+-------+-------+-------+ + 31 | | + 32 +--- media loader identifier ---+ + 33 | | + 34 +-------+-------+-------+-------+ + 35 | ml unit number|mlhvrsn|mlsvrsn| + 36 +-------+-------+-------+-------+ + 37 | | + 38 / controller or media loader / + 39 / dependent information / + 40 | | + 41 +-------------------------------+ + + 42 The fields in the MEDIA LOADER ERROR error log message are as + 43 follows (unit number, multiunit code, unit identifier, usvrsn, + 44 and uhvrsn refer to the disk or tape unit that is the target of + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-49 + RV80 11 June 1992 + + + 1 the media loader operation): + + 2 command reference number + 3 unit number + 4 sequence number + 5 format + 6 flags + 7 event code + 8 csvrsn + 9 chvrsn + 10 multiunit code + 11 unit identifier + 12 usvrsn + 13 uhvrsn + + 14 See Section 5.9.2, "Generic Error Log Message Format." + + 15 controller identifier + + 16 Uniquely identifies the controller among all devices + 17 accessible via MSCP. See Section 4.17, "Controller and + 18 Unit Identifiers". If zero, the error log was generated + 19 by host software and not by a controller. + + 20 media loader identifier + + 21 Uniquely identifies the media loader among all devices + 22 accessible via MSCP. See Section 4.17, "Controller and + 23 Unit Identifiers." This field is only present for errors + 24 that relate to a specific media loader. + + 25 mlsvrsn + + 26 The media loader's software, firmware, or microcode + 27 revision number. Always zero if the product's + 28 development and maintainability groups determine that + 29 there is no benefit from supporting machine readable + 30 revision numbers. + + 31 mlhvrsn + + 32 The media loader's hardware revision number. Always zero + 33 if the product's development and maintainability groups + 34 determine that there is no benefit from supporting + 35 machine readable revision numbers. + + 36 ml unit number + + 37 The unit number of the media loader to which the error + 38 log message relates, or zero if either the message does + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-50 + RV80 11 June 1992 + + + 1 not relate to a specific unit or if the media loader does + 2 not support unit numbers. + + 3 controller or media loader dependent information + + 4 A variable (controller or media loader dependent) amount + 5 of information. The length of this information is + 6 implied by the total length of the error log message, + 7 passed to the class driver by the port driver. This + 8 information will typically not be interpreted by error + 9 log formatting programs, instead being printed as a + 10 series of values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-51 + RV80 11 June 1992 + + + 1 E.6.1.3 Error Log Message Offsets + + 2 Table A-8, "Error Log Message Offsets" is modified to appear as follows: + + + 3 Table A-8: Error Log Message Offsets + + 4 +--------------------+--------------------------+-------+---------------------------------+ + 5 | Offset Value | Preferred Mnemonics | Field | | + 6 +------+------+------+--------+-----------------+ Size | Field Description | + 7 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 8 +------+------+------+--------+-----------------+-------+---------------------------------+ + 9 | . | + 10 | . | + 11 | . | + 12 +------+------+------+--------+-----------------+-------+---------------------------------+ + 13 | Bad Block Replacement Attempt Error Log Message Offsets: | + 14 | 34 | 42 | 22 | L.RPFL | MSLG$W_RPL_FLGS | 2 | Replace Flags (see Table A-11) | + 15 | 36 | 44 | 24 | L.VSER | MSLG$L_VOL_SER | 4 | Volume serial number | + 16 | 40 | 50 | 28 | L.LBN | MSLG$L_BAD_LBN | 4 | Bad LBN | + 17 | 44 | 54 | 2C | L.ORBN | MSLG$L_OLD_RBN | 4 | Old RBN | + 18 | 48 | 60 | 30 | L.NRBN | MSLG$L_NEW_RBN | 4 | New RBN | + 19 | 52 | 64 | 34 | L.RPEV | MSLG$W_CAUSE | 2 | Cause (an event code) | + 20 +------+------+------+--------+-----------------+-------+---------------------------------+ + 21 | Media Loader Errors Error Log Message Offsets: | + 22 | 36 | 44 | 24 | L.MLID | MSLG$Q_ML_ID | 8 | Media loader identifier | + 23 | 44 | 54 | 2C | L.LSVR | MSLG$B_ML_SVR | 1 | Media loader software version | + 24 | 45 | 55 | 2D | L.LHVR | MSLG$B_ML_HVR | 1 | Media loader hardware version | + 25 | 46 | 56 | 2E | L.MLUN | MSLG$W_ML_UNIT | 2 | Media loader unit number | + 26 | 48 | 60 | 30 | | | * | Controller or media loader | + 27 | | | | | | | dependent information (optional)| + 28 +------+------+------+--------+-----------------+-------+---------------------------------+ + 29 | Note: An asterisk (*) in the field size indicates that the size varies. | + 30 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-52 + RV80 11 June 1992 + + + 1 E.6.1.4 Error Log Message Format Codes + + 2 Table A-9, "Error Log Message Format Codes" is modified to appear as follows: + + + 3 Table A-9: Error Log Message Format Codes + + 4 +--------------------+--------------------------+-----------------------------------------+ + 5 | Format Code | Preferred Mnemonics | | + 6 +------+------+------+--------+-----------------+ Format Description | + 7 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 8 +------+------+------+--------+-----------------+-----------------------------------------+ + 9 | 0 | 0 | 0 | FM.CNT | MSLG$K_CNT_ERR | Controller Errors | + 10 +------+------+------+--------+-----------------+-----------------------------------------+ + 11 | 1 | 1 | 1 | FM.BAD | MSLG$K_BUS_ADDR | Memory Errors with (Host/Controller) | + 12 | | | | | | Memory Address | + 13 +------+------+------+--------+-----------------+-----------------------------------------+ + 14 | 2 | 2 | 2 | FM.DSK | MSLG$K_DISK_TRN | Disk Transfer Errors | + 15 +------+------+------+--------+-----------------+-----------------------------------------+ + 16 | 3 | 3 | 3 | FM.SDI | MSLG$K_SDI | SDI Errors | + 17 +------+------+------+--------+-----------------+-----------------------------------------+ + 18 | 4 | 4 | 4 | FM.SDE | MSLG$K_SML_DSK | Small Disk Errors | + 19 +------+------+------+--------+-----------------+-----------------------------------------+ + 20 | 9 | 11 | 9 | FM.RPL | MSLG$K_REPLACE | Bad Block Replacement Attempt | + 21 +------+------+------+--------+-----------------+-----------------------------------------+ + 22 | 10 | 12 | A | FM.LDR | MSLG$K_LDR_ERR | Media Loader Errors (see Note below) | + 23 +------+------+------+--------+-----------------+-----------------------------------------+ + + 24 E.6.1.5 Status And Event Codes + + 25 Table B-1, "Status and Event Codes" is modified to appear as follows: + + + 26 Table B-1: Status and Event Codes + + 27 +--------------------+--------------------------+-----------------------------------------+ + 28 | Value | Preferred Mnemonics | | + 29 +------+------+------+--------+-----------------+ Status or Event Code | + 30 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 31 +------+------+------+--------+-----------------+-----------------------------------------+ + 32 | . | + 33 | . | + 34 | . | + 35 +------+------+------+--------+-----------------+-----------------------------------------+ + 36 | 20 | 24 | 14 | ST.BBR | MSCP$K_ST_BBR | Bad Block Replacement Completion | + 37 +------+------+------+--------+-----------------+-----------------------------------------+ + 38 | 21 | 25 | 15 | ST.LDR | MSCP$K_ST_LOADR | Media Loader Error | + 39 +------+------+------+--------+-----------------+-----------------------------------------+ + 40 | 31 | 37 | 1F | ST.DIA | MSCP$K_ST_DIAG | Message from an internal diagnostic | + 41 +------+------+------+--------+-----------------+-----------------------------------------+ + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-53 + RV80 11 June 1992 + + + 1 E.6.1.6 Media Loader Error Status Or Event Subcodes + + 2 Table B-10, "Media Loader Error" Status or Event Subcodes, is added to Appendix B, "Status and + 3 Event Code Definitions" and appears as follows: + + + 4 Table B-10: "Media Loader Error" Status or Event Subcodes + + 5 +------+---------------------+-+-+-----------------------------------------------------+ + 6 | Sub- | Code + Subcode |E|S| | + 7 | code +------+-------+------+V|T| Status or Event Subcode (see Note below) | + 8 | | Dec. | Oct. | Hex. | | | | + 9 +------+------+-------+------+-+-+-----------------------------------------------------+ + 10 | 1 | 55 | 67 | 37 |*|*| Loader command time out | + 11 +------+------+-------+------+-+-+-----------------------------------------------------+ + 12 | 2 | 87 | 127 | 57 |*|*| Controller detected transmission error | + 13 +------+------+-------+------+-+-+-----------------------------------------------------+ + 14 | 3 | 119 | 167 | 77 |*|*| Controller detected protocol error | + 15 +------+------+-------+------+-+-+-----------------------------------------------------+ + 16 | 4 | 151 | 227 | 97 |*|*| Loader detected error | + 17 +------+------+-------+------+-+-+-----------------------------------------------------+ + + 18 E.6.1.7 Controller And Unit Identifier Class Values + + 19 Table C-1, "Controller and Unit Identifier Class Values" is modified to appear as follows: + + + 20 Table C-1: Controller and Unit Identifier "Class" Values + + 21 +----------+----------------------------------------------+ + 22 |Class Byte| | + 23 | (decimal)| Subsystem Type | + 24 +----------+----------------------------------------------+ + 25 | 0 | reserved -- must not be assigned | + 26 +----------+----------------------------------------------+ + 27 | 1 | Mass storage controllers | + 28 +----------+----------------------------------------------+ + 29 | 2 | Disk class devices -- DEC Standard 166 disks | + 30 +----------+----------------------------------------------+ + 31 | 3 | Tape class devices | + 32 +----------+----------------------------------------------+ + 33 | 4 | Disk class devices -- DEC Standard 144 disks | + 34 +----------+----------------------------------------------+ + 35 | 5 | Loader class devices | + 36 +----------+----------------------------------------------+ + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + WAIVERS AND EXCEPTIONS Page E-54 + RV80 11 June 1992 + + + 1 E.6.1.8 Media Loader Identifier Values + + 2 Table C-5 is added to Appendix C, "Controller, Unit, and Media Type Identifiers" and appears as + 3 follows: + + + 4 Table C-5: Media Loader Identifier Values + + 5 +----------+---------+-------+---------------------------+--------------------------------+ + 6 |Model Byte| Device | Media | Media Type Identifier | | + 7 | (decimal)|Type Name| Name | octal | hex | Device | + 8 +----------+---------+-------+---------------+-----------+--------------------------------+ + 9 | 0 | Reserved -- must not be assigned | + 10 +----------+---------+-------+---------------+-----------+--------------------------------+ + 11 | 1 | none | none | none | none | 64 cartridge jukebox | + 12 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + PORT ADDRESS AND SYSTEM ADDRESS FORMATS Page F-1 + 11 June 1992 + + + 1 APPENDIX F + + 2 PORT ADDRESS AND SYSTEM ADDRESS FORMATS + + + 3 F.1 Port Address Formats + + 4 The format of the "storage subsystem port address" field varies + 5 depending on the communications mechanism being used. The field + 6 format for the currently defined (multihost) communications + 7 mechanism is described in the subsection that follows. + + 8 F.1.1 CI Port Address + + 9 The format of the "storage subsystem port address" field when + 10 used with the Computer Interconnect (CI) communications mechanism + 11 is as follows: + + 12 31 0 + 13 +---------------+---------------+ + 14 | | xport_addr | + 15 + +---------------+ + 16 | mbz | + 17 +-------------------------------+ + + + 18 xport_addr + + 19 16-bit CI transport address. See the Computer + 20 Interconnect Specification (DEC STD 161-0) for a + 21 description of the internal structure of this field. + + 22 mbz + + 23 This portion of the field Must Be Zero. + + 24 Note that the Digital Storage Systems Interconnect (DSSI) + 25 communications mechanism uses the same port addressing scheme as + 26 the CI. + + 27 F.2 System Address Formats + + 28 The format of the "storage subsystem system address" field varies + 29 depending on the communications protocol being used. The field + 30 format for the currently defined (multihost) communications + 31 protocol is described in the subsection that follows. + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + PORT ADDRESS AND SYSTEM ADDRESS FORMATS Page F-2 + System Address Formats 11 June 1992 + + + 1 F.2.1 SCA System Address + + 2 The format of the "storage subsystem system address" field when + 3 used with the Systems Communications Architecture (SCA) + 4 communications protocol is as follows: + + 5 31 0 + 6 +-------------------------------+ + 7 | system address | + 8 +---------------+ + + 9 | mbz | | + 10 +---------------+---------------+ + + + 11 system address + + 12 48-bit system address. See the Systems Communications + 13 Architecture Specification for a description of the + 14 internal structure of this field. + + 15 mbz + + 16 This portion of the field Must Be Zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-1 + 11 June 1992 + + + 1 APPENDIX G + + 2 REVISION HISTORY + + + 3 | The following changes were made from MSCP Version 2.3.0 to MSCP + 4 | Version 2.4.0: + + 5 | The following approved ECOs to V2.1.1 were incorporated: + + + 6 | o MSCP21-26: Vail event code/subcodes (inpart). + 7 | Supporting Device Event subcodes and code Drive Error, + 8 | subcode Integrated Drive Error not included. + + 9 | o MSCP23-3: Yamle + + 10 | o MSCP23-4: Performance Assist/Support Write Log + + + 11 | The following editorial changes/corrections were made: + + 12 | 1. Unit Names removed. (ECO MSCP22-8) + + 13 | 2. Combined the subsections Status codes and Event codes + 14 | into one section titled Status and Event Codes. + + 15 | 3. Corrected an error in the byte count modifer section for + 16 | tape class device response to an invalid byte count. + + 17 | 4. Added information to chapter 7 on releasing of exclusive + 18 | access. This information was from eco MSCP12-34. + + + 19 The following changes were made from MSCP Version 2.2.0 to MSCP + 20 Version 2.3.0: + + 21 This appendix changed from Appendix F to Appendix G. A new + 22 Appendix F (Port Address and System Address Formats) was + 23 added. Appendix G (Unannounced Products) has been renamed to + 24 Appendix H. + + 25 The following approved ECOs to V2.1.1 were incorporated: + + + 26 o MSCP21-22: HBVS Host Based Volume shadowing + + 27 o MSCP22-1: Caching Support + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-2 + 11 June 1992 + + + 1 o MSCP22-2: DISPLAY Command Category + + 2 o MSCP22-5: Write History Management + + 3 o MSCP22-7: Error Log Message Size Limits + + 4 o MSCP22-8: Vail Unit Naming + + 5 o MSCP22-9: Vail Multiple Spindle Units + + + 6 Several editorial changes/corrections/additions were made and + 7 many new device identifiers and controller model values were + 8 added. + + 9 The following changes were made from MSCP Version 2.1.1 to MSCP + 10 Version 2.2.0: + + 11 The following approved ECOs to V2.1.1 were incorporated: + + + 12 o MSCP21-7: HBAE on ACCESS and ERASE + + 13 o MSCP21-8: Information Logging Event Code + + 14 o MSCP21-9: Information Error Log Flag + + 15 o MSCP21-11: New DISPLAY Command + + 16 o MSCP21-14: New Event Codes/Subcodes + + 17 o MSCP21-15: Command Opcode Encoding + + 18 o MSCP21-16: Controller Model Values + + + 19 Several editorial changes/corrections/additions were made and + 20 many new device identifiers and controller model values were + 21 added. + + 22 The following changes were made from MSCP Version 2.1 to MSCP + 23 Version 2.1.1: + + 24 The following approved ECOs to V2.1 were incorporated: + + 25 o MSCP21-1: Controller Model Values + + 26 o MSCP21-4: Allocation Class + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-3 + 11 June 1992 + + + 1 o MSCP21-5: DSSI Device Type Names + + + 2 The following changes were made from MSCP Version 2.1 to MSCP + 3 Version 2.1.1: + + 4 All change bars were removed to make Version 2.1 official. + + 5 The following changes were made from MSCP Version 2.0.2 (aka + 6 Version 1.3 Update #2) to MSCP Version 2.1: + + 7 The following approved ECOs to V2.0 were incorporated: + + 8 o MSCP13-10 Format Command Revisited + + 9 o MSCP13-11 Change RF70 to RF71 + + 10 o MSCP13-12 Add TA90 to Appendix C + + 11 o MSCP13-13 Change RV80 to RV20 + + 12 o MSCP13-14 Add RV60 to Appendix C + + 13 o MSCP13-15 Add SVS00 to Appendix C + + 14 The following editorial changes/corrections were made: + + 15 1. Added RD33 to Appendix C + + 16 2. Added three definitions to Chapter 2, "Terminology": + + 17 - May + + 18 - Shall + + 19 - Should + + + 20 3. Applied the new terminology to the affected sentences + 21 throughout the document + + 22 4. Made Appendix E acceptable for non-DEC distribution: + + 23 - Removed the initial NOTE + + 24 - Removed all justification sections + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-4 + 11 June 1992 + + + 1 5. Changed Sections 4.16 and 4.17 and the opening NOTE in + 2 Appendix C to indicate the new method for obtaining model + 3 values for new devices + + 4 6. Created Appendix G, "Unannounced Products," to hold the + 5 values for all products that have been assigned values + 6 but have not yet been announced. Three tables were + 7 created, one for controller model values, one for disk + 8 drive/media identifier values, and one for tape + 9 drive/media identifier values + + 10 7. Removed all unannounced product names from Tables C-2, + 11 C-3, and C-4, put them in the appropriate tables in + 12 Appendix G, and left pointers to the tables in place of + 13 the product specifics + + 14 8. Added revision histories for the two updates prior to + 15 this one + + 16 9. Indicated the new version numbers in the revision history + + + 17 The following changes were made from MSCP Version 2.0.1 (aka + 18 Version 1.3 Update #1) to MSCP Version 2.0.2 (aka Version 1.3 + 19 Update #2): + + 20 The following approved ECOs to V2.0 were incorporated: + + 21 o MSCP13-7 Media Loader Error Logs + + 22 o MSCP13-8 Host Responsibilities at ONLINE with w.r.t. BBR + + 23 o MSCP13-9 Addition of "No Multicopy Protection" subcode + + 24 The following editorial changes/corrections were made: + + 25 1. Added ACCESS NONVOLATILE MEMORY to the list of commands + 26 in Note 3 of Table A-2 + + 27 2. Returned "Clear Serious Exception (ignored for disk class + 28 devices)" modifier to the command descriptions of + 29 commands for which it is allowed + + + 30 The following changes were made from MSCP Version 2.0 to MSCP + 31 Version 2.0.1 (aka Version 1.3 Update #1): + + 32 The following approved ECOs to V2.0 were incorporated: + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-5 + 11 June 1992 + + + 1 o MSCP13-1 Change MSCP "Exclusive Access" Unit Flag + + 2 o MSCP13-3 Assignment of RQDX4 Controller and RX35 Drive + + 3 o MSCP13-4 Assignment of RD32 Drive Model Value + + 4 o MSCP13-5 Assignment of UQSSP/DSSI Generic Device Types + + 5 o MSCP13-6 Assignment of RF30 and RF70 Drive Model Values + + + 6 The following changes were made from MSCP Version 1.2 to MSCP + 7 Version 2.0 (aka Version 1.3): + + 8 The following approved ECOs to V1.2 were incorporated: + + 9 o MSCP12-1 Geometry Valid Only When Online + 10 o MSCP12-2 Error Log Sequence Numbers + 11 o MSCP12-9 Reserve OPCODE Zero + 12 o MSCP12-10 Revised Appendix B + 13 o MSCP12-11 Revised Appendix C + 14 o MSCP12-12 RCT Access Byte Count Clarification + 15 o MSCP12-16 Error Log Format Generalization + 16 o MSCP12-17 Expeditious Abort + 17 o MSCP12-18 Revised Appendix B for BI + 18 o MSCP12-19 Maximum Error Log Size + 19 o MSCP12-20 RC25 Waiver Requests + 20 o MSCP12-22 Revised Appendix C for RX Drives + 21 o MSCP12-25 Revised Appendix C for QDAs + 22 o MSCP12-26 Allocation Class Waiver (HSC/VMS) + 23 o MSCP12-27 Read Only Device Write Protect + 24 o MSCP12-30 Multihost Functionality + 25 o MSCP12-32 Maximum Byte Count + 26 o MSCP12-33 Controller Initiated Bad Block Replacement + 27 o MSCP12-34 Exclusive Access (Multihost) + 28 o MSCP12-35 Access Non-volatile Memory Command + 29 o MSCP12-37 Host BBR Error Log Usage + 30 o MSCP12-38 Host BBR RCT Full Error Code + 31 o MSCP12-39 TU81 Waiver Request + 32 o MSCP12-44 Newly Revised Appendix C + 33 o MSCP12-46 Appendix C Assignment + 34 o MSCP12-51 Zero Geometry Illegal + 35 o MSCP12-53 Diagnostic Opcodes + 36 o MSCP12-55 MSCP12-26 Time Extension + 37 o MSCP12-56 Multihost Flag Definition + 38 o MSCP12-57 Minor Errors in ECOs + 39 o MSCP12-59 Appendix C, Correct KDB50 Model Number + 40 o MSCP12-62 Appendix C Update + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-6 + 11 June 1992 + + + 1 o MSCP12-63 Appendix B Update + 2 o MSCP12-65 Appendix C Update - Add TK70 and MSCP12-62 + 3 Amendments + 4 o MSCP12-72 Revised Bundled Shadowing + 5 o MSCP12-78 Appendix C Update - Add TA79 (as amended) + 6 o MSCP12-79 "Exclusive Access" Unit Flag Conflict + 7 Resolution + + 8 The following editorial changes were performed (on the + 9 original and ECO text): + + 10 1. Spelling errors corrected. Including removal of "hyphen" + 11 from common prefixes (e.g., non, re, sub, etc.) where + 12 appropriate. + + 13 2. Punctuation errors corrected. + + 14 3. Rewording of text for the sake of clarity. + + 15 4. Removal of redundant words, phrases, or statements. + + 16 5. Addition of numerous section references. + + 17 6. Addition of "Multiaccessed Drives" description. This + 18 description was referenced but not included in the + 19 original document. + + 20 7. All references to Shadowing and Data Caching were removed + 21 from the original text; working on the assumption that + 22 when they are formally defined they will appear as + 23 separate chapters in the document. Flags and message + 24 offsets already defined for their use were changed to + 25 "allocated for future use" and a description of their + 26 treatment until such definition occurs was provided. + + 27 8. All references to "Replacement and Caching Table" were + 28 changed to "Replacement Control Table." + + 29 9. All references to "DEC Standard Disk Format" were changed + 30 to "Digital Storage Architecture Disk Format + 31 Specification (DSDF)." + + 32 10. Chapter 5 was retitled from "MSCP CONTROL MESSAGE + 33 FORMATS" to "MSCP CONTROL MESSAGES." The contents of the + 34 chapter underwent a major restructuring: + + 35 a. The original lead-in section "Generic Control Message + 36 Format" was made truly generic. The types of MSCP + 37 control messages were identified: COMMAND, END, + 38 ATTENTION, and ERROR LOG messages. + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-7 + 11 June 1992 + + + 1 b. The "command message" specific information contained + 2 in the original lead-in was moved to a new section, + 3 "Command Messages," which describes a generic command + 4 message. + + 5 c. The original "Transfer Command Message Format" + 6 (without generic information) and "Command Modifiers" + 7 sections became subsections of the "Command Messages" + 8 section. + + 9 d. The original "End Message Format" section was + 10 retitled "End Messages" and all references to + 11 transfer command fields were removed. The section + 12 now describes a generic end message. + + 13 e. The transfer command field descriptions were + 14 incorporated into a subsection of "End Messages" + 15 called: "Transfer Command End Message Format." That + 16 section, as its name implies, describes a generic + 17 transfer command end message. + + 18 f. The original "Status Codes" section became a + 19 subsection of "End Messages." + + 20 g. The various descriptions of "Invalid Commands" and + 21 "Invalid Command End Messages" originally contained + 22 in Chapter 6 and Chapter 10 were consolidated into + 23 one concise description, which is located in the + 24 "Invalid Command" description of the "Status Codes" + 25 subsection. The original text was removed from + 26 Chapter 6, Chapter 10 was totally eliminated. + + 27 h. The descriptions of "Controller Flags" originally + 28 contained in Sections 5.8 and 6.2 were consolidated + 29 into a single section: "Controller Flags." + + 30 i. The descriptions of "Unit Flags" originally contained + 31 in Sections 5.7 and 6.1 were consolidated into a + 32 single section: "Unit Flags." + + 33 j. A new section, "Attention Messages," was added. That + 34 section describes a generic attention message. The + 35 attention message formats originally contained in + 36 Chapter 6 were moved to Chapter 5 and appear as + 37 subsections of "Attention Messages." + + 38 k. A new section, "Error Log Messages," was added. That + 39 section consists of what was originally in Chapter 8. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-8 + 11 June 1992 + + + 1 11. Chapter 6 was retitled from "MINIMAL DISK MSCP SUBSET" to + 2 "MINIMAL MSCP COMMAND SET." As implied by the change in + 3 title the chapter is now devoted to describing the MSCP + 4 command set rather than defining the minimal MSCP disk + 5 controller. The "Overview" section indicates that the + 6 commands described in the chapter apply only to a single + 7 host disk controller which does not provide controller + 8 initiated bad block replacement (CIBBR). References to + 9 multihost and CIBBR operation were removed. As mentioned + 10 earlier references to Shadowing and Caching were also + 11 removed, including the descriptions of the COMPARE + 12 CONTROLLER DATA and FLUSH commands. A subsection of the + 13 "Overview", "No-operation Commands," describes how those + 14 commands are to be handled. The "Overview" also + 15 describes the reformatting of the command description + 16 sections into subsections. Each component of a command + 17 description is now contained in a separate subsection: + 18 command message format, end message format, and + 19 description. The reformatting allows for more direct + 20 references to the specific area of a command description. + + 21 12. Chapter 7 is devoted to describing "Multihost Support + 22 Functionality." + + 23 13. Chapter 8 is devoted to describing "Controller Initiated + 24 Bad Block Replacement." + + 25 14. "Waivers and Exceptions" now appears in Appendix E + 26 instead of Chapter 9. The purpose of that change is to + 27 allow the addition of chapters devoted to Data + 28 Encryption/Decryption, Caching, and Shadowing when the + 29 time arises. Note that "Bundled" Shadowing appears in + 30 Appendix E and is identified as a "Temporary + 31 Implementation." Also, there was no opposition to + 32 tabling Data Encryption/Decryption so it does not appear + 33 anywhere. + + 34 15. "Revision History" now appears in Appendix F. + + + 35 The following changes were made from MSCP Version 1.1 to MSCP + 36 Version 1.2: + + 37 1. Editorial changes, primarily due to MSCP being reviewed + 38 by the technical documentation group. As part of this + 39 review Chapter 1, the Introduction, was completely + 40 rewritten. Other editorial changes are due to some + 41 reviewer's request for a clarification. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-9 + 11 June 1992 + + + 1 2. The discussion of Reserved and Undefined fields was + 2 expanded and made into a separate section (Section 5.2). + 3 This is in response to the frequent confusion concerning + 4 this topic in the past. Note that these changes are + 5 purely editorial. + + 6 3. Consistent terminology was adopted for the ways in which + 7 execution of a command can finish. Thus a command is + 8 now said to be completed, aborted, terminated, or + 9 rejected. These terms are defined in section 4.5 and + 10 used consistently throughout the document. + + 11 4. Addition of the "controller dependent parameters" field + 12 to the SET CONTROLLER CHARACTERISTICS command. + + 13 5. The "Disk Transfer Errors" error log message format was + 14 substantially changed. Formerly this message contained + 15 "logical block number," "cylinder," "group," "track," + 16 and "sector" fields. These have all been replaced with + 17 a single "header code" field, which the host's error log + 18 analyzer can decode if it desires. + + 19 6. The "SDI Errors" error log message format was + 20 substantially changed. Formerly this message contained + 21 "logical block number," "cylinder," and "group" fields. + 22 These have been replaced with a single "header code" + 23 field, which the host's error log analyzer can decode if + 24 it desires. + + 25 7. "EDC Error" has been eliminated as a subcode of the + 26 "Media Format Error" and "Data Error" status codes. + 27 Instead it is now a subcode of the "Controller Error" + 28 status code. This reflects the fact that EDC errors + 29 should only be caused by faulty controllers, not by + 30 faulty disks. Any disk error that might cause an EDC + 31 error should also cause an uncorrectable ECC error, + 32 which will be reported instead of the EDC error. + + 33 8. subcodes of the "Drive Error" status code were + 34 completely revised to reflect what the UDA50 actually + 35 returns. + + 36 9. Additional identifiers were added to Appendix C to + 37 reflect all prospective MSCP devices that we know of at + 38 this time. In addition, the Aztec media name was + 39 changed to reflect its new device name (RC25). + + 40 10. An additional rule for MSCP servers was added to Section + 41 3.4. This rule can be summarized as saying that + 42 bootstraps have to work, even though they won't follow + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-10 + 11 June 1992 + + + 1 all the rules for "real" class drivers. This rule has + 2 always existed implicitly; it just has never been + 3 written down before. + + 4 11. The RCT has been made optional for certain types of + 5 devices. This is primarily aimed at the RX50 and other + 6 low end disks. + + 7 12. The discussion of forced errors was expanded to state + 8 that the data must be recorded and preserved regardless + 9 of the presence of a forced error in a block. + 10 Previously this was a piece of folklore that everyone + 11 "knew" to be true, as it was not formerly written down. + + 12 13. Unit and controller revision numbers were added to the + 13 GET UNIT STATUS and SET CONTROLLER CHARACTERISTICS end + 14 messages. + + 15 14. Statements were added that unit and controller revision + 16 numbers need not be returned if the groups responsible + 17 for a product feel they are unnecessary. This is merely + 18 making an explicit statement of what has always been + 19 implicitly true. + + 20 15. The Invalid Command End Message format was extended to + 21 return a controller dependent portion of the command + 22 parameter fields. Thus the entire message header can be + 23 returned with only the opcode and modifiers fields lost, + 24 hopefully simplifying error diagnosis. + + 25 16. A waivers and exceptions chapter was added to provide + 26 "grandfather" exceptions for products that have already + 27 shipped, and therefore do not have some of the above + 28 changes implemented. + + 29 17. A clarifications chapter was added to record answers to + 30 frequently asked questions and clarifications that don't + 31 fit in anywhere else. + + + 32 The following changes were made from MSCP Version 1.0 to MSCP + 33 Version 1.1: + + 34 1. Editorial changes, including clarifications in various + 35 sections. + + 36 2. Addition of this Appendix, containing the Revision + 37 History. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-11 + 11 June 1992 + + + 1 3. Addition of Appendix D, Buffer Descriptor Formats. + + 2 4. Addition of non-goal stating MSCP will not attempt to + 3 standardize device specific error log information and + 4 the interpretation of such information. + + 5 5. Reduction of the required unit number range from 0 + 6 through 255 to 0 through 251. The purpose of this + 7 change was to allow a specific value (all ones) to + 8 indicate that no unit number is present. + + 9 6. The majority of unit characteristics will be provided + 10 (to hosts) when a unit is "Unit-Offline" but known to + 11 exist. This is necessary for generic device allocation + 12 -- previous versions, due to an oversight, specified + 13 that unit characteristics were not provided when a unit + 14 was "Unit-Offline." + + 15 7. As a necessary side effect of the previous change, + 16 duplicate unit numbers must be checked for units that + 17 are "Unit-Offline" but otherwise known to the + 18 controller. The reason for this is that controller + 19 needs a unique set of characteristics to return, which + 20 is not necessarily possible when a duplicate unit number + 21 exists. + + 22 8. The command timeout requirements were loosened for + 23 aborted commands on single host controllers, allowing + 24 the controllers to timeout in various pathological + 25 situations. If this occurs the command will effectively + 26 be aborted by the host reinitializing the controller. + + 27 9. The requirements for host access timeout timing accuracy + 28 were loosened, so that controllers need not maintain + 29 accurate timeouts for an idle host when they are + 30 saturated with work from other hosts. + + 31 10. Added the "Controller Initiated Bad Block Replacement" + 32 controller flag. + + 33 11. The maximum number of error log messages per error was + 34 increased from 2 to 3. + + 35 12. Waivers and exceptions relating to the BXV11, which has + 36 been canceled, were removed. + + 37 13. Host identifiers and the "Alter Host Identifier" command + 38 modifier were removed. + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + REVISION HISTORY Page G-12 + 11 June 1992 + + + 1 14. The "Error Log Flags" field was renamed to be a general + 2 purpose "Device Dependent Parameters" field. + + 3 15. subcodes of the "Success" status code were reassigned so + 4 that all subcodes would be unique bit flags. I.e., the + 5 same bit will not have different meanings depending on + 6 the command. + + 7 16. subcodes of the "Unit-Offline" status code were + 8 reassigned to be bit flags, so that multiple reasons for + 9 a device being "Unit-Offline" could be reported. In + 10 addition, an additional (unique) subcode was defined for + 11 the case of a unit being inoperative. + + 12 17. subcodes of the "Write Protected" status code were + 13 reassigned to be bit flags. + + 14 18. Unit and media type identifiers were defined for Aztec. + 15 In addition, preliminary values were defined for various + 16 products that are currently under development. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + UNANNOUNCED PRODUCTS Page H-1 + 11 June 1992 + + + 1 APPENDIX H + + 2 UNANNOUNCED PRODUCTS + + + 3 Table H-1: Unannounced Controller "Model" Values + + 4 +--------------+------------------------------------------+ + 5 | Model Byte | | + 6 | (decimal) | | + 7 | (see Note 1) | Controller Type | + 8 +--------------+------------------------------------------+ + 9 | 20 | RQDX4 (CSS, Reading Special) | + 10 +--------------+------------------------------------------+ + 11 | 41 | HSC65 | + 12 +--------------+------------------------------------------+ + 13 | 42 | HSC95 | + 14 +--------------+------------------------------------------+ + 15 | 105 | EF51 | + 16 +--------------+------------------------------------------+ + 17 | 108 | RF36 | + 18 +--------------+------------------------------------------+ + 19 | 109 | RF74 | + 20 +--------------+------------------------------------------+ + 21 | 112 | RF75 | + 22 +--------------+------------------------------------------+ + 23 | 248 | ULTRIX-32 | + 24 +--------------+------------------------------------------+ + 25 | 249 | VAX SVS software emulator | + 26 +--------------+------------------------------------------+ + 27 | 250 | VAX SST Striping Driver | + 28 +--------------+------------------------------------------+ + 29 | Note 1: The preferred method for assigning a | + 30 | controller model value is according to the | + 31 | port protocol used. The recommended model | + 32 | ranges are as follows: | + 33 | | + 34 | o 1-31 SSP | + 35 | o 32-63 CI | + 36 | o 64-95 BVP | + 37 | o 96-127 DSSI | + 38 | o 128-247 Reserved for future use | + 39 | o 248-255 Host Software Servers | + 40 | | + 41 | Note 2: This controller serves SCSI devices. Refer to | + 42 | Table H-4. | + 43 | | + 44 +---------------------------------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + UNANNOUNCED PRODUCTS Page H-2 + 11 June 1992 + + + 1 Table H-2: Unannounced Disk Drive/Media Identifier Values + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 15 | DU | RD32 | 022544,040040 | 2564,4020 | 40 MB, 5.25", fixed, half | + 8 | | | | | | height | + 9 +----------+---------+-------+---------------+-----------+--------------------------------+ + 10 | 16 | unassigned (was RX32) | + 11 +----------+---------+-------+---------------+-----------+--------------------------------+ + 12 | 20 | DU | RX35 | 022545,100043 | 2565,8023 | TEAC FD35F, 3.5", floppy | + 13 | | | | | | (CSS, Reading Special) | + 14 +----------+---------+-------+---------------+-----------+--------------------------------+ + 15 | 23 | DE | SVS00 | 020547,064600 | 2167,6980 | Variable, depends on | + 16 | | | | | | implementation. | + 17 +----------+---------+-------+---------------+-----------+--------------------------------+ + 18 | 24 | DU | RD33 | 022544,040041 | 2564,4021 | 80 MB, 5.25", fixed, half | + 19 | | | | | | height | + 20 +----------+---------+-------+---------------+-----------+--------------------------------+ + 21 | 31 | DU | ESE52 | 022513,031264 | 254B,32B4 | 120MB Solid state disk with | + 22 | | | | | | data retention. | + 23 +----------+---------+-------+---------------+-----------+--------------------------------+ + 24 | 47 | DU | RA73 | 022544,010111 | 2564,1049 | tbs, 5.25" fixed | + 25 | | | | | | | + 26 +----------+---------+-------+---------------+-----------+--------------------------------+ + 27 | 48 | DU | ESE56 | 022513,031270 | 254B,32B8 | 600 MB Solid state disk with | + 28 | | | | | | data retention. | + 29 +----------+---------+-------+---------------+-----------+--------------------------------+ + 30 | 49 | DU | ESE58 | 022513,031272 | 254B,32BA | 1 GB Solid state disk without | + 31 | | | | | | data retention. | + 32 +----------+---------+-------+---------------+-----------+--------------------------------+ + 33 | 50 | ST | SST00 | 116447,035000 | 9D27,3A00 | Variable, depends on | + 34 | | | | | | implementation. | + 35 +----------+---------+-------+---------------+-----------+--------------------------------+ + 36 | 51 | DI | EF51 | 021112,060063 | 224A,6033 | 100 MB Solid State Disk with | + 37 | | | | | | data retention. | + 38 +----------+---------+-------+---------------+-----------+--------------------------------+ + 39 | 51 | DI | EF52 | 021112,060064 | 224A,6034 | 200 MB Solid State Disk with | + 40 | | | | | | data retention. | + 41 +----------+---------+-------+---------------+-----------+--------------------------------+ + 42 | 51 | DI | EF53 | 021112,060065 | 224A,6035 | 250 MB Solid State Disk without| + 43 | | | | | | data retention. | + 44 +----------+---------+-------+---------------+-----------+--------------------------------+ + 45 | 51 | DI | EF54 | 021112,060066 | 224A,6036 | 400 MB Solid State Disk with | + 46 | | | | | | data retention. | + 47 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + UNANNOUNCED PRODUCTS Page H-3 + 11 June 1992 + + + + 1 Table H-2: Unannounced Disk Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 51 | DI | EF58 | 021112,060072 | 224A,603A | 1 GB Solid State Disk without | + 8 | | | | | | data retention. | + 9 +----------+---------+-------+---------------+-----------+--------------------------------+ + 10 | 52 | DI | RF36 | 021144,060044 | 2264,6024 | TBS | + 11 | | | | | | (DSSI Disk Server) | + 12 +----------+---------+-------+---------------+-----------+--------------------------------+ + 13 | 53 | DI | RFH36 | 021144,062044 | 2264,6424 | TBS | + 14 | | | | | | (DSSI Disk Server) | + 15 +----------+---------+-------+---------------+-----------+--------------------------------+ + 16 | 54 | DI | RF74 | 021144,060112 | 2264,604A | 5 1/4" fixed, TBS GB. | + 17 | | | | | | (DSSI Disk Server) | + 18 +----------+---------+-------+---------------+-----------+--------------------------------+ + 19 | 55 | DI | RFH74 | 021144,062112 | 2264,644A | 5 1/4" fixed, TBS GB. | + 20 | | | | | | (DSSI Disk Server) | + 21 +----------+---------+-------+---------------+-----------+--------------------------------+ + 22 | 56 | DI | RF75 | 021144,060113 | 2264,604B | 5 1/4", fixed, TBS GB. | + 23 | | | | | | (DSSI Disk Server) | + 24 +----------+---------+-------+---------------+-----------+--------------------------------+ + 25 | 57 | DI | RFH75 | 021144,062113 | 2264,644B | 5 1/4" fixed, TBS GB. | + 26 | | | | | | (DSSI Disk Server) | + 27 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + 28 Table H-3: Unannounced Tape Drive/Media Identifier Values + + 29 +----------+---------+-------+---------------------------+--------------------------------+ + 30 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 31 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 32 | | | | octal | hex | | + 33 +----------+---------+-------+---------------+-----------+--------------------------------+ + 34 | 9 | ME | SVS00 | 064547,064600 | 6967,6980 | Variable, depends on | + 35 | | | | | | implementation. | + 36 +----------+---------+-------+---------------+-----------+--------------------------------+ + 37 | 18 | MU | TD34 | 066550,040042 | 6D68,4022 | IBM 3480 product family using | + 38 | | | | | | the FIPS-60 bus. | + 39 +----------+---------+-------+---------------+-----------+--------------------------------+ + 40 | 19 | MU | TD44 | 066550,040054 | 6D68,402C | STK version of IBM 3480 using | + 41 | | | | | | the FIPS-60 bus. | + 42 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + + + + *** RESTRICTED DISTRIBUTION *** + Digital Equipment Corporation Confidential And Proprietary + Mass Storage Control Protocol Version 2.4.0 + UNANNOUNCED PRODUCTS Page H-4 + 11 June 1992 + + + + 1 Table H-3: Unannounced Tape Drive/Media Identifier Values (cont.) + + 2 +----------+---------+-------+---------------------------+--------------------------------+ + 3 |Model Byte| Device | Media | Media Type Identifier | Drive | + 4 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 5 | | | | octal | hex | | + 6 +----------+---------+-------+---------------+-----------+--------------------------------+ + 7 | 20 | MU | TAD85 | 066550,011125 | 6D68,1255 | TZ857 with integrated STI to | + 8 | | | | | | SCSI adapter. Supports direct | + 9 | | | | | | cartridge access via DISPLAY | + 10 | | | | | | command. | + 11 +----------+---------+-------+---------------+-----------+--------------------------------+ + + + 12 Table H-4: Unannounced SCSI Storage Device/Media Identifier Values + + 13 +----------+---------+-------+---------------------------+--------------------------------+ + 14 |Model Byte| Device | Media | Media Type Identifier | Drive/Media | + 15 | (decimal)|Type Name| Name +---------------+-----------+ Characteristics | + 16 | | | | octal | hex | | + 17 +----------+---------+-------+---------------+-----------+--------------------------------+ + 18 | 11 | DK | RZ35 | 021345,120043 | 22E5,A023 | 852 MB, 3.5", fixed | + 19 +----------+---------+-------+---------------+-----------+--------------------------------+ + 20 | 22 | DK | RZ73 | 021345,120111 | 22E5,A049 | 2 GB, 5.25", fixed | + 21 +----------+---------+-------+---------------+-----------+--------------------------------+ + 22 | 50 | DK | | | | Reserved for New Dawn | + 23 +----------+---------+-------+---------------+-----------+--------------------------------+ + 24 | 139 | MK | TLZ06 | 065350,146406 | 6AE8,CC06 | RDAT-2 | + 25 +----------+---------+-------+---------------+-----------+--------------------------------+ + 26 | 141 | MK | TKZ10 | 065350,136412 | 6AE8,BD0A | QIC | + 27 +----------+---------+-------+---------------+-----------+--------------------------------+ + 28 | 142 | MK | TKZ11 | 065350,136413 | 6AE8,BD0B | QIC-2 | + 29 +----------+---------+-------+---------------+-----------+--------------------------------+ + 30 | Notes: 1. The preferred method for assigning a model value is according to | + 31 | the device type (i.e. disk, tape, or optical). The recommended model byte | + 32 | ranges are as follows: | + 33 | | + 34 | o 1-127 Disk devices | + 35 | o 128-191 Tape devices | + 36 | o 192-255 Optical disk devices | + 37 | | + 38 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + *** RESTRICTED DISTRIBUTION *** diff --git a/sources/tmscp.txt b/sources/tmscp.txt new file mode 100644 index 0000000..44b3440 --- /dev/null +++ b/sources/tmscp.txt @@ -0,0 +1,9676 @@ + + + + + + + + + + + + + + + + Tape Mass Storage Control Protocol + + ECO Controlled Version 2.0.2 + + 8 November 1987 + + + Send all inquiries and comments to COOKIE::SSAG + + + + + + This document defines the Tape aspect of the Mass + Storage Control Protocol (MSCP). + + + + + + + + + + + + + DIGITAL EQUIPMENT CORPORATION CONFIDENTIAL AND PROPRIETARY + + This document is an unpublished work and contains + valuable trade secrets which are confidential and + proprietary to Digital Equipment Corporation, and may + only be disclosed to individuals who have entered into a + confidentiality agreement with Digital, and may not be + copied or reproduced in whole or in part. + + Copyright (c) Digital Equipment Corporation 1982, 1983, + 1984, 1985, 1986, 1987. All Rights Reserved. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + CONTENTS Page ii + 8 November 1987 + + + CONTENTS + + + + CHAPTER 1 INTRODUCTION + + 1.1 Scope . . . . . . . . . . . . . . . . . . . 1-1 + 1.2 References . . . . . . . . . . . . . . . . . 1-1 + 1.2.1 MSCP Specification . . . . . . . . . . . . 1-1 + 1.2.1.1 Table Of Contents Abstract . . . . . . . 1-1 + 1.2.2 STI Specification . . . . . . . . . . . . 1-3 + + + CHAPTER 2 TERMINOLOGY + + + CHAPTER 3 TMSCP GENERAL OPERATIONAL CHARACTERISTICS + + 3.1 Unit States . . . . . . . . . . . . . . . . 3-1 + 3.1.1 Unit Offline . . . . . . . . . . . . . . . 3-1 + 3.1.2 Unit Available . . . . . . . . . . . . . . 3-1 + 3.1.3 Unit Online . . . . . . . . . . . . . . . 3-1 + 3.1.4 Exclusive Access Of A Unit . . . . . . . . 3-1 + 3.1.5 Unit Operating Beyond EOT . . . . . . . . 3-1 + 3.1.6 Unit Position Lost . . . . . . . . . . . . 3-1 + 3.1.7 Unit Serious Exception Pending . . . . . . 3-2 + 3.1.8 Unit Cached Data Lost . . . . . . . . . . 3-2 + 3.2 Command Categories And Execution Order . . . 3-2 + 3.2.1 Lengthy Command Considerations . . . . . . 3-2 + 3.2.1.1 Synchronous Vs Asynchronous . . . . . . 3-2 + 3.2.1.2 Abort . . . . . . . . . . . . . . . . . 3-3 + 3.3 Tape Motion Command Operation . . . . . . . 3-6 + 3.3.1 "read" Type . . . . . . . . . . . . . . . 3-6 + 3.3.1.1 Direction . . . . . . . . . . . . . . . 3-6 + 3.3.1.2 BOT Handling . . . . . . . . . . . . . . 3-6 + 3.3.1.3 EOT Handling . . . . . . . . . . . . . . 3-7 + 3.3.1.4 Tape Mark Handling . . . . . . . . . . . 3-7 + 3.3.2 "write" Type . . . . . . . . . . . . . . . 3-7 + 3.3.2.1 Direction . . . . . . . . . . . . . . . 3-7 + 3.3.2.2 BOT Handling . . . . . . . . . . . . . . 3-7 + 3.3.2.3 EOT Handling . . . . . . . . . . . . . . 3-8 + 3.3.2.4 Tape Mark Handling . . . . . . . . . . . 3-8 + 3.3.3 "ancillary" Type . . . . . . . . . . . . . 3-8 + 3.3.3.1 Direction . . . . . . . . . . . . . . . 3-8 + 3.3.3.2 BOT Handling . . . . . . . . . . . . . . 3-8 + 3.3.3.3 EOT Handling . . . . . . . . . . . . . . 3-8 + 3.3.3.4 Tape Mark Handling . . . . . . . . . . . 3-8 + 3.4 Data Transfer Operations . . . . . . . . . . 3-8 + 3.4.1 Record Length . . . . . . . . . . . . . . 3-9 + 3.4.2 Tape Format Employed . . . . . . . . . . . 3-9 + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + CONTENTS Page iii + 8 November 1987 + + + 3.4.3 Host Buffer Access . . . . . . . . . . . . 3-10 + 3.4.3.1 WRITE Command . . . . . . . . . . . . . 3-10 + 3.4.3.2 READ Command . . . . . . . . . . . . . . 3-10 + 3.4.3.2.1 Forward Direction . . . . . . . . . . 3-11 + 3.4.3.2.2 Reverse Direction . . . . . . . . . . 3-11 + 3.4.3.3 ACCESS Command . . . . . . . . . . . . . 3-11 + 3.4.3.4 Compare Operations . . . . . . . . . . . 3-11 + 3.4.4 End Message Byte Count Fields . . . . . . 3-12 + 3.5 General Error Processing . . . . . . . . . . 3-12 + 3.5.1 Reporting Precedence . . . . . . . . . . . 3-12 + 3.5.2 Serious Exception Handling . . . . . . . . 3-13 + 3.5.3 Position Lost Handling . . . . . . . . . . 3-16 + 3.5.4 Asynchronous Completion Handling Of + Non-Data Transfer Commands . . . . . . . . 3-16 + 3.5.5 Data Error Recovery . . . . . . . . . . . 3-17 + 3.5.5.1 Suppression . . . . . . . . . . . . . . 3-18 + 3.5.5.2 Enhanced Write Error Recovery . . . . . 3-18 + 3.5.6 Error Log Requirements . . . . . . . . . . 3-19 + 3.6 Tape Caching . . . . . . . . . . . . . . . . 3-19 + 3.6.1 Write-Back Caching . . . . . . . . . . . . 3-20 + 3.6.1.1 Unit Flag Conflicts . . . . . . . . . . 3-23 + 3.6.1.2 Command Modifier Conflicts . . . . . . . 3-23 + 3.6.1.3 Error And Exception Handling . . . . . . 3-23 + 3.6.1.4 Cached Data Lost Handling . . . . . . . 3-25 + 3.6.2 Read-Ahead Caching . . . . . . . . . . . . 3-28 + 3.6.2.1 Unit Flag Conflicts . . . . . . . . . . 3-29 + 3.6.2.2 Command Modifier Conflicts . . . . . . . 3-29 + 3.6.2.3 Error Handling . . . . . . . . . . . . . 3-30 + + + CHAPTER 4 TMSCP MESSAGE OVERVIEW + + 4.1 Tape MSCP Functions Having No Disk MSCP + Counterparts . . . . . . . . . . . . . . . . 4-1 + 4.2 Identical Disk And Tape MSCP Functions . . . 4-1 + 4.3 Tape Specific MSCP Commands And Responses . 4-1 + 4.4 Generic Command Message Format . . . . . . . 4-2 + 4.4.1 Command Modifiers . . . . . . . . . . . . 4-2 + 4.5 End Message Format . . . . . . . . . . . . . 4-3 + 4.5.1 Flags . . . . . . . . . . . . . . . . . . 4-3 + 4.5.2 Status . . . . . . . . . . . . . . . . . . 4-3 + 4.5.3 Status Codes . . . . . . . . . . . . . . . 4-4 + 4.5.4 Byte Count (Host Transfer) . . . . . . . . 4-7 + 4.5.5 Byte Count (Tape Record) . . . . . . . . . 4-8 + 4.5.6 Position (Object Count) . . . . . . . . . 4-8 + + + CHAPTER 5 TMSCP COMMAND DESCRIPTIONS + + 5.1 ACCESS Command . . . . . . . . . . . . . . . 5-1 + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + CONTENTS Page iv + 8 November 1987 + + + 5.1.1 Command Message Format . . . . . . . . . . 5-1 + 5.1.2 End Message Format . . . . . . . . . . . . 5-2 + 5.1.3 Description . . . . . . . . . . . . . . . 5-4 + 5.2 AVAILABLE Command . . . . . . . . . . . . . 5-5 + 5.2.1 Command Message Format . . . . . . . . . . 5-5 + 5.2.2 End Message Format . . . . . . . . . . . . 5-6 + 5.2.3 Description . . . . . . . . . . . . . . . 5-8 + 5.3 COMPARE HOST DATA Command . . . . . . . . . 5-9 + 5.3.1 Command Message Format . . . . . . . . . . 5-9 + 5.3.2 End Message Format . . . . . . . . . . . . 5-10 + 5.3.3 Description . . . . . . . . . . . . . . . 5-12 + 5.4 ERASE Command . . . . . . . . . . . . . . . 5-13 + 5.4.1 Command Message Format . . . . . . . . . . 5-13 + 5.4.2 End Message Format . . . . . . . . . . . . 5-14 + 5.4.3 Description . . . . . . . . . . . . . . . 5-15 + 5.5 ERASE GAP Command . . . . . . . . . . . . . 5-16 + 5.5.1 Command Message Format . . . . . . . . . . 5-16 + 5.5.2 End Message Format . . . . . . . . . . . . 5-17 + 5.5.3 Description . . . . . . . . . . . . . . . 5-18 + 5.6 FLUSH Command . . . . . . . . . . . . . . . 5-19 + 5.6.1 Command Message Format . . . . . . . . . . 5-19 + 5.6.2 End Message Format . . . . . . . . . . . . 5-20 + 5.6.3 Description . . . . . . . . . . . . . . . 5-22 + 5.7 GET UNIT STATUS Command . . . . . . . . . . 5-23 + 5.7.1 Command Message Format . . . . . . . . . . 5-23 + 5.7.2 End Message Format . . . . . . . . . . . . 5-24 + 5.7.3 Description . . . . . . . . . . . . . . . 5-33 + 5.8 ONLINE Command . . . . . . . . . . . . . . . 5-34 + 5.8.1 Command Message Format . . . . . . . . . . 5-34 + 5.8.2 End Message Format . . . . . . . . . . . . 5-36 + 5.8.3 Description . . . . . . . . . . . . . . . 5-39 + 5.9 READ Command . . . . . . . . . . . . . . . . 5-40 + 5.9.1 Command Message Format . . . . . . . . . . 5-40 + 5.9.2 End Message Format . . . . . . . . . . . . 5-41 + 5.9.3 Description . . . . . . . . . . . . . . . 5-43 + 5.10 REPOSITION Command . . . . . . . . . . . . . 5-44 + 5.10.1 Command Message Format . . . . . . . . . . 5-44 + 5.10.2 End Message Format . . . . . . . . . . . . 5-46 + 5.10.3 Description . . . . . . . . . . . . . . . 5-48 + 5.11 SET UNIT CHARACTERISTICS Command . . . . . . 5-56 + 5.11.1 Command Message Format . . . . . . . . . . 5-56 + 5.11.2 End Message Format . . . . . . . . . . . . 5-61 + 5.11.3 Description . . . . . . . . . . . . . . . 5-64 + 5.12 WRITE Command . . . . . . . . . . . . . . . 5-65 + 5.12.1 Command Message Format . . . . . . . . . . 5-65 + 5.12.2 End Message Format . . . . . . . . . . . . 5-67 + 5.12.3 Description . . . . . . . . . . . . . . . 5-69 + 5.13 WRITE TAPE MARK Command . . . . . . . . . . 5-70 + 5.13.1 Command Message Format . . . . . . . . . . 5-70 + 5.13.2 End Message Format . . . . . . . . . . . . 5-71 + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + CONTENTS Page v + 8 November 1987 + + + 5.13.3 Description . . . . . . . . . . . . . . . 5-73 + + + CHAPTER 6 TMSCP ERROR LOG MESSAGES + + 6.1 TMSCP Error Log Message Format . . . . . . . 6-1 + 6.1.1 Tape Errors . . . . . . . . . . . . . . . 6-3 + 6.1.2 STI Communication Or Command Failures . . 6-5 + 6.1.3 STI Formatter Error Log . . . . . . . . . 6-6 + 6.1.4 STI Drive Error Log . . . . . . . . . . . 6-7 + + + APPENDIX A OPCODE, FLAG AND OFFSET DEFINITIONS + + + APPENDIX B STATUS AND EVENT CODE DEFINITIONS + + + APPENDIX C MISCELLANEOUS TABLES + + Table C-1: Tape Format Flag Values . . . . . C-1 + Table C-2: Tape Format Bitflag Values . . . C-2 + Table C-3: Controller Specific Maximum Record + Size . . . . . . . . . . . . . . . . . . . . C-3 + Table C-4: Format Specific Long Gap Values . C-3 + + + APPENDIX D REPOSITION COMMAND VARIATIONS + + + APPENDIX E WAIVERS AND EXCEPTIONS + + E.1 TU81 . . . . . . . . . . . . . . . . . . . . E-1 + E.1.1 "EOT Encountered" Status Subcode . . . . . E-1 + E.1.2 "Serious Exception" And "EOT Encountered" E-1 + E.1.3 "Byte Count (Host Transfer)" On Read + Reverse . . . . . . . . . . . . . . . . . E-1 + E.2 TK50 . . . . . . . . . . . . . . . . . . . . E-2 + E.2.1 Incorrect Command Processing While Position + Lost . . . . . . . . . . . . . . . . . . . E-2 + E.2.2 COMPARE HOST DATA Error Reporting . . . . E-3 + E.2.3 Incorrect "Offline" Error Reporting . . . E-3 + E.2.4 Progress Indicator Processing . . . . . . E-3 + E.2.5 Multiple Error Logs Reported . . . . . . . E-4 + E.2.6 Invalid "Records Skipped Count" . . . . . E-4 + E.2.7 Hardware Serial Number . . . . . . . . . . E-5 + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + CONTENTS Page vi + 8 November 1987 + + + APPENDIX F REVISION HISTORY + + F.1 Changes Since Version 1.6 . . . . . . . . . F-1 + F.2 Changes Since Version 1.6.4 . . . . . . . . F-2 + | F.3 Changes Since Version 2.0.0 . . . . . . . . F-3 + + + TABLES + + A-1 Control Message Opcodes . . . . . . . . . . A-1 + A-2 Command Modifiers . . . . . . . . . . . . . A-3 + A-3 End Message Flags . . . . . . . . . . . . . A-4 + A-4 Controller Flags . . . . . . . . . . . . . . A-4 + A-5 Unit Flags . . . . . . . . . . . . . . . . . A-5 + A-6 Command Message Offsets . . . . . . . . . . A-6 + A-7 End and Attention Message Offsets . . . . . A-7 + A-8 Error Log Message Offsets . . . . . . . . . A-9 + A-9 Error Log Message Format Codes . . . . . . . A-11 + A-10 Error Log Message Flags . . . . . . . . . . A-11 + A-11 Access Nonvolatile Memory Command Operation + Codes . . . . . . . . . . . . . . . . . . . A-11 + B-1 Status and Event Codes . . . . . . . . . . . B-2 + B-2 Status Only Subcode Values . . . . . . . . . B-3 + B-3 "Compare Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-5 + B-4 "Data Error" Status or Event Subcode Values B-5 + B-5 "Host Buffer Access Error" Status or Event + Subcode Values . . . . . . . . . . . . . . . B-5 + B-6 "Controller Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-6 + B-7 "Drive Error" Status or Event Subcode Values B-7 + B-8 "Formatter Error" Status or Event Subcode + Values . . . . . . . . . . . . . . . . . . . B-7 + B-9 "Message From An Internal Diagnostic" Event + Only Subcode Values . . . . . . . . . . . . B-7 + C-1 Tape Format Flag Values . . . . . . . . . . C-1 + C-2 Tape Format Bitflag Values . . . . . . . . . C-2 + C-3 Controller Specific Maximum Record Size . . C-3 + C-4 Format Specific Long Gap Values . . . . . . C-3 + D-1 REPOSITION Command Variations . . . . . . . D-1 + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + INTRODUCTION Page 1-1 + 8 November 1987 + + + 1 CHAPTER 1 + + 2 INTRODUCTION + + + 3 1.1 Scope + + 4 This document defines the Tape Class Mass Storage Control + 5 Protocol (TMSCP), a magnetic tape applications protocol intended + 6 for use with intelligent mass storage controllers. Although + 7 Magnetic Tape Class Devices possess operation strategies inherent + 8 to themselves, the architecture of TMSCP is not autonomous, but + 9 rather conforms to the overall philosophy defined in the "Mass + 10 Storage Control Protocol" specification, hereinafter referred to + 11 as MSCP. + + 12 1.2 References + + 13 1.2.1 MSCP Specification + + 14 The MSCP specification is necessary to gain a complete + 15 understanding of TMSCP and its relationship to the overall I/O + 16 architecture. Numerous areas have been omitted from this + 17 document since they are fully defined in MSCP. The next section + 18 contains an abstract of the Table of Contents of ECO controlled + 19 MSCP Version 1.3 to aid in referencing particular subjects not + 20 fully defined in this document. + + 21 1.2.1.1 Table Of Contents Abstract + + 22 CHAPTER 1 INTRODUCTION + 23 1.1 Overview Of MSCP Subsystem + 24 1.2 Purpose + 25 1.3 Method Of Presentation + 26 1.4 Scope + + 27 CHAPTER 2 TERMINOLOGY + + 28 CHAPTER 3 CLASS DRIVER / MSCP SERVER COMMUNICATIONS + 29 3.1 Connection + 30 3.2 Flow Control + 31 3.3 Multihost Communication + + 32 CHAPTER 4 ALGORITHMS AND USAGE RULES + 33 4.1 Controller States + 34 4.2 Controls And Indicators + 35 4.3 Unit States + 36 4.4 Unit Numbers + 37 4.5 Command Categories And Execution Order + 38 4.6 Class Driver / MSCP Server Synchronization + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + INTRODUCTION Page 1-2 + References 8 November 1987 + + + 1 4.7 Class Driver Error Recovery + 2 4.8 Serious Exceptions + 3 4.9 Host Access Timeouts + 4 4.10 Command Timeouts + 5 4.11 Disk Geometry And Format + 6 4.12 Bad Block Replacement + 7 4.13 Write Protection + 8 4.14 Compare Operations + 9 4.15 Special Drive Topologies + 10 4.16 Controller And Unit Identifiers + 11 4.17 Media Type Identifiers + + 12 CHAPTER 5 MSCP CONTROL MESSAGES + 13 5.1 Generic Control Message Format + 14 5.2 Reserved And Undefined Fields + 15 5.3 Command Messages + 16 5.4 End Messages + 17 5.5 Controller Flags + 18 5.6 Unit Flags + 19 5.7 Attention Messages + 20 5.8 Error Log Messages + + 21 CHAPTER 6 MINIMAL MSCP COMMAND SET + 22 6.1 Overview + 23 6.2 ABORT Command + 24 6.3 ACCESS Command + 25 6.4 AVAILABLE Command + 26 6.5 COMPARE HOST DATA Command + 27 6.6 DETERMINE ACCESS PATHS Command + 28 6.7 ERASE Command + 29 6.8 GET COMMAND STATUS Command + 30 6.9 GET UNIT STATUS Command + 31 6.10 ONLINE Command + 32 6.11 READ Command + 33 6.12 REPLACE Command + 34 6.13 SET CONTROLLER CHARACTERISTICS Command + 35 6.14 SET UNIT CHARACTERISTICS Command + 36 6.15 WRITE Command + + 37 CHAPTER 7 MULTIHOST SUPPORT FUNCTIONALITY + 38 7.1 Overview + 39 7.2 Multihost ABORT Command + 40 7.3 Multihost ACCESS NONVOLATILE MEMORY Command + 41 7.4 Multihost AVAILABLE Command + 42 7.5 Multihost GET COMMAND STATUS Command + 43 7.6 Multihost GET UNIT STATUS Command + 44 7.7 Multihost ONLINE Command + 45 7.8 Multihost SET CONTROLLER CHARACTERISTICS + 46 Command + 47 7.9 Multihost SET UNIT CHARACTERISTICS Command + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + INTRODUCTION Page 1-3 + References 8 November 1987 + + + 1 CHAPTER 8 CONTROLLER INITIATED BAD BLOCK + 2 REPLACEMENT + 3 8.1 Controller Initiated Bad Block Replacement + 4 Overview + 5 8.2 Data Safety Write Protection + 6 8.3 Bad Block Replacement + 7 8.4 Replacement Control Table Access + 8 8.5 Atomic Bad Block Replacement + 9 8.6 Error Log Messages + 10 8.7 Unit Context Information + 11 8.8 Actions During ONLINE + 12 8.9 Actions During SET UNIT CHARACTERISTICS + 13 8.10 Actions Before First Modification + 14 8.11 MSCP Control Message Format Changes + 15 8.12 Host Support For Controller Initiated Bad + 16 Block Replacement + + 17 APPENDIX A OPCODE, FLAG, AND OFFSET DEFINITIONS + + 18 APPENDIX B STATUS AND EVENT CODE DEFINITIONS + + 19 APPENDIX C CONTROLLER, UNIT, AND MEDIA TYPE + 20 IDENTIFIERS + + 21 APPENDIX D BUFFER DESCRIPTOR FORMATS + + 22 APPENDIX E WAIVERS AND EXCEPTIONS + + 23 APPENDIX F REVISION HISTORY + + 24 1.2.2 STI Specification + + 25 The Storage Tape Interface Specification, hereinafter referred to + 26 as STI, defines a communications interface used between DIGITAL + 27 tape formatters and controllers. Chapter 6 makes reference to + 28 various STI responses used in error log messages. + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TERMINOLOGY Page 2-1 + 8 November 1987 + + + 1 CHAPTER 2 + + 2 TERMINOLOGY + + + + 3 Addressable Unit: + + 4 The host addressable unit in TMSCP is a tape unit. A tape + 5 formatter is only visible to a controller and not to a host. + + + 6 Beginning-of-tape (BOT): + + 7 The beginning of the usable recording area of a magnetic + 8 tape. There are two aspects used in defining BOT: + + + 9 1. Physical BOT, the position forward of the tape leader + 10 signified by a Tape Format dependent delimiter. + + 11 2. Logical BOT, the position just before the first Object + 12 recorded (i.e., object count 0) on the tape. + + + 13 This distinction is necessary because the Tape Format + 14 Identification Area (TFIA) used in certain Tape Formats + 15 extends beyond Physical BOT causing a physical displacement + 16 of Logical BOT. Depending on the circumstance, TMSCP + 17 controllers will use either physical BOT or logical BOT when + 18 reporting BOT, as is convenient. + + + 19 End-of-Tape (EOT): + + 20 That physical position on a magnetic tape where a Tape Format + 21 dependent delimiter signals the beginning of the tape trailer + 22 area. Due to variations in delimiter sensing, it is possible + 23 for the sensing of EOT to vary on a given piece of media from + 24 forward to reverse direction, from drive to drive, from read + 25 to write, from caching to non-caching, and for other + 26 device-specific reasons. The amount of variation in EOT + 27 reporting is device-specific. Thus, applications should not + 28 depend upon EOT deasserting in the reverse direction at the + 29 same point it asserted in the forward direction, nor should + 30 they depend upon EOT asserting at the same position each time + 31 the media is accessed. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TERMINOLOGY Page 2-2 + 8 November 1987 + + + 1 Logical End-of-Tape (LEOT): + + 2 Two consecutive Tape Marks which indicate a host-imposed + 3 logical end of recorded data (i.e., end of volume) on a + 4 magnetic tape. LEOT is detected and reported during forward + 5 REPOSITION operations at the option of the host. + + + 6 Long Gap: + + 7 An extended Record gap (usually a group of contiguous Record + 8 gaps) sufficient enough in length or quantity to indicate + 9 that the remainder of the magnetic tape is unrecorded. Long + 10 gap values are Tape Format dependent as defined in Appendix + 11 C, Table C-4. + + + 12 Object: + + 13 An "object" is either a Record or a Tape Mark. The first + 14 tape Object is recorded forward of the Tape Format + 15 Identification Area (TFIA). Note that the TFIA, Record Gaps, + 16 and any other control information (e.g., error + 17 detection/correction frames) are not considered to be + 18 Objects. + + + 19 Physical End-of-Tape (PEOT): + + 20 The end of usable recording area, located in the tape trailer + 21 area, beginning at EOT and extending through a Tape Format + 22 dependent length. Refer to the appropriate media + 23 specification for the PEOT size of a specific media. + + + 24 Record: + + 25 The unit of data transfer, consisting of a collection of data + 26 bytes which are written or read as a single entity, without + 27 regard for Tape Format dependent physical or host defined + 28 logical composition. + + + 29 Record Gap: + + 30 A Tape Format dependent delimiter recorded on a magnetic tape + 31 which separates Objects and control information from one + 32 another or is used to by-pass defects on the recording + 33 surface. Normal Record Gaps have no special significance to + 34 TMSCP or the host. They are only relevant in describing tape + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TERMINOLOGY Page 2-3 + 8 November 1987 + + + 1 position. + + + 2 Tape Format: + + 3 The recording method used to store/retrieve data on a + 4 magnetic tape. Refer to Appendix C, Tables C-1 and C-2 for a + 5 list of recognized Tape Formats. + + + 6 Tape Format Identification Area (TFIA): + + 7 The area (around physical BOT) where Tape Format dependent + 8 format determination information is recorded. + + + 9 Tape Mark: + + 10 A Tape Format dependent delimiter recorded on a magnetic tape + 11 which usually serves as a separator for host defined files + 12 (i.e., end of file mark). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-1 + 8 November 1987 + + + 1 CHAPTER 3 + + 2 TMSCP GENERAL OPERATIONAL CHARACTERISTICS + + + 3 3.1 Unit States + + 4 The following subsections clarify Unit States as they apply to + 5 TMSCP. For an in depth definition of Unit States, refer to MSCP. + + 6 3.1.1 Unit Offline + + 7 If a formatter is offline to a controller, the addressed tape + 8 unit connected to the offline formatter is also offline to a + 9 host. A tape unit connected to a formatter which is online to a + 10 controller is subsequently offline to any other controller. + + 11 3.1.2 Unit Available + + 12 To be Unit-Available, a tape unit must be powered up, online to + 13 the formatter, have a magnetic tape loaded, and be ready to + 14 perform I/O. + + 15 3.1.3 Unit Online + + 16 Same as MSCP. + + 17 3.1.4 Exclusive Access Of A Unit + + 18 Same as MSCP. + + 19 3.1.5 Unit Operating Beyond EOT + + 20 The "EOT Encountered" end flag, as described in section 4.5.1, is + 21 considered part of the tape unit state. The current state of the + 22 "EOT encountered" end flag is returned in the end messages of all + 23 commands which specify the Unit Number field (including those + 24 defined only in MSCP). + + 25 3.1.6 Unit Position Lost + + 26 The "Position Lost" end flag, as described in section 4.5.1, is + 27 considered part of the tape unit state. The current state of the + 28 "Position Lost" end flag is returned in the end messages of all + 29 commands which specify the Unit Number field (including those + 30 defined only in MSCP). + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-1.1 + Unit States 8 November 1987 + + + 1 | NOTE + + 2 | It is important to distinguish between the + 3 | Position Lost state, as indicated by the Position + 4 | Lost end flag, and the Position Lost status + 5 | reported in end messages and error logs. Refer + 6 | to sections 3.5.3, 4.5.1, and 4.5.3 for further + 7 | information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-2 + Unit States 8 November 1987 + + + 1 3.1.7 Unit Serious Exception Pending + + 2 The "Serious Exception" end flag, as described in section 4.5.1, + 3 is considered part of the tape unit state. The current state of + 4 the "Serious Exception" end flag is returned in the end messages + 5 of all commands which specify the Unit Number field (including + 6 those defined only in MSCP). + + 7 3.1.8 Unit Cached Data Lost + + 8 The "Cached Data Lost" end flag, as described in section 4.5.1, + 9 is considered part of the tape unit state. The current state of + 10 the "Cached Data Lost" end flag is returned in the end messages + 11 of all commands which specify the Unit Number field (including + 12 those defined only in MSCP). + + 13 3.2 Command Categories And Execution Order + + 14 As noted in MSCP, TMSCP only uses immediate and sequential + 15 command types. TMSCP implementation of the immediate command + 16 type and most sequential commands is identical to that described + 17 in MSCP. However, certain tape operations (e.g., ERASE and + 18 REPOSITION) can take a considerable amount of time (up to 5 + 19 minutes or more) to complete, depending on the amount of tape + 20 traversed during the operation. Special consideration of lengthy + 21 commands is necessary in order to reduce the impact on the host + 22 environment. As an additional performance feature, TMSCP + 23 provides support for the caching of data transfer operations. + 24 The remaining subsections provide a detailed description of those + 25 special considerations. + + 26 3.2.1 Lengthy Command Considerations + + 27 3.2.1.1 Synchronous Vs Asynchronous + + 28 Treating lengthy commands as purely sequential (synchronous) + 29 operations can adversely affect host operation in that host + 30 resources dedicated to the completion of the operation cannot be + 31 relinquished until completion. Therefore, asynchronous operation + 32 of lengthy, non-data transfer commands is preferred. On the + 33 other hand, confirmation of successful completion may be more + 34 important to the host (e.g., data erasure in a high security + 35 installation). + + 36 TMSCP controllers accommodate both situations by allowing the + 37 host to specify, for a limited set of non-data transfer commands, + 38 whether a command is to complete in a synchronous or asynchronous + 39 manner via the "Immediate Completion" command modifier. + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-3 + Command Categories And Execution Order 8 November 1987 + + + 1 If the "Immediate Completion" command modifier is set, the + 2 controller returns the end message with the status field set to + 3 Success (subcode "Normal") as soon as the specified operation is + 4 initiated on the tape unit (for non-data transfer commands), or + 5 as soon as the data has been transferred from the host buffer + 6 (for data transfer commands). The command completion is + 7 therefore asynchronous to the completion of the tape unit + 8 operation. Until the tape unit operation completes the + 9 controller must preserve the sequentiality of subsequent + 10 sequential commands issued by the host. Furthermore, the + 11 controller must also ensure that subsequent sequential commands + 12 appear to be progressing towards completion in order to satisfy + 13 command timeout requirements as defined in MSCP. + + 14 If the "Immediate Completion" command modifier is clear, the + 15 controller will not return the end message until the tape unit + 16 operation is completed. + + 17 The "Immediate Completion" command modifier can only be specified + 18 in the following non-data transfer commands: ERASE and + 19 REPOSITION. In the case of the REPOSITION command, asynchronous + 20 operation will only occur if the "Immediate Completion" and + 21 "Rewind" command modifiers are set and the "record count" and + 22 "tape mark count" fields are both zero (i.e., rewind to BOT + 23 only). The controller will ignore the "Immediate Completion" + 24 command modifier in all other variations of the REPOSITION + 25 command. + + 26 The AVAILABLE command is always treated as an asynchronous + 27 completion command (without the need for a command modifier). + + 28 Refer to section 3.5.4 for information regarding the occurrence + 29 of an error during asynchronous operations. + + 30 3.2.1.2 Abort + + 31 Host resource blockage comes into play again when the host wants + 32 to ABORT a lengthy synchronous command. A second concern is that + 33 the tape unit operation is ABORTED in a controlled, predictable + 34 manner. + + 35 TMSCP controllers must ABORT lengthy commands specifically as + 36 follows: + + 37 o ERASE command with "Immediate Completion" command + 38 modifier clear: + + 39 Abort process - end message returned as soon as + 40 ABORT command is received, tape motion continues + 41 until erase is completed (ten feet past EOT), and + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-4 + Command Categories And Execution Order 8 November 1987 + + + 1 tape has rewound to BOT. + + + 2 o REPOSITION command with "Rewind" command modifier set, + 3 "Immediate Completion" command modifier clear, "Object + 4 Count" and "Reverse" modifiers either set or clear, zero + 5 "record count or object count" and "tape mark count" + 6 fields: + + 7 Abort process - end message returned as soon as + 8 ABORT command is received; tape motion continues to + 9 BOT. + + + 10 o REPOSITION command with "Rewind" command modifier clear, + 11 "Object Count" and "Reverse" modifiers either set or + 12 clear, non-zero "record count or object count" or "tape + 13 mark count" field(s): + + 14 Abort process - after receipt of the ABORT command, + 15 tape motion continues to the first record gap + 16 encountered; end message returned as soon as tape + 17 motion ceases (see exception described below). + + 18 NOTE + + 19 Devices which support the Tape Format Flag + 20 value of TF.CTP ("TK50" compatible cartridge + 21 tapes) do not follow the exception condition + 22 described below when the "Reverse" modifier + 23 is set. Instead, they have the following + 24 behavior: + + + 25 Abort Process - after receipt of the ABORT command, + 26 tape motion occurs to the beginning of the track, + 27 and proceeds forward until the first record gap + 28 encountered. This may be closer to logical BOT than + 29 the original target object. The end message is + 30 returned as soon as tape motion ceases. + + + 31 o REPOSITION command with "Rewind" modifier set, "Object + 32 Count" and "Reverse" modifiers either set or clear, + 33 non-zero "record count or object count" or "tape mark + 34 count" field(s): + + 35 Abort process - if the rewind has not yet completed + 36 (BOT has not been reached), the end message is + 37 returned as soon as the ABORT command is received, + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-5 + Command Categories And Execution Order 8 November 1987 + + + 1 and tape motion continues to BOT. If the rewind has + 2 completed, tape motion continues to the first record + 3 gap encountered after receipt of the ABORT command + 4 (see exception described below). The end message is + 5 returned as soon as tape motion ceases. + + + + 6 In the cases listed above where the end message is returned as + 7 soon as the ABORT command is received and the tape unit operation + 8 in progress is allowed to continue (i.e., ERASE and Rewind to + 9 BOT), command completion is asynchronous to the completion of the + 10 tape unit operation. Until the tape unit operation completes the + 11 controller must preserve the sequentiality of subsequent + 12 sequential commands issued by the host. Furthermore, the + 13 controller must also ensure that subsequent sequential commands + 14 appear to be progressing towards completion in order to satisfy + 15 command timeout requirements as defined in MSCP. Refer to + 16 Section 3.5.4 for information regarding the occurrence of an + 17 error during asynchronous operations. + + 18 FIRST RECORD GAP ENCOUNTERED EXCEPTION + + + 19 As mentioned in Section 5.10.3 TMSCP controllers + 20 are expressly permitted to optimize any of the + 21 various positioning functions available via the + 22 REPOSITION command. + + 23 If an ABORT command is received for a REPOSITION + 24 command while the controller is performing a + 25 positioning function optimization, cessation of + 26 tape motion at the next object (as required + 27 above) may result in a tape position outside the + 28 range of objects spanned by the REPOSITION + 29 function. If this condition occurs the + 30 controller must continue the positioning + 31 function. During the function continuation the + 32 action the controller must follow depends on + 33 whether the controller is capable of determining + 34 when the tape is positioned within the objective + 35 (i.e., that range of objects) of the positioning + 36 function or not: + + 37 a. If so, the controller continues tape motion + 38 until the first record gap within the + 39 objective is encountered; end message with + 40 Command Aborted status returned as soon as + 41 tape motion ceases. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-6 + Command Categories And Execution Order 8 November 1987 + + + 1 b. If not, the controller continues tape motion + 2 until the final objective of the positioning + 3 function is found; end message with Success + 4 (subcode "Normal") status returned as soon as + 5 tape motion ceases. + + + + 6 3.3 Tape Motion Command Operation + + 7 Tape motion commands are classified as "read", "write", and + 8 "ancillary" types. The following subsections describe tape + 9 motion operations common to each type. A separate section, + 10 section 3.4, describes common data transfer command operation. + + 11 3.3.1 "read" Type + + 12 The "read" type commands are as follows: + + 13 o ACCESS + 14 o COMPARE HOST DATA + 15 o READ + 16 o REPOSITION + + + 17 3.3.1.1 Direction + + 18 "Read" type commands can be performed in either the forward or + 19 reverse direction. Direction is selected according to the + 20 setting of the "Reverse" command modifier. When clear, tape + 21 motion is away from BOT, or in the FORWARD direction. When set, + 22 tape motion is toward BOT, or in the REVERSE direction. + + 23 It is not mandatory for "non-industry standard" TMSCP devices to + 24 support the "Reverse" command modifier on the ACCESS, COMPARE + 25 HOST DATA, and READ commands (see Appendix C, Table C-1 for those + 26 devices considered "non-industry standard"). Devices that do not + 27 implement the "Reverse" command modifier on the above commands + 28 must treat that modifier as reserved, and reject a command so + 29 modified with a status of Invalid Command. + + 30 All TMSCP devices are required to support the "Reverse" modifier + 31 on the REPOSITION command. + + 32 3.3.1.2 BOT Handling + + 33 Any "read" type commands performed in the REVERSE direction can + 34 unexpectedly encounter BOT (usually Logical BOT) before the + 35 requested operation is completed. The tape cannot be made to + 36 cross BOT as a result of a REVERSE operation. Any attempt to do + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-7 + Tape Motion Command Operation 8 November 1987 + + + 1 so will result in termination of the command with a BOT + 2 Encountered status when BOT is encountered. + + 3 3.3.1.3 EOT Handling + + 4 When EOT is crossed while performing a FORWARD "read" type + 5 command the "EOT Encountered" end flag will be set. When EOT is + 6 encountered in this manner, tape motion will not be suspended. + 7 Command operation will continue in the normal fashion. The "EOT + 8 Encountered" end flag remains set while the tape is positioned + 9 beyond EOT (i.e., in the tape trailer area). The "EOT + 10 Encountered" end flag will be cleared only when the tape is + 11 subsequently positioned ahead of EOT (i.e., on the BOT side of + 12 EOT) by any REVERSE "read" type command. + + 13 3.3.1.4 Tape Mark Handling + + 14 With one exception "read" type command operation is single record + 15 oriented. The exception is the REPOSITION command which can be + 16 Tape Mark, record, combined Tape Mark and record, or tape object + 17 oriented (See section 5.10 for complete details). If a Tape Mark + 18 is unexpectedly encountered before the requested record operation + 19 of any "read" type command is completed the command will be + 20 terminated with a Tape Mark Encountered status. The tape will + 21 remain positioned forward of the unexpected Tape Mark, relative + 22 to the direction of travel specified in the command. + + 23 3.3.2 "write" Type + + 24 The "write" type commands are as follows: + + 25 o ERASE GAP + 26 o WRITE + 27 o WRITE TAPE MARK + + + 28 3.3.2.1 Direction + + 29 "write" type commands are always performed in the forward + 30 direction. The "Reverse" command modifier is not allowed in any + 31 "write" type command and is therefore treated as a reserved + 32 field. + + 33 3.3.2.2 BOT Handling + + 34 "write" type commands will never encounter BOT unexpectedly. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-8 + Tape Motion Command Operation 8 November 1987 + + + 1 3.3.2.3 EOT Handling + + 2 When EOT is crossed while performing a "write" type command the + 3 "EOT Encountered" end flag will be set. When EOT is encountered + 4 in this manner, tape motion will not be suspended. Command + 5 operation will continue in the normal fashion and complete with a + 6 status of Success (subcode "EOT encountered"). The "EOT + 7 Encountered" end flag remains set while the tape is positioned + 8 beyond EOT (i.e., in the tape trailer area). The "EOT + 9 Encountered" end flag will be cleared only when the tape is + 10 subsequently positioned ahead of EOT (i.e., on the BOT side of + 11 EOT) by any REVERSE "read" type command. Note that encountering + 12 EOT while performing a "write" type command causes a Serious + 13 Exception condition. Refer to section 3.5.2 for more detail. + + 14 3.3.2.4 Tape Mark Handling + + 15 "write" type commands will never encounter a Tape Mark + 16 unexpectedly. + + 17 3.3.3 "ancillary" Type + + 18 The ERASE command is the only "ancillary" type command. + + 19 3.3.3.1 Direction + + 20 The ERASE command always begins operation in the forward + 21 direction. The "Reverse" command modifier is not allowed and is + 22 therefore treated as a reserved field. + + 23 3.3.3.2 BOT Handling + + 24 The ERASE command will never encounter BOT unexpectedly. + + 25 3.3.3.3 EOT Handling + + 26 The ERASE command will never encounter EOT unexpectedly. + + 27 3.3.3.4 Tape Mark Handling + + 28 The ERASE command will never encounter a Tape Mark unexpectedly. + + 29 3.4 Data Transfer Operations + + 30 The following are considered data transfer operations: + + 31 o ACCESS + 32 o Compare Operations (i.e., COMPARE HOST DATA command and + 33 Compare modified READ and WRITE) + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-9 + Data Transfer Operations 8 November 1987 + + + 1 o READ + 2 o WRITE + + + 3 The ACCESS and COMPARE HOST DATA commands are included in the + 4 data transfer category since their operation is + 5 characteristically the same, with the exception that no data is + 6 transferred to or from the host. + + 7 The following subsections describe operations common to the data + 8 transfer commands. A separate section, section 3.3, describes + 9 common tape motion command operation. + + 10 3.4.1 Record Length + + 11 Records and transfer specifications are inherently + 12 variable-length and are specified as an integral number of bytes, + 13 including odd byte counts. + + 14 There is no formal minimum record length. However, certain + 15 recording techniques are sufficiently noise-prone that a + 16 recommended minimum record size is required. + + 17 Maximum recommended record length is also required. This value + 18 is a function of both tape format and error detection and + 19 correction algorithms employed by a device. Any record length + 20 greater than the recommended maximum may not be reliably written + 21 and/or read. + + 22 The tape unit specific minimum and maximum record length values + 23 are available to the host in the end message of the ONLINE and + 24 SET UNIT CHARACTERISTICS commands. + + 25 Although a record of greater length than the maximum recommended + 26 can be read or written, there exists a true absolute maximum + 27 size. This absolute maximum size is dependent upon specific + 28 controller characteristics. Refer to Appendix C, Table C-3. + 29 Transfer commands specifying a byte count larger than the + 30 absolute maximum are rejected with an Invalid Command (subcode + 31 "Invalid Byte Count") status. In addition, transfer commands + 32 specifying a byte count of zero are rejected with a Invalid + 33 Command (subcode "Invalid Byte Count") status. + + 34 3.4.2 Tape Format Employed + + 35 The tape format employed in data transfer operations is dependent + 36 on the first tape motion command issued after the the tape unit + 37 becomes "Unit Online" (the first time in the case of multi-host + 38 access). + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-10 + Data Transfer Operations 8 November 1987 + + + 1 If the first tape motion command is a "write" type operation + 2 (i.e., ERASE GAP, WRITE, or WRITE TAPE MARK) the format specified + 3 by the host via either the ONLINE or SET UNIT CHARACTERISTICS + 4 command will be employed. + + 5 If the first tape motion command is a "read" type command (i.e., + 6 ACCESS, COMPARE HOST DATA, READ or REPOSITION) the controller + 7 will ignore host format specifications and employ the format + 8 implied by the information recorded in the TFIA when the tape was + 9 created. If the tape unit is unable to determine the recorded + 10 format from the TFIA information, the command is terminated with + 11 a Data Error (subcode "Unrecoverable Read Error") end message + 12 status. If the TFIA information is nonexistent, implying the + 13 tape is blank, the command is terminated with a Data Error + 14 (subcode "Long Gap Encountered") end message status. In this + 15 case the format employed in reading the TFIA information dictates + 16 the long gap value used in determining the long gap condition; + 17 however, the host specified format will not be changed to reflect + 18 that format. + + 19 3.4.3 Host Buffer Access + + 20 The COMPARE HOST DATA, READ, and WRITE command messages contain + 21 byte count and host buffer address descriptors. The ACCESS + 22 command only contains a byte count field. + + 23 3.4.3.1 WRITE Command + + 24 In the case of a WRITE command, the specified number of bytes is + 25 written to tape from the host buffer, in the forward direction, + 26 beginning at the host buffer base address proceeding through + 27 successively higher numbered addresses. + + 28 3.4.3.2 READ Command + + 29 For a READ command, the specified byte count is treated as advice + 30 to the controller. The amount of data actually transferred is + 31 dictated by the number of bytes contained in the tape record + 32 being read. A Success end message status is returned when the + 33 tape record size is either equal to or less than (short record) + 34 the specified byte count. However, if the tape record size is + 35 greater than (long record) the specified byte count the + 36 controller will terminate the transfer at the specified byte + 37 count and report a Record Data Truncated end message status. + + 38 READ commands can be performed in either the forward or reverse + 39 direction. "Non-industry standard" devices may reject READ + 40 commands with the "Reverse" command modifier set with a status of + 41 Illegal Command (subcode "Illegal Modifier"). See Appendix C, + 42 Table C-1 for those devices considered "non-industry standard". + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-11 + Data Transfer Operations 8 November 1987 + + + 1 3.4.3.2.1 Forward Direction + + 2 If a READ in the forward direction is specified, the data bytes + 3 of the record are stored in the host buffer beginning at the base + 4 address, as specified in the buffer descriptor, proceeding + 5 through successively higher-numbered addresses. If the tape + 6 record is short, the host buffer contents from + + 7 [base address]+[tape record byte count] + + 8 through + + 9 [base address]+[specified byte count]-1 + + 10 remain unchanged. If the tape record is long, the end of the + 11 tape record is truncated. + + 12 3.4.3.2.2 Reverse Direction + + 13 If a READ in the reverse direction is specified, the data bytes + 14 of the record are stored in the host buffer beginning at + + 15 [base address]+[specified byte count]-1, + + 16 proceeding through successively lower-numbered addresses. If the + 17 tape record is long, the front of the tape record is truncated. + 18 If the tape record is short the record image ends at host buffer + + 19 [base address]+[specified byte count]-[tape record byte count]. + + 20 The host buffer contents from the base address to the beginning + 21 of the short record image remain unchanged. + + 22 3.4.3.3 ACCESS Command + + 23 The ACCESS command is performed in the same manner as the READ + 24 command, described in section 3.4.3.2, with the exception that no + 25 data is transferred to the host. + + 26 3.4.3.4 Compare Operations + + 27 Compare operations permit comparison of data contained in a host + 28 buffer to data contained in a tape record. + + 29 The compare process is performed in the same manner as the READ + 30 command buffer storage process described in section 3.4.3.2. The + 31 only difference is that instead of storing the data read from the + 32 tape record, a byte by byte comparison is performed. + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-12 + Data Transfer Operations 8 November 1987 + + + 1 The MSCP description of compare operations is identical to TMSCP + 2 implementation with the exceptions described below. + + 3 A compare operation will not be performed by the controller in + 4 the following cases: + + 5 1. If a long tape record is encountered during a compare + 6 modified READ or COMPARE HOST DATA command. In this + 7 case the command is terminated with a Record Data + 8 Truncated status. + + 9 2. If any error occurs during the original data transfer of + 10 a compare modified READ or WRITE command which indicates + 11 the data was not transferred correctly or at all. In + 12 the case of the COMPARE HOST DATA command the compare + 13 operation is performed up to the point the error + 14 occurred. + + + 15 Refer to sections 4.5.4 and 4.5.5 for details on end message byte + 16 count fields. + + 17 "Compare after" operations (i.e., compare modified WRITE or READ) + 18 require positioning in the direction opposite to that specified + 19 in the original command. Regardless of the success or failure of + 20 the compare operation, the tape will always be positioned in the + 21 record gap forward of the tape record being operated on, relative + 22 | to the direction of the original command. Failures not related + 23 | to the compare operation may cause the tape to not be so + 24 | positioned (see section 3.5.3, Position Lost Handling). Such + 25 | failures will result in a "Position Lost" error condition. + + 26 3.4.4 End Message Byte Count Fields + + 27 Refer to sections 4.5.4 and 4.5.5 for details on end message byte + 28 count fields. + + 29 3.5 General Error Processing + + 30 The following subsections describe error processing common to + 31 TMSCP commands. Refer to section 4.5.2 for definition of + 32 individual status codes. + + 33 3.5.1 Reporting Precedence + + 34 In cases where multiple errors (or conditions) occur + 35 simultaneously, TMSCP controllers report errors according to the + 36 following categorical precedence: + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-13 + General Error Processing 8 November 1987 + + + 1 1. fatal condition (e.g., Drive Error, etc.) + 2 2. unrecoverable data error + 3 3. conditional success (e.g., EOT encountered) + 4 4. success + + + 5 3.5.2 Serious Exception Handling + + 6 Tape Units are inherently sequential devices. This means that + 7 the order in which tape motion commands are executed must be + 8 identical to the order in which they are received. + + 9 In traditional tape systems, sequentiality is preserved because + 10 the device is capable of having only one command outstanding to a + 11 tape unit at any time. If a tape motion command terminates with + 12 an error, the host can take immediate action to prevent commands + 13 waiting to be executed from being presented to the device. The + 14 host, therefore, implicitly maintains control of sequentiality. + + 15 Since TMSCP controllers are required to provide queuing of + 16 multiple commands, control of sequentiality following the + 17 occurrence of an error becomes the responsibility of the + 18 controller. When an error occurs and the tape unit remains "Unit + 19 Online" to any host, a TMSCP controller must ensure that + 20 subsequent commands are rejected until a host acknowledges the + 21 occurrence of the error. This condition is known as a Serious + 22 Exception condition. + + 23 Any of the conditions defined by the following Status Codes cause + 24 a Serious Exception condition: + + 25 o BOT Encountered + 26 o Compare Error + 27 o Controller Error + 28 o Data Error + 29 o Drive Error + 30 o Formatter Error + 31 o Host Buffer Access Error + 32 o Invalid Command, subcodes + 33 o Invalid Byte Count + 34 o Invalid Format + 35 o Invalid Unit Flags + 36 o LEOT Detected + 37 o Position Lost, only when Position Lost state is not + 38 already in effect (refer to section 3.5.3) + 39 o Record Data Truncated + 40 o Success, subcode "EOT Encountered", on the ERASE GAP, + 41 WRITE, and WRITE TAPE MARK commands + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-14 + General Error Processing 8 November 1987 + + + 1 o Tape Mark Encountered + 2 o Write Protected + + + 3 The following Status Codes will not cause a Serious Exception + 4 condition: + + 5 o Command Aborted + 6 o Invalid Command, all subcodes except + 7 o Invalid Byte Count + 8 o Invalid Format + 9 o Invalid Unit Flags + + 10 o Position Lost, while Position Lost state exists (refer + 11 to section 3.5.3) + 12 o Serious Exception + 13 o Success, all subcodes except EOT Encountered + 14 o Unit-Available + 15 o Unit-Offline + + + 16 The occurrence of a Serious Exception condition causes a tape + 17 unit to enter the Serious Exception state relative to all hosts + 18 to which it is currently "Unit Online", regardless of which host + 19 issued the command encountering the error. + + 20 The Serious Exception state is reflected in the Serious Exception + 21 end flag (SEF). Refer to section 4.5.1 for a description of End + 22 Flags. + + 23 The end message of the command encountering the Serious Exception + 24 condition will have SEF set and the status will reflect the + 25 nature of the error. Subsequent commands (including those + 26 currently queued by the controller) are rejected with SEF set and + 27 a status of Serious Exception in their end messages. The + 28 controller continues to reject commands in that manner until the + 29 tape unit Serious Exception state is cleared by a host. + + 30 The following commands are subject to rejection while a Serious + 31 Exception state exists: + + 32 o ACCESS + 33 o AVAILABLE + 34 o COMPARE HOST DATA + 35 o ERASE + 36 o ERASE GAP + 37 o FLUSH + 38 o READ + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-15 + General Error Processing 8 November 1987 + + + 1 o REPOSITION + 2 o WRITE + 3 o WRITE TAPE MARK + + + 4 The Clear Serious Exception Command Modifier (CSE) is the means + 5 by which a host acknowledges the Serious Exception condition and + 6 signals the controller that the tape unit Serious Exception State + 7 can be cleared and normal processing resumed. Note that the CSE + 8 modifier is acted upon before any other part of a command. It + 9 only clears the Serious Exception state that existed before the + 10 command was received (i.e., a command cannot clear a Serious + 11 Exception it caused). The CSE modifier is ignored if a Serious + 12 Exception state does not exist. + + 13 The CSE modifier can only be specified for the following + 14 commands: + + 15 o ACCESS + 16 o AVAILABLE + 17 o COMPARE HOST DATA + 18 o ERASE + 19 o ERASE GAP + 20 o FLUSH + 21 o ONLINE + 22 o READ + 23 o REPOSITION + 24 o SET UNIT CHARACTERISTICS + 25 o WRITE + 26 o WRITE TAPE MARK + + + 27 The CSE modifier is reserved for all other commands. + + 28 The existence of a Serious Exception state does not prevent other + 29 hosts from bringing a tape unit into the "Unit Online" state via + 30 the ONLINE command. The tape unit will be in the Serious + 31 Exception state relative to any host issuing a successful ONLINE + 32 command while the Serious Exception state exists, unless the CSE + 33 modifier was specified in that ONLINE command. In that case the + 34 Serious Exception State is cleared for all hosts which have the + 35 tape unit in the "Unit Online" state. + + 36 If a tape unit leaves the "Unit Online" state relative to all + 37 hosts, for any reason, the tape unit will cease to be in the + 38 Serious Exception state. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-16 + General Error Processing 8 November 1987 + + + 1 3.5.3 Position Lost Handling + + 2 When a "Position Lost" error condition occurs the tape unit + 3 enters the Position Lost state relative to all hosts to which it + 4 is currently "Unit Online", regardless of which host issued the + 5 command encountering the error. + + 6 The Position Lost state is reflected in the Position Lost end + 7 flag. Refer to section 4.5.1 for a description of end flags. + + 8 | A "Position Lost" error condition includes the following: + + 9 | 1. The formatter is not certain of the unit's position. + + 10 | 2. The change in unit position reported in the end messages + 11 | is not due to the command corresponding to this end + 12 | message. This includes the following case: + + 13 | o The unit enters the "Cached Data Lost" state (see + 14 | section 3.6.1.4). This effectively "revokes" + 15 | position that was previously reported (i.e., success + 16 | was reported on previous cached operations, which + 17 | have subsequently failed). The change reported in + 18 | the position field cannot be attributed to the + 19 | command containing the "Cached Data Lost" + 20 | indication, and thus a Position Lost error condition + 21 | has occurred and the unit enters the Position Lost + 22 | state. + + + + 23 While the Position Lost state is in effect the host may issue any + 24 tape motion command in an attempt to recover position on its own. + 25 The controller must attempt to execute those commands in the + 26 normal manner. During the execution of those commands the + 27 controller will not generate a Serious Exception condition for + 28 "Position Lost" error occurrences. The occurrence of all other + 29 errors however, will be handled in the normal manner. + + 30 The tape unit will remain in the Position Lost state until the + 31 tape is subsequently positioned to BOT, the tape unit enters the + 32 "Unit Offline" state, or the tape is unloaded via an AVAILABLE + 33 command. + + 34 3.5.4 Asynchronous Completion Handling Of Non-Data Transfer + 35 Commands + + 36 TMSCP controllers cannot provide host end message notification of + 37 errors encountered during either the execution of "immediate + 38 completion" non-data transfer type commands (refer to section + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-17 + General Error Processing 8 November 1987 + + + 1 3.2.1.1) or tape motion continuation following the abort of + 2 certain lengthy I/O commands (refer to section 3.2.1.2) because + 3 the end message has already been returned to the host. Based on + 4 the fact that all error conditions that can be encountered in + 5 either of those cases imply that the tape unit is essentially + 6 inoperable, the TMSCP controller will take the following actions: + + 7 1. Issue an error log detailing the error that occurred, + 8 provided the error normally requires logging and that + 9 miscellaneous error logs are enabled (refer to Appendix + 10 B). + + 11 2. Place the tape unit into the "Offline - Unit + 12 Inoperative" state. + + 13 Subsequent tape motion commands will therefore be rejected + 14 because of this "offline" state, precluding further operation of + 15 the tape unit until the host has acknowledged the condition. + + 16 3.5.5 Data Error Recovery + + 17 TMSCP tape unit data error recovery procedures meet or exceed the + 18 requirements of DEC Standard 174 with certain qualifications + 19 described below. Note that error recovery techniques used by + 20 block oriented tape units differ from those used by 9-track tape + 21 units, but will provide equivalent performance. + + 22 Only unrecoverable errors will be reported to the host in the end + 23 message status field. + + 24 Recoverable errors are reported to the host in error log form. + 25 The controller will normally issue only one error log during the + 26 error recovery process regardless of the number of attempts + 27 involved in recovering the data. The error log is issued after + 28 the final attempt whether recovery was successful or not. A + 29 separate error log will be issued for non-transfer errors (e.g., + 30 an STI transmission error) which occur during any segment of the + 31 recovery process. Refer to Chapter 6 for specific information on + 32 error log content. + + 33 Error recovery algorithms require unsolicited positioning in the + 34 direction opposite to that specified in the original command. + 35 For either a successful or unsuccessful recovery operation, the + 36 tape will be positioned in the record gap forward of the data + 37 record, relative to the direction of the original command. + 38 | Failure to be so positioned will result in a "Position Lost" + 39 | error condition. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-18 + General Error Processing 8 November 1987 + + + 1 Note that explicit recovery sequences may be specified to the + 2 controller by a formatter. + + 3 3.5.5.1 Suppression + + 4 Data error recovery suppression is controlled by the "Suppress + 5 Error Recovery" command modifier. This modifier is allowed in + 6 the ACCESS, COMPARE HOST DATA, READ, REPOSITION, and WRITE + 7 commands. When set, the controller will inhibit "Data Error" + 8 recovery procedures. If a "Data Error" is encountered the + 9 controller reports it to the host immediately as unrecoverable. + 10 The tape will remain positioned in the record gap forward of the + 11 tape object in error, relative to the direction specified in the + 12 command. + + 13 NOTE + + 14 Use of this modifier does not prevent the tape + 15 unit from entering the Serious Exception state + 16 when an error occurs. Refer to section 3.5.2 for + 17 more detail. + + + 18 3.5.5.2 Enhanced Write Error Recovery + + 19 Enhanced Write Error Recovery is a non-host settable unit + 20 characteristic presented only if the TMSCP controller supports + 21 the "Enable Re-write Error Recovery" command modifier on WRITE + 22 commands for the specified tape unit (see section 5.7.2). + + 23 When the "Enable Re-write Error Recovery" command modifier is + 24 set, the unit uses a special error recovery algorithm to write + 25 the data on the media. The algorithm must guarantee that the + 26 probability of altering or destroying previously written and + 27 acknowledged data is no worse than the probability of an + 28 undetected write error. It is permissible for the algorithm to + 29 leave multiple copies of the record on the media. + + 30 An example algorithm that can be applied to 9-track tapes is as + 31 follows: + + 32 1. If the initial attempt to write a record fails, then the + 33 record will be re-written sequentially down the tape for + 34 up to three retries. + + 35 2. If the re-writing of the record fails after three + 36 re-tries, then the TMSCP controller will institute its + 37 normal over-write error recovery algorithm to over-write + 38 the fourth copy of the record. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-19 + General Error Processing 8 November 1987 + + + 1 Units not utilizing the above algorithm must document in their + 2 device specification how the requirements of "Enhanced Write + 3 Error Recovery" are met. + + 4 The "Enable Re-write Error Recovery" modifier may not be set in + 5 conjunction with the "Suppress Error Recovery" command modifier + 6 and is therefore treated as a reserved field. The TMSCP + 7 controller must return an Invalid Command (subcode "Invalid + 8 Modifier") status code for status if both the "Suppress Error + 9 Recovery" command modifier and the "Enable Re-write Error + 10 Recovery" command modifiers are set in the same WRITE command. + + 11 3.5.6 Error Log Requirements + + 12 Controllers should not report error logs for events which cannot + 13 possibly be potential hardware problems. Examples: + + 14 1. On a tape device, a REPOSITION command returns Data + 15 Error (subcode "Long Gap Encountered") as a result of + 16 reading metadata previously recorded on the tape. Such + 17 metadata may be a result of the recording technology + 18 (e.g., block mode cartridge tape). This situation does + 19 not indicate a potential hardware problem, and thus an + 20 error log should not be returned. + + 21 2. On a tape device, a REPOSITION command returns Data + 22 Error (subcode "Long Gap Encountered") as a result of + 23 not reading a record within the required distance. This + 24 situation has the potential of being a hardware failure + 25 in the read electronics, and thus an error log should be + 26 returned. + + + 27 3.6 Tape Caching + + 28 There is a broad range of mass storage caches possible, including + 29 both one and two level caches (for large, slow, archival storage + 30 devices), write-through and write-back operations, and volatile + 31 and non-volatile caches. Caching may potentially be used for + 32 both disk and tape class devices. Caching for disk class devices + 33 implies what is normally meant by the term "cache". Caching for + 34 tape class devices is merely a mechanism for implementing + 35 controller based read-ahead and write-behind. Note that + 36 write-through caching applied to a tape class device is + 37 meaningless; since the data has already been written to the tape, + 38 it won't be retained in the cache. + + 39 A controller will typically only provide a subset of this cache + 40 functionality, if indeed it supports caching at all. This broad + 41 range of functionality has been included to avoid ad hoc + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-20 + Tape Caching 8 November 1987 + + + 1 extensions as future controllers are defined. + + 2 Performing write operations as write-behind, sometimes called + 3 write-back, operations offers the potential for greatly improved + 4 performance with a decrease in reliability. The decrease in + 5 reliability arises from the fact that data may be lost if the + 6 controller crashes or otherwise loses context before the data is + 7 written back to the unit. The probability of losing data is + 8 significantly different depending on whether the cache is + 9 volatile or non-volatile, since the primary cause of losing + 10 write-back data is power failures. Volatile caches always lose + 11 data on power failures; non-volatile caches only lose data if the + 12 unit, volume, or cache is removed from the controller during the + 13 power failure. For these reasons write-back operations must be + 14 explicitly enabled by the host. Write-back operations for TMSCP + 15 controllers with any type of cache may be enabled on either a per + 16 unit basis, using a unit flag, or on a per command basis, using a + 17 command modifier or both. In addition, the FLUSH command, with + 18 or without command modifiers, may be used to ensure that all + 19 write-back data has been written out to the specified tape unit. + + 20 Tape write-back caching can be viewed as having the following + 21 three characteristics: + + 22 1. The TMSCP controller's write-back cache is viewed as a + 23 volatile cache. + + 24 2. The TMSCP controller may have write-back caching enabled + 25 on a per unit basis or on a per command basis or both. + + 26 3. The TMSCP controller must provide support for "Enhanced + 27 Write Error Recovery". + + + 28 3.6.1 Write-Back Caching + + 29 Because normal TMSCP controller data transfer commands are + 30 sequential and depend on the completion of transferring data to + 31 the media, write-back caching requires specific measures to + 32 handle the various error and exception conditions which can + 33 occur. + + 34 If write-back caching is not enabled, either on a per unit basis + 35 or on a per command basis, then the TMSCP controller will return + 36 the end message when the write data transfer operation is + 37 completed. + + 38 If write-back caching is enabled, either on a per unit basis or + 39 on a per command basis, then the TMSCP controller may return the + 40 end message as soon as the data for the write data operation is + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-21 + Tape Caching 8 November 1987 + + + 1 completely buffered by the TMSCP controller. If write-back + 2 caching is enabled on a per command basis, the TMSCP controller + 3 must preserve the sequentiality of subsequent sequential (i.e., + 4 non-write-back cached) commands issued by the host until those + 5 operations complete. Furthermore, the TMSCP controller must also + 6 ensure that subsequent sequential commands appear to be + 7 progressing towards completion in order to satisfy the command + 8 timeout requirements as defined in MSCP. When write-back caching + 9 is enabled, either on a per unit basis or on a per command basis, + 10 then the TMSCP controller must, at all times, maintain the proper + 11 sequentiality of all previous non-write-back cached sequential + 12 commands. + + 13 The "Immediate Completion" command modifier can only be specified + 14 on the following data transfer "write" type commands (i.e., ERASE + 15 GAP, WRITE, and WRITE TAPE MARK commands). + + 16 If write-back caching is enabled, either on a per command basis + 17 or on a per unit basis, there must be some command sequence + 18 available to guarantee that all write-back data previously + 19 buffered for "write" type commands has been written out to the + 20 specified tape unit. The following five sections outline the + 21 command sequences available. + + 22 1. If write-back caching is enabled on a per command basis, + 23 subsequent non-write-back cached "write" type commands + 24 will guarantee that all write-back data previously + 25 buffered for "write" type commands has been written out + 26 to the specified tape unit. That is, the TMSCP + 27 controller will return the end message when the + 28 non-write-back cached "write" type data transfer + 29 operation has completed to the specified tape unit. + 30 Thus implying that all write-back data previously + 31 buffered for "write" type commands has been written out + 32 to the specified tape unit. + + 33 2. If write-back caching is enabled on a per unit basis, + 34 there are two distinct command sequences available to + 35 guarantee that write-back data buffered for all previous + 36 "write" type commands has been written out to the + 37 specified tape unit. + + 38 i. The first command sequence uses the FLUSH command. + 39 This command sequence will guarantee that all + 40 write-back data previously buffered for "write" type + 41 commands has been written out to the specified tape + 42 unit before the TMSCP controller will return the end + 43 message indicating the FLUSH command has completed. + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-22 + Tape Caching 8 November 1987 + + + 1 ii. The second command sequence depends on two WRITE + 2 TAPE MARK commands with no other intervening "write" + 3 type commands. This command sequence will guarantee + 4 that all write-back data previously buffered for + 5 "write" type commands has been written out to the + 6 specified tape unit prior to the TMSCP controller + 7 returning the end message indicating that the second + 8 WRITE TAPE MARK command has completed. + + + 9 3. Any command sequence that transitions from "write" type + 10 commands to either "read" type commands or "ancillary" + 11 type commands will force the TMSCP controller to "flush" + 12 all of the write-back cached data out to the specified + 13 tape unit prior to the end message indicating the + 14 completion of either the "read" type command or the + 15 "ancillary" type command. + + 16 4. At the time a response to a non-data transfer sequential + 17 command (i.e., AVAILABLE, ONLINE, or SET UNIT + 18 CHARACTERISTICS) is generated, the cache must be empty. + 19 Thus, any of these commands may be used to "flush" all + 20 of the write-back cached data out to the specified tape + 21 unit. Note that although the Available command is + 22 considered "immediate completion", the response must not + 23 be generated until the cache on the specified unit is + 24 empty. + + 25 5. In addition to the above mechanisms available to hosts, + 26 the TMSCP controller may, at its discretion, "flush" all + 27 of the TMSCP controller's write-back cached data out to + 28 the specified tape unit at any time. + + + 29 Proper support for write-back caching requires that controlled, + 30 predictable results be specified for the handling of the + 31 following conditions: + + 32 o Conflicting requirements imposed by unit flags. + + 33 o Conflicting requirements imposed by command modifiers. + + 34 o Data transfer errors that occur prior to command + 35 completion having been signaled to the host. + + 36 o Data transfer errors that occur after command completion + 37 has been signaled to the host. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-23 + Tape Caching 8 November 1987 + + + 1 3.6.1.1 Unit Flag Conflicts + + 2 The "Compare Writes" unit flag overrides the enabling of + 3 write-back caching. There are no other unit flags in conflict + 4 with the enabling of write-back caching. + + 5 3.6.1.2 Command Modifier Conflicts + + 6 The "Compare" modifier on WRITE commands overrides the enabling + 7 of write-back caching for the duration of the command. + 8 Write-back caching, if enabled, may be re-established after the + 9 compare portion of the command if subsequent commands do not also + 10 have the "Compare" modifier set. + + 11 The "Suppress Error Recovery" command modifier may either + 12 override the enabling of write-back caching for the duration of + 13 the command, or be handled as specified in the following sections + 14 (this approach assumes that the first data transfer error + 15 terminates any further processing). + + 16 Write-back caching, if enabled, may be re-established if + 17 subsequent commands do not also have the "Suppress Error + 18 Recovery" command modifier set. + + 19 There are no other command modifiers in conflict with the + 20 enabling of write-back caching. + + 21 3.6.1.3 Error And Exception Handling + + 22 In general, TMSCP controllers cannot provide host end message + 23 notification of errors or exceptions encountered during the + 24 execution of write-back caching data transfer commands because + 25 the end message has already been returned to the host. There are + 26 three error conditions which must be accommodated. These cases + 27 are: + + 28 1. Failure to transfer the specified data from the host + 29 because of some type of host bus access error (i.e., + 30 parity error, time out, bus interface failure, etc.). + + 31 2. Failure to maintain the specified data in the TMSCP + 32 controller's write-back cache (i.e., parity error, EDC, + 33 or other indication of data corruption). + + 34 3. Failure to successfully transfer the buffered data to + 35 the media. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-24 + Tape Caching 8 November 1987 + + + 1 The first error condition will be encountered prior to the + 2 signaling of completion for the write-back caching data transfer + 3 command. This situation implies that all of the prior data will + 4 have been written on the media and is therefore accessible. This + 5 condition requires that the TMSCP controller perform the + 6 following steps: + + 7 i. Issue an error log detailing the error that occurred, + 8 provided the error normally requires logging, (refer to + 9 Appendix B). + + 10 ii. Position the specified tape unit immediately after the + 11 last successful record written, and just prior to where + 12 the record in error would have occurred. + + 13 iii. Place the tape unit into the "Serious Exception" state. + + 14 iv. Report the specific nature of the error as the status + 15 for this specific command's end packet. + + + 16 Subsequent tape data transfer commands will therefore be rejected + 17 because of the "Serious Exception" state, precluding further + 18 operation of the specified tape unit until the host has + 19 acknowledged the condition. Additionally, the host will be + 20 "synchronized" with the tape unit and positioned immediately + 21 after the last good record. + + 22 Based on the fact that the other error conditions that can be + 23 encountered after a write-back caching data transfer command is + 24 initiated imply that the data on media is essentially + 25 inaccessible, the second and third conditions require that TMSCP + 26 controller perform the following steps: + + 27 i. Issue an error log detailing the error that occurred, + 28 provided the error normally requires logging (refer to + 29 Appendix B). + + 30 ii. If the specified tape unit remains in the "Unit Online" + 31 state, then place the tape unit into the "Serious + 32 Exception", "Position Lost", and "Cached Data Lost" + 33 states. + + 34 iii. Report the specific nature of the error as the status of + 35 the immediately subsequent sequential end packet to be + 36 returned. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-25 + Tape Caching 8 November 1987 + + + 1 Subsequent tape data transfer commands will therefore be rejected + 2 because of the "Serious Exception" state, precluding further + 3 operation of the tape unit until the host has acknowledged the + 4 condition. The host will not be "synchronized" with the tape + 5 unit and data written to the media subsequent to the last known + 6 "synchronization" point will be effectively inaccessible. + + 7 There is one exception condition which must be accommodated. + 8 That is the case of encountering EOT. This exception condition + 9 will be handled by the TMSCP controller anticipating the + 10 detection of EOT through some "early warning" mechanism and + 11 "winding down" the write-back caching such that the TMSCP + 12 controller is operating in a non-write-back caching mode when + 13 "true" EOT is encountered. + + 14 3.6.1.4 Cached Data Lost Handling + + 15 Tape Units are inherently sequential devices. This means that + 16 the order in which "write" type data transfer commands are + 17 executed must be identical to the order in which they are + 18 received. + + 19 In traditional tape systems, this sequentiality is preserved + 20 because the device is capable of having only one command + 21 outstanding to a tape unit at any time. If a "write" type data + 22 transfer command terminates with an error, the host can take + 23 immediate action to prevent commands waiting to be executed from + 24 being presented to the device. The host, therefore, implicitly + 25 maintains control of sequentiality. + + 26 A reliable detection mechanism for determining if write-back data + 27 has been lost needs to be defined. This detection mechanism + 28 needs to be hierarchical; partially implemented in the host and + 29 partially implemented in the TMSCP controller. At the host + 30 level, sufficient state needs to be maintained to remember that + 31 write-back operations are in progress. This state may be + 32 maintained either at the class driver level or the application + 33 level or both. At the TMSCP controller level, there needs to be + 34 a reporting mechanism to provide information concerning the + 35 efficacy of any pending write-back caching data transfer + 36 commands. The effect of this detection mechanism should be to + 37 facilitate either the restart of the entire application or an + 38 application dependent restart of the operations within some + 39 context (i.e., from the last known good host/tape unit + 40 synchronization point). The description of the TMSCP controller + 41 mechanism is contained below. + + 42 TMSCP controllers cannot provide host end message notification of + 43 errors or exceptions encountered during the execution of + 44 write-back caching data transfer commands because the end message + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-26 + Tape Caching 8 November 1987 + + + 1 has already been returned to the host. Therefore, when an error + 2 occurs and the tape unit remains "Unit Online" to any host, a + 3 TMSCP controller must ensure that subsequent commands are + 4 rejected until a host acknowledges the occurrence of the error. + 5 This condition is known as a Cached Data Lost condition. + 6 Any of the conditions defined by the following Status Codes + 7 occurring while write-back caching is enabled, either on a + 8 command basis or on a unit basis, will cause a Cached Data Lost + 9 condition: + + 10 o Controller Error + 11 o Data Error + 12 o Drive Error + 13 o Formatter Error + 14 o Position Lost, only when Position Lost state is not + 15 already in effect (refer to section 3.5.3) + 16 o Write Protected + + 17 The following Status Codes will not cause a Cached Data Lost + 18 condition: + + 19 o Invalid Command, all subcodes + 20 o Success, all subcodes + 21 o Unit-Available + 22 o Unit-Offline + + + 23 Whenever one of the above error conditions occurs that causes the + 24 TMSCP controller to lose cached data for the specified tape unit, + 25 it enters the Cached Data Lost state relative to all hosts to + 26 which it is currently "Unit Online", regardless of which host + 27 issued the command encountering the error. + + 28 The Cached Data Lost state is reflected in the Cached Data Lost + 29 end flag (DLF). Refer to section 4.5.1 for a description of end + 30 flags. + + 31 The end message of the next sequential command processed after + 32 the occurrence of the Cached Data Lost condition will have its + 33 DLF set and its status will reflect the nature of the error. + 34 Subsequent commands (including those currently queued by the + 35 controller) are rejected with DLF set and a status of Serious + 36 Exception in their end messages. The controller continues to + 37 reject commands in that manner until the tape unit Cached Data + 38 Lost state is cleared by a host. Immediate commands processed + 39 prior to the reporting to the host of a Cached Data Lost + 40 condition will reflect the previous state of the Cached Data Lost + 41 flag. + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-27 + Tape Caching 8 November 1987 + + + 1 The following commands are subject to rejection while a Cached + 2 Data Lost state exists: + + 3 o ACCESS + 4 o COMPARE HOST DATA + 5 o ERASE + 6 o ERASE GAP + 7 o FLUSH + 8 o READ + 9 o REPOSITION + 10 o WRITE + 11 o WRITE TAPE MARK + + + 12 The Clear Cached Data Lost modifier (CDL) is the means by which a + 13 host acknowledges the Cached Data Lost condition and signals the + 14 controller that the tape unit Cached Data Lost State can be + 15 cleared and normal processing resumed. Note that the CDL + 16 modifier is acted upon before any other part of a command. It + 17 only clears the Cached Data Lost state that existed before the + 18 command was received (i.e., a command cannot clear a Cached Data + 19 Lost it caused). The TMSCP controller must return an Invalid + 20 Command (subcode "Invalid Modifier") status code if the CDL + 21 modifier is specified and a Cached Data Lost state does not + 22 currently exist. + + 23 The CDL modifier can only be specified for the following + 24 commands: + + 25 o ACCESS + 26 o AVAILABLE + 27 o COMPARE HOST DATA + 28 o ERASE + 29 o ERASE GAP + 30 o FLUSH + 31 o ONLINE + 32 o READ + 33 o REPOSITION + 34 o SET UNIT CHARACTERISTICS + 35 o WRITE + 36 o WRITE TAPE MARK + + + 37 The CDL modifier is reserved for all other commands. + + 38 The existence of a Cached Data Lost state does not prevent other + 39 hosts from bringing a tape unit into the "Unit Online" state via + 40 the ONLINE command. The tape unit will be in the Cached Data + 41 Lost state relative to any host issuing a successful ONLINE + 42 command while the Cached Data Lost state exists, unless the CDL + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-28 + Tape Caching 8 November 1987 + + + 1 modifier was specified in that ONLINE command. In that case the + 2 Cached Data Lost State is cleared for all hosts which have the + 3 tape unit in the "Unit Online" state. + + 4 If a tape unit leaves the "Unit Online" state relative to all + 5 hosts, for any reason, the tape unit will cease to be in the + 6 Cached Data Lost state. + + 7 3.6.2 Read-Ahead Caching + + 8 | TMSCP controllers should normally read-ahead and cache data from + 9 | the media in anticipation of host read requests. However, each + 10 | read request must be satisfied by a distinct physical read + 11 | operation. If the host issues multiple read requests for the + 12 | same data, then the TMSCP controller must use a separate physical + 13 | read operation to satisfy each request. If the host issues a + 14 | read request for data that has been invalidated by a write + 15 | operation subsequent to the read-ahead operation, the TMSCP + 16 | controller must physically read the tape again. + + 17 | Hosts can request that data be read from tape in one of two ways: + + 18 | o Issuing a "read" type command (ACCESS, COMPARE, READ). + + 19 | o Issuing a command with an explicit or implicit compare + 20 | operation. That is, either a command with a compare + 21 | modifier or a command to which a compare unit flag + 22 | applies. + + + 23 | Note that a read-compare operation is two distinct read requests. + + 24 | A "write" type operation invalidates all read-ahead data read + 25 | from tape objects at positions (object count) equal to or greater + 26 | than the position (object count) of the "write" type operation. + + 27 | This effectively means that a TMSCP controller must use the + 28 | following policies to manage its read-ahead cache: + + 29 | 1. Only data physically read from tape enters the + 30 | read-ahead cache. In particular, write data never + 31 | enters the read-ahead cache. + + 32 | 2. Any data in the read-ahead cache that is used to satisfy + 33 | a host read request is immediately deleted from the + 34 | cache, and is not available to satisfy subsequent + 35 | requests. If multiple physical read operations have + 36 | entered multiple copies of the same data in the cache, + 37 | then only one copy need be deleted. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-29 + Tape Caching 8 November 1987 + + + 1 | 3. A "write" type operation causes any data in the + 2 | read-ahead cache read from objects with a position + 3 | (object count) greater than or equal to the position + 4 | (object count) of the "write" type operation to be + 5 | immediately deleted from the cache. + + 6 | 4. In addition to the above, the TMSCP controller may, at + 7 | its discretion, delete any or all of the TMSCP + 8 | controller's read-ahead cached data. + + + 9 Proper support for read-ahead caching requires that controlled, + 10 predictable results be specified for the handling of the + 11 following conditions: + + + 12 o Conflicting requirements imposed by unit flags. + + 13 o Conflicting requirements imposed by command modifiers. + + 14 o Data transfer errors during read ahead operations. + + + 15 3.6.2.1 Unit Flag Conflicts + + 16 The "Compare Reads" and the "Suppress Caching" unit flags + 17 override the enabling of read-ahead caching. There are no other + 18 unit flags in conflict with the enabling of read-ahead caching. + + 19 3.6.2.2 Command Modifier Conflicts + + 20 The "Compare" modifier on READ commands overrides the enabling of + 21 read-ahead caching for the duration of the command. Read-ahead + 22 caching may be re-established after the compare portion of the + 23 command if subsequent commands do not also have the "Compare" + 24 modifier set. + + 25 The "Suppress Caching" modifier on "read" type commands overrides + 26 the enabling of read-ahead caching for the duration of the + 27 specified command. Read-ahead caching may be re-established + 28 after the completion of the specified command if subsequent + 29 "read" type commands do not also have the "Suppress Caching" + 30 modifier set. + + 31 The "Suppress Error Recovery" command modifier may either + 32 override the enabling of read-ahead caching for the duration of + 33 the command, or be handled as specified in the following sections + 34 (this approach assumes that the first unrecoverable or suppressed + 35 error recovery data transfer error terminates any further + 36 processing). + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP GENERAL OPERATIONAL CHARACTERISTICS Page 3-30 + Tape Caching 8 November 1987 + + + 1 Read-ahead caching may be re-established if subsequent commands + 2 do not also have the "Suppress Error Recovery" command modifier + 3 set. + + 4 There are no other command modifiers in conflict with the + 5 enabling of read-ahead caching. + + 6 3.6.2.3 Error Handling + + 7 TMSCP controllers are responsible for handling all errors that + 8 occur during read-ahead caching. TMSCP controllers issue an + 9 error log detailing the error that occurred (provided that error + 10 normally requires logging [refer to Appendix B]), when data + 11 associated with the specific data record causing the error is + 12 requested by the host. In order to accomplish this objective, + 13 the TMSCP controller must make a reasonable assumption about the + 14 format of data records and tape marks written on the magnetic + 15 tape. This assumption about tape format will be formalized in + 16 the definition of a properly formatted tape segment which is a + 17 portion of magnetic tape starting at BOT which contains an + 18 arbitrary number of data records and tape marks in arbitrary + 19 order, terminating in two consecutive tape marks with no + 20 intervening data records. A properly formatted tape segment must + 21 be written from BOT or may result from the arbitrary appending of + 22 additional data records and tape marks to a properly formatted + 23 tape segment which also results in a properly formatted tape + 24 segment. The TMSCP controller must terminate read-ahead caching + 25 upon detection of the end of a properly formatted tape segment + 26 while reading in the forward direction. Subsequent Host issued + 27 "read" type commands in the forward direction may re-enable + 28 read-ahead caching. In addition, TMSCP controllers may apply + 29 other recording technology or implementation dependent mechanisms + 30 in order to properly control read-ahead caching and minimize + 31 their error handling requirements. + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-1 + 8 November 1987 + + + 1 CHAPTER 4 + + 2 TMSCP MESSAGE OVERVIEW + + + 3 4.1 Tape MSCP Functions Having No Disk MSCP Counterparts + + 4 o ERASE GAP + 5 o FLUSH + 6 o REPOSITION + 7 o WRITE TAPE MARK + + + 8 4.2 Identical Disk And Tape MSCP Functions + + 9 The following functions are identical in both Disk MSCP and Tape + 10 MSCP. Their descriptions have been omitted from this document. + + 11 o ABORT (Refer to section 3.2.1.2 for operational + 12 clarifications) + 13 o ACCESS NON-VOLATILE MEMORY + 14 o DETERMINE ACCESS PATHS + 15 o GET COMMAND STATUS + 16 o SET CONTROLLER CHARACTERISTICS + 17 o INVALID COMMAND End Message + 18 o ACCESS PATH Attention Message + 19 o AVAILABLE Attention Message + 20 o DUPLICATE UNIT NUMBER Attention Message + + + 21 4.3 Tape Specific MSCP Commands And Responses + + 22 Following is a list of Tape specific MSCP commands, which are + 23 described in Chapter 5. + + 24 o ACCESS + 25 o AVAILABLE + 26 o COMPARE HOST DATA + 27 o ERASE + 28 o ERASE GAP + 29 o GET UNIT STATUS + 30 o ONLINE + 31 o READ + 32 o REPOSITION + 33 o SET UNIT CHARACTERISTICS + 34 o WRITE + 35 o WRITE TAPE MARK + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-2 + Generic Command Message Format 8 November 1987 + + + 1 4.4 Generic Command Message Format + + 2 Refer to MSCP for a general description of command message + 3 formats. + + 4 4.4.1 Command Modifiers + + 5 Refer to MSCP for a general description of command modifier + 6 operations. + + 7 The following command modifiers are supported by TMSCP but + 8 described in MSCP: + + 9 o All Class Drivers + 10 o Enable Set Write Protect + 11 o Exclusive Access + 12 o Next Unit + 13 o Suppress Error Correction + + + 14 The following command modifiers apply to a single TMSCP command. + 15 Their operation is described within the identified command + 16 description: + + 17 o Detect LEOT - REPOSITION + 18 o Enable Re-write Error Recovery - WRITE + 19 o Object Count - REPOSITION + 20 o Rewind - REPOSITION + 21 o Unload - AVAILABLE + + + 22 The following command modifiers apply to various TMSCP commands. + 23 Their operation is described within the identified general + 24 operation sections: + + 25 o Clear Cached Data Lost - 3.6.1.4 + 26 o Clear Serious Exception - 3.5.2 + 27 o Compare - 3.4.3.4 + 28 o Immediate Completion - 3.2 for non-data transfer + 29 commands + 30 o Immediate Completion - 3.6 for data transfer commands + 31 o Reverse - 3.3 + 32 o Suppress Caching - 3.6.2.2 + 33 o Suppress Error Recovery - 3.5.5.1 + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-3 + End Message Format 8 November 1987 + + + 1 4.5 End Message Format + + 2 Refer to MSCP for a general description of the end message + 3 format. + + 4 4.5.1 Flags + + 5 The following end flag is supported by TMSCP but defined in MSCP: + + 6 o Error Log Generated + + 7 End flags specific to TMSCP and common to many commands are + 8 defined here: + + 9 o Cached Data Lost + + 10 Set when cached data is lost because a tape unit + 11 entered the Serious Exception state while write-back + 12 caching is enabled. Refer to section 3.6.1.4 for + 13 further details. + + + 14 o EOT Encountered + + 15 Set whenever the magnetic tape loaded on a drive is + 16 currently positioned at or beyond EOT. Refer to + 17 section 3.3 for further details. + + + 18 o Position Lost + + 19 Set when a tape unit is in the Position Lost state. + 20 Refer to section 3.5.3 for further details. + + + 21 o Serious Exception + + 22 Set when a tape unit is in the Serious Exception + 23 state. Refer to section 3.5.2 for further details. + + + + 24 4.5.2 Status + + 25 Refer to MSCP for a complete description of the status field + 26 format. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-4 + End Message Format 8 November 1987 + + + 1 4.5.3 Status Codes + + 2 The following status codes are common to both MSCP and TMSCP. + 3 Refer to MSCP for a complete description: + + 4 o Command Aborted + 5 o Controller Error + 6 o Drive Error + 7 o Host Buffer Access Error + 8 o Invalid Command (subcode "Invalid Unit Flags") + 9 o Unit-Available + 10 o Unit-Offline + + + 11 Major status codes that are TMSCP specific are described here. + 12 Status codes specific to a single TMSCP command are described + 13 with the associated command. + + 14 o BOT Encountered + + 15 This status code will be returned whenever BOT is + 16 unexpectedly encountered during the execution of a + 17 reverse read type command. See section 3.3.1.2 for + 18 more details. + + + 19 o Compare Error + + 20 This status code will be returned whenever a + 21 difference is found between the tape record data and + 22 the host buffer data during a compare operation. It + 23 will also be returned if a short tape record is + 24 encountered during a COMPARE HOST DATA or compare + 25 modified READ command. + + + 26 o Data Error (subcode "Long Gap Encountered") + + 27 This status code will be returned when a long gap is + 28 detected while attempting to execute a read type + 29 command (i.e., ACCESS, COMPARE HOST DATA, READ or + 30 REPOSITION). Tape motion ceases and the tape + 31 remains positioned at the end of the long gap. + 32 Refer to Appendix C, Table C-4 for tape format + 33 dependent long gap values. + + + 34 o Data Error (subcode "Unrecoverable Read Error") + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-5 + End Message Format 8 November 1987 + + + 1 This status code will be returned: 1) if the tape + 2 format cannot be determined from the TFIA + 3 information during first read density selection; or, + 4 2) if invalid or uncorrectable data is obtained from + 5 the tape unit, as determined by internal error + 6 detecting or correcting codes. + + + 7 o Formatter Error + + 8 This status will be returned when a formatter + 9 reports an internally detected error to the + 10 controller. The subcode will identify the exact + 11 cause of the error. + + + 12 o Invalid Command (subcode "Invalid Byte Count") + + 13 The command specified a byte count greater than the + 14 absolute maximum allowed by the controller. Refer + 15 to Appendix C, Table C-3 for specifics. + + + 16 o Media Format Error + + 17 This status code will be returned whenever the media + 18 is formatted in a manner that cannot be written nor + 19 read by the controller (i.e., if a disk formatted + 20 media is accessed by TMSCP on a combination + 21 TMSCP/MSCP device). + + + 22 o Position Lost + + 23 This status code will be returned whenever the + 24 controller, formatter, or tape unit loses context of + 25 the tape position (object count). + + 26 | NOTE + + 27 | The intent of this status code is to report + 28 | the loss of tape position when further tape + 29 | motion operations are believed to be + 30 | possible by the unit. If an error occurs + 31 | that is not recoverable and prevents further + 32 | tape motion commands (i.e., the tape + 33 | breaks), then the appropriate drive or data + 34 | error should be reported as the status of + 35 | the command, rather than a status of + 36 | Position Lost. The Position Lost end flag + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-6 + End Message Format 8 November 1987 + + + 1 | should still be used as appropriate. + + + + 2 o Record Data Truncated + + 3 This error code will be returned whenever the length + 4 of a tape record read is greater than the value + 5 supplied in the "byte count" field of the + 6 corresponding command message. + + + 7 o Serious Exception + + 8 The command is rejected because the tape unit is + 9 currently in the Serious Exception state or the + 10 Cached Data Lost state. Refer to section 3.5.2 and + 11 section 3.6.1.4 for further details. + + + 12 o Success (subcode "EOT Encountered") + + 13 This status code will be returned whenever EOT is + 14 encountered during the execution of a write type + 15 command (i.e., ERASE GAP, WRITE, or WRITE TAPE + 16 MARK). The command will complete in the normal + 17 fashion after EOT is encountered. + + + 18 o Tape Mark Encountered + + 19 This status code will be returned whenever a tape + 20 mark is unexpectedly encountered during the + 21 execution of a read type command. See sections + 22 3.3.1.4 and 5.10.3 for more details. + + + 23 o Write Protected + 24 (subcode "Unit is Hardware Write Protected") + 25 (subcode "Unit is Software Write Protected") + 26 (subcode "Unit is Data Safety Write Protected") + + 27 This status will be returned if the tape unit is + 28 found to be hardware, software, or data safety + 29 Write Protected when a command requiring a write + 30 operation is issued. The command is rejected + 31 immediately and no tape motion will occur. The + 32 subcode reflects the tape unit hardware, + 33 software and data safety write protect state(s), + 34 maintained by the controller. + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-7 + End Message Format 8 November 1987 + + + 1 The status codes that may be returned for each command and any + 2 special meaning that they have are listed in the command end + 3 message descriptions in Chapter 5. + + 4 4.5.4 Byte Count (Host Transfer) + + 5 This field, returned in the COMPARE HOST DATA, READ, and WRITE + 6 command end messages, reflects the number of bytes SUCCESSFULLY + 7 compared or transferred. The count begins with the first byte + 8 transferred to/from the tape record and ceases at either the byte + 9 count specified in the command message or the byte count of the + 10 first error encountered, if any. + + 11 If the controller cannot initiate the command for any reason the + 12 value returned in this field is zero. + + 13 If an error occurs, the controller must have SUCCESSFULLY + 14 compared or transferred all data up to the point identified by + 15 "byte count". Furthermore, the error identified by "status" must + 16 have actually occurred at the byte position identified by "byte + 17 count". + + 18 READ or WRITE commands that include a compare operation are + 19 special cases. Such a command makes two passes over the data: + 20 one for the original transfer and another for the compare + 21 operation. For most errors, there is no way to determine in + 22 which pass the error was detected. Therefore, the only guarantee + 23 is that error-free transfer was performed up to the point + 24 identified by "byte count". The compare operation may or may not + 25 have been performed up to that point. If a "Compare Error" is + 26 reported, both the original transfer and the compare operation + 27 have been successfully performed up to the point identified by + 28 "byte count". + + 29 NOTE + + 30 The state of a compare or transfer following the + 31 byte position identified by "byte count" is + 32 undefined, since: + + 33 1. None of the transfer following "byte count" + 34 may have been performed or attempted. + + 35 2. All of it may have been attempted (with + 36 unknown success). + + 37 3. Some parts may have been attempted and others + 38 not. + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP MESSAGE OVERVIEW Page 4-8 + End Message Format 8 November 1987 + + + 1 This implies that the compare pass of a transfer + 2 command may be performed for the entire transfer, + 3 or portions thereof. + + + 4 4.5.5 Byte Count (Tape Record) + + 5 This field, returned in the ACCESS, COMPARE HOST DATA, READ, and + 6 WRITE command end messages, reflects the number of bytes + 7 contained in the tape record. This field is only valid if the + 8 controller can determine the actual size of the tape record. If + 9 the controller is unable to determine the tape record size, the + 10 value returned in this field is zero. + + 11 4.5.6 Position (Object Count) + + 12 This field, returned in the ACCESS, COMPARE HOST DATA, ERASE GAP, + 13 FLUSH, READ, REPOSITION, WRITE and WRITE TAPE MARK command end + 14 messages, reflects the current position of the tape in terms of + 15 object counts forward of BOT. Because of the potential for + 16 command pipelining within the controller and/or the tape + 17 formatter, the most currently reported "object count" may lag + 18 behind the actual physical drive position. Nevertheless, this + 19 information is sufficient for host recovery from power failure or + 20 position lost situations. + + 21 All caching units must report Position in a manner that makes the + 22 caching transparent to higher levels. Thus, the contents of the + 23 Position field is the position on tape, in terms of objects + 24 forward of BOT, of the object whose end message has most recently + 25 been generated for the indicated unit. I.e., a unit caches a + 26 WRITE command, and sends an end message indicating successful + 27 completion. In that and subsequent end messages, the unit + 28 reports position as if the WRITE had already taken place, when in + 29 reality the WRITE may still be waiting in the cache. + + 30 When a "position lost" condition is encountered or the tape unit + 31 is in the Position Lost state (refer to section 3.5.3), the + 32 controller will return its "best guess" object count in the + 33 Position field. The "best guess" can be obtained by setting the + 34 object count to be the last known (good) position when the unit + 35 first enters the Position Lost state. Subsequent positioning of + 36 the drive causes corresponding changes to the "best guess" object + 37 count. + + 38 This field must be valid when the tape unit is "Unit Online" and + 39 not in the Position Lost state. This field must contain the + 40 unit's "best guess" object count when the tape unit is "Unit + 41 Online" and in the Position Lost state. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-1 + 8 November 1987 + + + 1 CHAPTER 5 + + 2 TMSCP COMMAND DESCRIPTIONS + + + 3 5.1 ACCESS Command + + 4 Command Category: + + 5 Sequential + + + 6 5.1.1 Command Message Format + + 7 31 0 + 8 +-------------------------------+ + 9 | command reference number | + 10 +---------------+---------------+ + 11 | reserved | unit number | + 12 +---------------+-------+-------+ + 13 | modifiers | rsvd | opcode| + 14 +---------------+-------+-------+ + 15 | byte count | + 16 +-------------------------------+ + + + 17 Allowable Modifiers: + + 18 Clear Cached Data Lost + 19 Clear Serious Exception + 20 Reverse (see section 3.3.1.1) + 21 Suppress Caching + 22 Suppress Error Correction + 23 Suppress Error Recovery + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-2 + ACCESS Command 8 November 1987 + + + 1 5.1.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | | + 11 +---- ----+ + 12 | | + 13 +---- undefined ----+ + 14 | | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + 20 | byte count (tape record) | + 21 +-------------------------------+ + + + 22 Status Codes: + + 23 Success + 24 (subcode "Normal") + + 25 BOT Encountered + 26 Command Aborted + 27 Controller Error + 28 Data Error + 29 Drive Error + 30 Formatter Error + + 31 Invalid Command + 32 (subcode "Invalid Byte Count") + 33 (subcode "Illegal Modifier") (see section 3.3.1.1) + + 34 Position Lost + 35 Record Data Truncated + 36 Serious Exception + 37 Tape Mark Encountered + 38 Unit-Available + 39 Unit-Offline + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-3 + ACCESS Command 8 November 1987 + + + 1 Flags: + + 2 Cached Data Lost + 3 EOT Encountered + 4 Error Log Generated + 5 Position Lost + 6 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-4 + ACCESS Command 8 November 1987 + + + 1 5.1.3 Description + + 2 Beginning at the current position, data is read from the magnetic + 3 tape loaded on the specified unit, checked for errors, and then + 4 discarded. + + 5 Refer to sections 3.3, 3.4, and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-5 + AVAILABLE Command 8 November 1987 + + + 1 5.2 AVAILABLE Command + + 2 Command Category: + + 3 Sequential - Immediate Completion + + + 4 5.2.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 All Class Drivers (ignored in single host case) + 15 Clear Cached Data Lost + 16 Clear Serious Exception + 17 Exclusive Access + 18 Unload + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-6 + AVAILABLE Command 8 November 1987 + + + 1 5.2.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success + + 12 (subcode "Normal") + + 13 (subcode "Still Connected") + + 14 The "still connected" subcode is returned if the + 15 tape unit may potentially be accessed via + 16 another controller but some other tape unit + 17 which shares the same access path is still + 18 "Unit-Online" to another host. + + + 19 (subcode "Still Online") + + 20 The "still online" subcode indicates that the + 21 tape unit is now "Unit-Available" to the + 22 requesting Host, but the tape unit is still + 23 "Unit-Online" to another Host. + + + 24 (subcode "Still Online/Unload Ignored") + + 25 The "Still Online/Unload Ignored" subcode is + 26 returned if the "Unload" modifier was set in the + 27 command message and the unload was inhibited + 28 because the tape unit is still "Unit Online" to + 29 another host. + + + 30 Command Aborted + 31 Controller Error + 32 Drive Error + 33 Exclusive Access + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-7 + AVAILABLE Command 8 November 1987 + + + 1 Formatter Error + 2 Serious Exception + 3 Unit-Offline + + 4 Flags: + + 5 Cached Data Lost + 6 EOT Encountered + 7 Error Log Generated + 8 Position Lost + 9 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-8 + AVAILABLE Command 8 November 1987 + + + 1 5.2.3 Description + + 2 All outstanding host commands are completed after which the tape + 3 unit is placed in the "Unit Available" state relative to the + 4 host. + + 5 If the tape unit is not "Unit Online" to any other host, the tape + 6 is rewound to BOT. + + 7 If the "Unload" command modifier is set and the tape unit is not + 8 "Unit Online" to any other host (i.e., "Still Online"), the tape + 9 will be unloaded, rendering the tape unit "Unit-Offline". Note + 10 that a "Still Connected" condition will not inhibit tape + 11 unloading, if unload was requested. + + 12 If the "Unload" command modifier was not set, the tape unit is + 13 not already "Unit-Available" and no other tape units sharing the + 14 same access path are "Unit-Online" (i.e., the "Still Connected" + 15 status subcode flag is clear), then an AVAILABLE attention + 16 message is sent by any other controller to which the tape unit is + 17 connected. The controller to which this command was sent need + 18 not send an AVAILABLE attention message. + + 19 This command will be accepted if the tape unit is "Unit Online" + 20 or "Unit Available". There is no point in issuing this command + 21 to a "Unit Available" tape unit without specifying the "Unload" + 22 modifier. + + 23 Refer to section 3.2 for additional information. + + 24 The actions of this command with the Exclusive Access modifier + 25 are described in the MSCP specification. + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-9 + COMPARE HOST DATA Command 8 November 1987 + + + 1 5.3 COMPARE HOST DATA Command + + 2 Command Category: + + 3 Sequential + + + 4 5.3.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + + + 21 Allowable Modifiers: + + 22 Clear Cached Data Lost + 23 Clear Serious Exception + 24 Reverse (see section 3.3.1.1) + 25 Suppress Caching + 26 Suppress Error Correction + 27 Suppress Error Recovery + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-10 + COMPARE HOST DATA Command 8 November 1987 + + + 1 5.3.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count (host transfer) | + 11 +-------------------------------+ + 12 | | + 13 +---- ----+ + 14 | undefined | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + 20 | byte count (tape record) | + 21 +-------------------------------+ + + + 22 Status Codes: + + 23 Success + 24 (subcode "Normal") + + 25 BOT Encountered + 26 Command Aborted + 27 Compare Error + 28 Controller Error + 29 Data Error + 30 Drive Error + 31 Formatter Error + 32 Host Buffer Access Error + + 33 Invalid Command + 34 (subcode "Invalid Byte Count") + 35 (subcode "Illegal Modifier") (see section 3.3.1.1) + + 36 Position Lost + 37 Record Data Truncated + 38 Serious Exception + 39 Tape Mark Encountered + 40 Unit-Available + 41 Unit-Offline + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-11 + COMPARE HOST DATA Command 8 November 1987 + + + 1 Flags: + + 2 Cached Data Lost + 3 EOT Encountered + 4 Error Log Generated + 5 Position Lost + 6 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-12 + COMPARE HOST DATA Command 8 November 1987 + + + 1 5.3.3 Description + + 2 Beginning at the current position, data is read from a record on + 3 the magnetic tape and compared to the data in the specified host + 4 buffer. + + 5 Refer to sections 3.3, 3.4, and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-13 + ERASE Command 8 November 1987 + + + 1 5.4 ERASE Command + + 2 Command Category: + + 3 Sequential (optionally Immediate Completion) + + + 4 5.4.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 Clear Cached Data Lost + 15 Clear Serious Exception + + 16 Immediate Completion + + 17 If this modifier is set, this command will be + 18 executed in an asynchronous manner. Refer to + 19 section 3.2 for complete details. + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-14 + ERASE Command 8 November 1987 + + + 1 5.4.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success + 12 (subcode "Normal") + + 13 Command Aborted + 14 Controller Error + 15 Drive Error + 16 Formatter Error + 17 Serious Exception + 18 Unit-Available + 19 Unit-Offline + + 20 Write Protected + 21 (subcode "Unit is Hardware Write Protected") + 22 (subcode "Unit is Software Write Protected") + 23 (subcode "Unit is Data Safety Write Protected") + + + + 24 Flags: + + 25 Cached Data Lost + 26 EOT Encountered + 27 Error Log Generated + 28 Position Lost + 29 Serious Exception + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-15 + ERASE Command 8 November 1987 + + + 1 5.4.3 Description + + 2 Tape objects are erased starting at the current tape position + 3 through PEOT (see chapter 2). The tape is then positioned to + 4 BOT. + + 5 Refer to sections 3.3 and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-16 + ERASE GAP Command 8 November 1987 + + + 1 5.5 ERASE GAP Command + + 2 Command Category: + + 3 Sequential (optionally Immediate Completion) + + + 4 5.5.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 Clear Cached Data Lost + 15 Clear Serious Exception + + 16 Immediate Completion + + 17 If this modifier is set, this command may be + 18 executed as a "write-back" caching enabled "write" + 19 type command. Refer to section 3.6.1 for complete + 20 details. + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-17 + ERASE GAP Command 8 November 1987 + + + 1 5.5.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + + + 10 Status Codes: + + 11 Success + 12 (subcode "Normal") + 13 (subcode "EOT Encountered") + + 14 Command Aborted + 15 Controller Error + 16 Drive Error + 17 Formatter Error + 18 Position Lost + 19 Serious Exception + 20 Unit-Available + 21 Unit-Offline + + 22 Write Protected + 23 (subcode "Unit is Hardware Write Protected") + 24 (subcode "Unit is Software Write Protected") + 25 (subcode "Unit is Data Safety Write Protected") + + + + 26 Flags: + + 27 Cached Data Lost + 28 EOT Encountered + 29 Error Log Generated + 30 Position Lost + 31 Serious Exception + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-18 + ERASE GAP Command 8 November 1987 + + + 1 5.5.3 Description + + 2 Beginning at the current tape position, a format dependent record + 3 gap is recorded on the magnetic tape loaded on the specified tape + 4 unit. This command is useful for bypassing tape defects when + 5 write error recovery is host controlled. + + 6 Refer to sections 3.3 and 3.5 for additional detail. + + 7 WARNING + + 8 The use of this command may cause undesirable + 9 interaction with formatter directed error + 10 recovery sequences resulting in non-standard + 11 record gaps. Affected tapes may not be readable + 12 on all systems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-19 + FLUSH Command 8 November 1987 + + + 1 5.6 FLUSH Command + + 2 Command Category: + + 3 Sequential + + + 4 5.6.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 Clear Cached Data Lost + 15 Clear Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-20 + FLUSH Command 8 November 1987 + + + 1 5.6.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | | + 11 +---- ----+ + 12 | | + 13 +---- undefined ----+ + 14 | | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success + 22 (subcode "Normal") + 23 (subcode "EOT Encountered") + + 24 Command Aborted + 25 Controller Error + 26 Data Error + 27 Formatter Error + 28 Position Lost + 29 Serious Exception + 30 Unit-Available + 31 Unit-Offline + + 32 Write Protected + 33 (subcode "Unit is Hardware Write Protected") + 34 (subcode "Unit is Software Write Protected") + 35 (subcode "Unit is Data Safety Write Protected") + + + + 36 Flags: + + 37 Cached Data Lost + 38 EOT Encountered + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-21 + FLUSH Command 8 November 1987 + + + 1 Error Log Generated + 2 Position Lost + 3 Serious Exception + + + 4 Position (Object Count): + + 5 This field, returned in the FLUSH command end message, + 6 reflects the current position of the tape in terms of + 7 object counts forward of BOT. Because of the potential + 8 for command pipelining within the controller and/or the + 9 tape formatter, the most currently reported "object + 10 count" may lag behind the actual physical drive + 11 position. Nevertheless, this information is sufficient + 12 for host recovery from power failure or position lost + 13 situations when write-back caching is enabled. + + 14 When a "position lost" condition is encountered or the + 15 tape unit is in the Position Lost state (refer to + 16 3.5.3), the controller will return the last known (good) + 17 "object count". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-22 + FLUSH Command 8 November 1987 + + + 1 5.6.3 Description + + 2 | The FLUSH command is used to ensure that all previously issued + 3 | cached "write" type commands have fully completed. Hosts would + 4 normally use this command to establish or maintain + 5 synchronization with "write" type commands being issued to the + 6 specified tape unit. + + 7 | The end message to FLUSH command is not issued until all + 8 | previously issued sequential commands have fully completed. This + 9 | means that the data for all previous "write" type commands has + 10 | been successfully written to media, or a Cached Data Lost + 11 | condition has caused the write-back cache to be cleared. The + 12 order in which the write-back cached data is transferred to the + 13 specified tape unit is the exactly the same as the order in which + 14 | the write-back cached "write" type commands occurred. TMSCP + 15 | controllers should continue to fetch and buffer host data for + 16 | subsequent "write" type commands, provided that such action is + 17 | required in order to ensure high performance (i.e., required to + 18 | keep the unit streaming). The TMSCP controller must be prepared + 19 | to take the appropriate action with such pre-fetched data in the + 20 | event of a Cached Data Lost condition or similar unexpected + 21 | event. The TMSCP controller must also preserve sequentiality of + 22 | such subsequent "write" type commands with the FLUSH command as + 23 | well as all other sequential commands. + + 24 Refer to sections 3.3, 3.4, 3.5, and 3.6 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-23 + GET UNIT STATUS Command 8 November 1987 + + + 1 5.7 GET UNIT STATUS Command + + 2 Command Category: + + 3 Immediate + + + 4 5.7.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 Next Unit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-24 + GET UNIT STATUS Command 8 November 1987 + + + 1 5.7.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multi-unit code| + 11 +-------------------------------+ + 12 | reserved | + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +---------------+---------------+ + 20 | speed | format | + 21 +-------+-------+---------------+ + 22 | rsvd |freecap| format menu | + 23 +-------+-----------------------+ + 24 | uhvrsn| usvrsn| fhvrsn| fsvrsn| + 25 +-------+-------+-------+-------+ + + + 26 Status Codes: + + 27 Success + + 28 (subcode "Normal") = Unit is "UNIT ON-LINE" + + 29 (subcode "Duplicate Unit Number") + + 30 Implies that the tape unit is "Unit-Online", but + 31 that its unit number is identical to that of + 32 some other unit known to the controller. The + 33 tape unit will become "Unit-Offline", due to the + 34 duplicate Unit Number, as soon as it ceases to + 35 be "Unit-Online". + + + 36 (subcode "Read-only Volume Format") + + 37 The unit only implements read access for the + 38 format of the volume mounted in the unit. For + 39 example, a single-density volume is mounted in a + 40 double-density drive that can read but not write + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-25 + GET UNIT STATUS Command 8 November 1987 + + + 1 it. Note that the unit will be Data Safety + 2 Write Protected whenever this subcode is + 3 returned. + + + 4 Unit-Available + 5 Unit-Offline + + + 6 Flags: + + 7 Cached Data Lost + 8 Exclusive Access + 9 EOT Encountered + 10 Position Lost + 11 Serious Exception + + + 12 Multi-Unit code: + + 13 The low byte of this field identifies the access path + 14 between the controller and the tape unit. The high byte + 15 identifies the particular tape unit on the access path. + + 16 This field must be valid when the returned Unit + 17 Identifier is non-zero. + + 18 Unit Flags: + + 19 Caching Support + + 20 A non-host settable characteristic, set only if the + 21 tape unit supports tape write-back caching. + + 22 This flag must be valid when the returned Unit + 23 Identifier is non-zero. + + + 24 Compare Reads + + 25 A host settable characteristic, enabled either with + 26 ONLINE or SET UNIT CHARACTERISTICS commands. If + 27 set, all READ commands will be verified with a + 28 compare operation (equivalent to specifying the + 29 compare modifier on each command). + + 30 This flag must be valid when the tape unit is + 31 "Unit-Online". + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-26 + GET UNIT STATUS Command 8 November 1987 + + + 1 Compare Writes + + 2 A host settable characteristic, enabled either with + 3 ONLINE or SET UNIT CHARACTERISTICS Commands. If + 4 set, all WRITE operations will be compare verified. + + 5 This flag must be valid when the tape unit is + 6 "Unit-Online". + + + 7 Data Safety Write Protect + + 8 A non-host settable characteristic, set whenever + 9 some condition in the unit or volume prevents + 10 reliable modification of data on the volume. + 11 Possible causes include: + + 12 o An invalid volume format. + + 13 o The unit is only capable of reading the volume's + 14 format. I.e., a single-density volume in a + 15 double-density drive. + + + 16 Note that there can be multiple causes for a unit + 17 being Data Safety Write Protected. Furthermore, + 18 some causes represent errors while others represent + 19 normal occurrences. + + 20 Each individual cause can only be established when a + 21 unit is brought "Unit-Online". Causes can be + 22 eliminated - possibly allowing the unit to cease + 23 being Data Safety Write Protected - while the unit + 24 remains "Unit-Online". However, the server can only + 25 establish a new cause for the unit to be Data Safety + 26 Write Protected by forcing the unit to be + 27 "Unit-Available" to all class drivers. Thus class + 28 drivers are guaranteed that a unit will not + 29 spontaneously become Data Safety Write Protected + 30 while the unit is "Unit-Online". + + 31 This flag must be valid when the tape unit is + 32 "Unit-Online". + + + 33 Enhanced Write Error Recovery + + 34 A non-host settable characteristic, set only if the + 35 tape unit supports the "Enable Re-write Error + 36 Recovery" command modifier on WRITE commands. + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-27 + GET UNIT STATUS Command 8 November 1987 + + + 1 This flag must be valid when the returned Unit + 2 Identifier is non-zero. + + + 3 Hardware Write Protect + + 4 A non-host settable characteristic, set if the tape + 5 unit's write protect mechanism is activated, causing + 6 the tape unit to be hardware write protected. + + 7 This flag must be valid when the tape unit is either + 8 "Unit-Available" or "Unit-Online". + + + 9 Software Write Protect + + 10 A host settable characteristic, enabled or disabled + 11 either with the ONLINE or SET UNIT CHARACTERISTICS + 12 commands. If set, the tape unit will act as though + 13 it were hardware write protected. If clear, the + 14 tape unit is virtually write enabled. This flag + 15 cannot override hardware write protection. + + 16 This flag must be valid when the tape unit is + 17 "Unit-Online". + + + 18 Suppress Caching + + 19 A host settable characteristic, enabled or disabled, + 20 either with an ONLINE or SET UNIT CHARACTERISTICS + 21 command. If set, caching using the TMSCP + 22 controller's volatile cache is disabled for this + 23 unit. If clear, read-ahead caching using the TMSCP + 24 controller's volatile cache is enabled for this + 25 unit. Equivalent to specifying the "Suppress + 26 Caching" modifier on all "read" type commands for + 27 which it is legal. + + 28 This flag must be valid when the tape unit is + 29 "Unit-Online". + + + 30 Variable Speed Mode Suppression + + 31 A host settable characteristic, enabled or disabled + 32 either with an ONLINE or SET UNIT CHARACTERISTICS + 33 command. If set, a variable speed tape unit's speed + 34 change algorithm is disabled, the tape unit will + 35 operate at a fixed speed. If clear, a variable + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-28 + GET UNIT STATUS Command 8 November 1987 + + + 1 speed tape unit's speed change algorithm is enabled, + 2 the tape unit's operating speed may vary. This flag + 3 is always clear for a fixed speed tape unit. + + 4 This flag must be valid when the tape unit is + 5 "Unit-Online". + + + 6 Variable Speed Unit + + 7 A non-host settable characteristic, set only if the + 8 tape unit has variable speed capability. A + 9 controller or formatter directed automatic speed + 10 change algorithm (based on host data throughput) is + 11 employed for tape units with this capability. + + 12 This flag must be valid when the returned Unit + 13 Identifier is non-zero. + + + 14 Write Back + + 15 A host settable characteristic, enabled or disabled + 16 either with an ONLINE or SET UNIT CHARACTERISTICS + 17 command. If set, write-back caching using the + 18 controller's volatile cache is enabled for this + 19 unit. Equivalent to specifying the "Immediate + 20 Completion" modifier on all "write" type commands + 21 for which it is legal. + + 22 This flag must be valid when the tape unit is + 23 "Unit-Online". + + + 24 Unit Identifier: + + 25 This field identifies a unique device number for the + 26 tape unit as defined in the MSCP specification. This + 27 field must be valid and non-zero when the unit is in any + 28 of the following states: + + 29 "Unit-Available", all sub-states. + 30 "Unit-Online", all sub-states. + 31 "Unit-Offline", the following sub-states: + 32 "Duplicate unit number" + 33 "Exclusive use" + 34 "No media mounted or disabled via switch + 35 setting" + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-29 + GET UNIT STATUS Command 8 November 1987 + + + 1 Media Type Identifier: + + 2 This field identifies the type of media used by this + 3 tape unit, for use by Host Generic device allocation + 4 mechanisms. + + 5 This field must be valid when the returned Unit + 6 Identifier is non-zero. + + 7 Format: + + 8 The tape format currently employed on the tape unit. + 9 The value in the low byte of this field is a binary bit + 10 representing the nominal or formatted density of tape. + 11 The high byte is a code value associated with the media + 12 type. The high byte always has the same value for a + 13 given unit. (Refer to Appendix C, Tables C-1 and C-2.) + + 14 This field must be valid when the tape unit is + 15 "Unit-Online". + + 16 Speed: + + 17 The value in this field is expressed as the + 18 instantaneous data rate in kilo-bytes per second. + + 19 For 9-track tape units it is computed, without rounding, + 20 as follows: + + 21 Speed = ( ips * bpi) / 1000 + + 22 where: + + 23 ips = Tape Transport speed in Inches per Second + + 24 bpi = nominal recording format frame density in + 25 linear bits per inch + + + 26 For a fixed speed tape unit, the value returned will + 27 indicate the speed at which the tape unit operates. + + 28 The value returned for a variable speed tape unit is + 29 dependent upon the state of the "variable speed mode + 30 suppression" unit flag. If that flag is set, the value + 31 returned will indicate the tape unit's fixed speed set + 32 via an ONLINE or SET UNIT CHARACTERISTICS command. If + 33 clear, the value returned will indicate the highest + 34 speed for the current density, unless the tape unit is + 35 actively performing I/O. Then the value is the current + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-30 + GET UNIT STATUS Command 8 November 1987 + + + 1 operating speed, set by the speed change algorithm. + + 2 This field must be valid when the tape unit is + 3 "Unit-Online". + + 4 Format Menu: + + 5 The high byte of this field is a code value associated + 6 with the media type. This value is constant for a given + 7 device. The low byte of this field contains a menu of + 8 available tape unit operating formats expressed as + 9 binary bit values. Each bit in the low byte represents + 10 unique nominal or formatted density in bits per linear + 11 inch of tape. (Refer to Appendix C, Tables C-1 and + 12 C-2.) + + 13 This field must be valid when the returned Unit + 14 Identifier is non-zero. + + 15 Freecap: + + 16 This field indicates the amount of media currently + 17 available for writing as a function of the total media + 18 size. + + 19 The following values of this field have special meaning. + 20 If the value is reported, it must be for that meaning. + 21 If one of the meanings is to be reported, it must be + 22 with the corresponding value. Devices are allowed to + 23 always report zero in this field. + + 24 0 The amount of media available is unknown. This + 25 is for backwards compatibility with existing + 26 TMSCP devices. + + 27 1 There is no space available before PEOT. + + 28 251 The entire media is available (i.e., new tape). + + 29 252-255 Reserved. + + 30 Values from 2 to 251 have an approximately linear + 31 relationship to the fraction of free capacity available. + 32 A larger value indicates a larger free capacity. + + 33 NOTE + + 34 Due to bad spots, extended gaps due to + 35 streaming, or other format and device dependent + 36 anomalies, the value of this field is almost + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-31 + GET UNIT STATUS Command 8 November 1987 + + + 1 certainly optimistic. Because of these + 2 anomalies, the controller may, at its option, + 3 choose not to use the full 8 bits of resolution + 4 in reporting free capacity. The controller may + 5 also, at its option, attempt to account for + 6 these anomalies. + + + 7 Devices reporting values other than zero in this field + 8 must document in their device specification the + 9 algorithm that is used to generate the value. + + 10 It is strongly recommended that all new devices support + 11 this feature. + + 12 This field must be valid when the tape unit is + 13 "Unit-Online". + + 14 Fsvrsn: + + 15 The formatter's software, firmware, or microcode + 16 revision number. Always zero if the product's + 17 development and maintainability groups determine that + 18 there is no benefit from supporting machine readable + 19 revision numbers. + + 20 This field must be valid when the returned Unit + 21 Identifier is non-zero. + + 22 Fhvrsn: + + 23 The formatter's hardware revision number. Always zero + 24 if the product's development and maintainability groups + 25 determine that there is no benefit from supporting + 26 machine readable revision numbers. + + 27 This field must be valid when the returned Unit + 28 Identifier is non-zero. + + 29 Usvrsn: + + 30 The unit's software, firmware, or microcode revision + 31 number. Always zero if the product's development and + 32 maintainability groups determine that there is no + 33 benefit from supporting machine readable revision + 34 numbers. + + 35 This field must be valid when the returned Unit + 36 Identifier is non-zero. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-32 + GET UNIT STATUS Command 8 November 1987 + + + 1 Uhvrsn: + + 2 The unit's hardware revision number. Always zero if the + 3 product's development and maintainability groups + 4 determine that there is no benefit from supporting + 5 machine readable revision numbers. + + 6 This field must be valid when the returned Unit + 7 Identifier is non-zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-33 + GET UNIT STATUS Command 8 November 1987 + + + 1 5.7.3 Description + + 2 The GET UNIT STATUS command returns the current connection state + 3 of a tape unit as well as unit characteristics. Note that the + 4 validity of the unit characteristics is dependent on the current + 5 connection state. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-34 + ONLINE Command 8 November 1987 + + + 1 5.8 ONLINE Command + + 2 Command Category: + + 3 Sequential + + + 4 5.8.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +---------------+---------------+ + 23 | speed | format | + 24 +---------------+---------------+ + + + 25 Allowable Modifiers: + + 26 Clear Cached Data Lost + 27 Clear Serious Exception + + 28 Enable Set Write Protect + + 29 Causes the "Write Protect" unit flag to be host + 30 settable. This modifier causes the state of the + 31 "Software Write Protect" unit flag to be copied to + 32 the controller's software write protect flag for + 33 this tape unit. + + 34 Exclusive Access + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-35 + ONLINE Command 8 November 1987 + + + 1 Unit Flags: + + 2 If the tape unit is already "Unit-Online" to any class + 3 driver, then the class driver must specify the same + 4 values for controller supported host settable unit flags + 5 as are currently in effect on the tape unit. The + 6 controller may or may not, at its option, check that the + 7 flag values are the same. If it does check, then it + 8 must return an Invalid Command (subcode "Invalid Unit + 9 Flags") status code if they are different. If the + 10 controller does not check that they are the same, then + 11 it must ignore the unit flags specified by the class + 12 driver and preserve the flag settings currently in + 13 effect on the tape unit. Note that this checking + 14 becomes mandatory, rather than optional, if the + 15 controller provides Multi-Host Support. + + 16 Refer to section 5.11.1 for a description of individual + 17 flag usage. + + + 18 Device Dependent Parameters: + 19 Format: + 20 Speed: + + 21 Refer to section 5.11.1 for a description of the usage + 22 of these fields. + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-36 + ONLINE Command 8 November 1987 + + + 1 5.8.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multi-unit code| + 11 +---------------+---------------+ + 12 | reserved | + 13 +-------------------------------+ + 14 | | + 15 +--- unit identifier ---+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +---------------+---------------+ + 20 | speed | format | + 21 +---------------+---------------+ + 22 | maximum write byte count | + 23 +---------------+---------------+ + 24 | reserved | noise record | + 25 +---------------+---------------+ + + + 26 Status Codes: + + 27 Success + + 28 (subcode "Normal") - tape unit brought online. + + 29 (subcode "Already Online") + + 30 tape unit is already online, state and + 31 characteristics are not altered. When the tape + 32 unit is already "Unit-Online", the controller + 33 merely returns the Unit Characteristics in the + 34 End message with this status flag bit set, + 35 without performing any other actions. + + + 36 (subcode "Read-only Volume Format") + + 37 The unit only implements read access for the + 38 format of the volume mounted in the unit. For + 39 example, a single-density volume is mounted in a + 40 double-density drive that can read but not write + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-37 + ONLINE Command 8 November 1987 + + + 1 it. Note that the unit will be Data Safety + 2 Write Protected whenever this subcode is + 3 returned. + + + 4 Command Aborted + + 5 The tape unit's state is unchanged. The host must + 6 assume that the return characteristics are invalid, + 7 since the tape unit may be "Unit-Offline". + + 8 Controller Error + 9 Drive Error + 10 Exclusive Access + 11 Formatter Error + + 12 Invalid Command + + 13 (subcode "Invalid Unit Flags") + + 14 The tape unit is already "Unit-Online" and those + 15 host settable characteristics that are supported + 16 by the controller are different from those + 17 currently in effect on the tape unit. The tape + 18 unit remains "Unit-Online" and the host settable + 19 Unit Flags are NOT changed. Note that the + 20 controller returns an Invalid Command End + 21 message if a reserved Unit Flag is set. + + + 22 (subcode "Invalid Format") + + 23 More than one Format was specified, or the + 24 Format specified is not supported by the tape + 25 unit, or the tape unit is already "Unit-Online" + 26 and the value supplied in the Format field was + 27 neither a zero nor the Format specified by the + 28 host that initially brought the tape unit into + 29 the "Unit-Online" state. The original format + 30 selected remains unchanged. + + + 31 Media Format Error + 32 Unit-Offline + + 33 Flags: + + 34 Cached Data Lost + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-38 + ONLINE Command 8 November 1987 + + + 1 EOT Encountered + 2 Error Log Generated + 3 Position Lost + 4 Serious Exception + + 5 Multi-Unit code: + 6 Unit Flags: + 7 Unit Identifier: + 8 Media Type Identifier: + 9 Format: + 10 Speed: + + 11 Refer to section 5.7.2 for descriptions of these fields. + + 12 Recommended Maximum WRITE Byte Count: + + 13 The largest size record likely to have acceptable data + 14 reliability statistics, considering the selected + 15 recording mode. This limit is not enforced by the + 16 controller although the controller does enforce a + 17 maximum controller dependent limit. + + 18 This field must be valid when the tape unit is + 19 "Unit-Online". + + 20 Noise Record: + + 21 A non-host-settable characteristic advising the host of + 22 the record length at or below which legitimate data + 23 records are subject to confusion with noise records. If + 24 zero, the tape unit's recording technology is immune to + 25 noise records. + + 26 This field must be valid when the tape unit is + 27 "Unit-Online". + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-39 + ONLINE Command 8 November 1987 + + + 1 5.8.3 Description + + 2 The ONLINE Command is used to bring a tape unit into the + 3 "Unit-Online" state, set host settable unit characteristics, and + 4 obtain those unit characteristics that are essential for proper + 5 class driver operation. + + 6 Host settable characteristics are set exactly as if a SET UNIT + 7 CHARACTERISTICS command was issued (refer to section 5.11). Host + 8 settable characteristics are not set until tape unit specific + 9 validity checks have succeeded, if applicable. The host settable + 10 characteristics are not altered if the tape unit is already + 11 "Unit-Online". + + 12 If the tape unit is not already "Unit-Online" to another host, + 13 then a successful ONLINE command will position the tape to BOT, + 14 if it is not already there. If the tape unit is already + 15 "Unit-Online" to another host, then a successful ONLINE command + 16 will not alter the position of the tape. + + 17 The actions of this command with the Exclusive Access modifier + 18 are described in the MSCP specification. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-40 + READ Command 8 November 1987 + + + 1 5.9 READ Command + + 2 Command Category: + + 3 Sequential + + + 4 5.9.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + + + 21 Allowable Modifiers: + + 22 Clear Cached Data Lost + 23 Clear Serious Exception + 24 Compare + 25 Reverse (see section 3.3.1.1) + 26 Suppress Caching + 27 Suppress Error Correction + 28 Suppress Error Recovery + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-41 + READ Command 8 November 1987 + + + 1 5.9.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count (host transfer) | + 11 +-------------------------------+ + 12 | | + 13 +---- ----+ + 14 | undefined | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + 20 | byte count (tape record) | + 21 +-------------------------------+ + + + 22 Status Codes: + + 23 Success + 24 (subcode "Normal") + + 25 BOT Encountered + 26 Command Aborted + 27 Compare Error + 28 Controller Error + 29 Data Error + 30 Drive Error + 31 Formatter Error + 32 Host Buffer Access Error + + 33 Invalid Command + 34 (subcode "Invalid Byte Count") + 35 (subcode "Illegal Modifier") (see section 3.3.1.1) + + 36 Position Lost + 37 Record Data Truncated + 38 Serious Exception + 39 Tape Mark Encountered + 40 Unit-Available + 41 Unit-Offline + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-42 + READ Command 8 November 1987 + + + 1 Flags: + + 2 Cached Data Lost + 3 EOT Encountered + 4 Error Log Generated + 5 Position Lost + 6 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-43 + READ Command 8 November 1987 + + + 1 5.9.3 Description + + 2 Beginning at the current position, data is read from a record on + 3 the magnetic tape loaded on the specified unit and transferred to + 4 the specified host buffer. + + 5 Refer to sections 3.3, 3.4, and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-44 + REPOSITION Command 8 November 1987 + + + 1 5.10 REPOSITION Command + + 2 Command Category: + + 3 Sequential (REWIND to BOT variation is optionally + 4 Immediate Completion) + + + 5 5.10.1 Command Message Format + + 6 31 0 + 7 +-------------------------------+ + 8 | command reference number | + 9 +---------------+---------------+ + 10 | reserved | unit number | + 11 +---------------+-------+-------+ + 12 | modifiers | rsvd | opcode| + 13 +---------------+-------+-------+ + 14 | record count or object count | + 15 +-------------------------------+ + 16 | tape mark count | + 17 +-------------------------------+ + + + 18 Allowable Modifiers: + + 19 Clear Cached Data Lost + 20 Clear Serious Exception + + 21 Detect LEOT + + 22 If this modifier is set, and the "Reverse" modifier + 23 is clear, and either or both a Skip Tape Mark or a + 24 Skip Record positioning function is also enabled, + 25 the automatic detection of LEOT (i.e., two adjacent + 26 tape marks with no intervening records), as + 27 described in section 5.10.3, is enabled. + + 28 Immediate Completion + + 29 If this modifier is set, and only the Rewind to BOT + 30 positioning function is enabled, the Rewind to BOT + 31 will be executed in an asynchronous manner. Refer + 32 to section 3.2.1.1 for additional detail. + + 33 Object Count + + 34 The setting of this modifier and the value specified + 35 in the "record count or object count" and the "tape + 36 mark count" command message fields selects the + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-45 + REPOSITION Command 8 November 1987 + + + 1 skipping operation to be performed: + + 2 o If set, and the "record count or object count" + 3 field is non-zero, the Skip Tape Object (both + 4 records and tape marks) positioning function is + 5 enabled. + + 6 o If clear, and the "record count or object count" + 7 field is non-zero, the Skip Record positioning + 8 function is enabled. + + 9 o If clear, and the "tape mark count" field is + 10 non-zero, the Skip Tape Mark positioning + 11 function is enabled. + + + 12 All of the positioning functions mentioned above are + 13 described in section 5.10.3. + + 14 Reverse + + 15 Rewind + + 16 If this modifier is set, the rewind to BOT + 17 positioning function, described in section 5.10.3, + 18 is enabled. + + 19 Suppress Caching + 20 Suppress Error Correction + 21 Suppress Error Recovery + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-46 + REPOSITION Command 8 November 1987 + + + 1 5.10.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | records skipped/undefined | + 11 +-------------------------------+ + 12 | tape marks skipped/undefined | + 13 +-------------------------------+ + 14 | | + 15 +---- undefined ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success + 22 (subcode "Normal") + + 23 BOT Encountered + 24 Command Aborted + 25 Controller Error + + 26 Data Error + 27 (subcode "Long Gap Encountered") + + 28 Drive Error + 29 Formatter Error + 30 LEOT Encountered + 31 Position Lost + 32 Serious Exception + 33 Tape Mark Encountered + 34 Unit-Available + 35 Unit-Offline + + 36 Flags: + + 37 Cached Data Lost + 38 EOT Encountered + 39 Error Log Generated + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-47 + REPOSITION Command 8 November 1987 + + + 1 Position Lost + 2 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-48 + REPOSITION Command 8 November 1987 + + + 1 5.10.3 Description + + 2 This command is used to position the tape from one location to + 3 another. + + 4 For additional information related to the operation of the + 5 REPOSITION command refer to the following: + + 6 o Chapter 2 Terminology, especially the definitions of: + + 7 > Record + 8 > Tape Mark + 9 > Object + 10 > Record Gap + 11 > Beginning-of-Tape (BOT) + 12 > End-of-Tape (EOT) + 13 > Logical End-of-Tape (LEOT) + + + 14 o Sections 3.2 Command Categories And Execution Order, + 15 3.2.1 Lengthy Command Considerations, 3.2.1.1 + 16 Synchronous Vs Asynchronous, and 3.2.1.2 Abort. + + 17 o Sections 3.3.1 (Tape Motion Command Operation) "read" + 18 Type, 3.3.1.1 Direction, 3.3.1.2 BOT Handling, 3.3.1.3 + 19 EOT Handling, and 3.3.1.4 Tape Mark Handling. + + 20 o Section 3.4.2 Tape Format Employed. + + 21 o Section 3.5 General Error Processing and all associated + 22 sub-sections. + + 23 o Sections 4.5.1 (End Message Format) Flags, 4.5.2 Status, + 24 4.5.3 Status Codes; especially those listed in Section + 25 5.10.2, and 4.5.6 Position (Object Count). + + + 26 The manner in which the positioning operation is to be performed + 27 is dictated by the state of the following command modifiers: + + 28 o "Object Count" + 29 o "Rewind" + 30 o "Reverse" + + 31 and the values supplied in the "tape mark count" and "record + 32 count or object count" command message fields. + + 33 In addition, the following two special case modifiers affect the + 34 manner in which the positioning operation will complete: + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-49 + REPOSITION Command 8 November 1987 + + + 1 o "Immediate Completion" + 2 o "Detect LEOT" + + + 3 Four positioning functions are available for use: + + 4 o Rewind to BOT + 5 o Skip Tape Mark + 6 o Skip Record + 7 o Skip Tape Object (i.e., both records and tape marks). + + + 8 Either of the following mutually exclusive sets of combined + 9 positioning functions can be specified in a single command + 10 message: + + 11 o Rewind to BOT + 12 o Skip Tape Mark + 13 o Skip Record + + 14 or + + 15 o Rewind to BOT + 16 o Skip Tape Object + + + 17 When combined, the controller must execute the set of positioning + 18 functions synchronously as a single atomic command. Furthermore, + 19 the functions within a set must be executed in the sequential + 20 order shown above, with the following conditional exceptions: + + 21 1. If the function which is next in line for execution is + 22 not enabled the controller must continue execution with + 23 the next function which is enabled (if any). + + 24 2. If a function is terminated due to the detection of an + 25 error or a special condition (e.g., tape mark + 26 unexpectedly encountered, LEOT condition satisfied, BOT + 27 unexpectedly encountered, etc.) the controller must not + 28 attempt to execute any remaining enabled functions. + + 29 3. If none of the functions are enabled the controller, as + 30 implied, must take no positioning action. + + 31 The last case listed is actually considered an + 32 additional function, a sequential no-operation. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-50 + REPOSITION Command 8 November 1987 + + + 1 A model of operation for each of the available functions is + 2 described below. Controller dependent algorithms formulated with + 3 the intent of optimizing the positioning functions are expressly + 4 permitted, provided the models of operation are not perturbed in + 5 any manner. + + 6 NOTE + + 7 Occurrence of an error which prevents further + 8 continuation of tape unit operation while the + 9 controller is performing a positioning function + 10 optimization may result in a tape position + 11 outside the range of objects spanned by the + 12 REPOSITION function. In this case the controller + 13 must first report the error in the normal manner + 14 and then place the tape unit in the "Position + 15 Lost" state, if appropriate. + + + 16 Table D-1 shows all the possible variations of the REPOSITION + 17 command which can be specified. Table D-1 also depicts the + 18 conditions under which the modifiers and count field values are + 19 ignored. Those conditions are not addressed in the model of + 20 operation descriptions. + + 21 o Rewind to BOT + + 22 The Rewind to BOT positioning function is enabled + 23 when the "Rewind" modifier is set. + + 24 When this function is enabled and the tape is not + 25 already resting at BOT, the controller starts tape + 26 motion in the reverse direction and continues the + 27 tape motion until either BOT is reached or an error + 28 occurs. + + 29 If the "Immediate Completion" modifier is set and no + 30 other positioning function is enabled the rewind to + 31 BOT is completed in an asynchronous manner as + 32 described in Section 3.2.1.1. + + + 33 o Skip Tape Mark + + 34 The Skip Tape Mark positioning function is enabled + 35 when the "Object Count" modifier is clear and the + 36 "tape mark count" command message field is non-zero. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-51 + REPOSITION Command 8 November 1987 + + + 1 When this function is enabled the controller starts + 2 tape motion, in the direction indicated by the + 3 "Reverse" modifier, and begins searching for the + 4 occurrence of tape marks. + + 5 The controller continues the search until one of the + 6 following occurs: + + 7 1. An error is detected (including BOT + 8 Encountered). + + 9 2. A tape mark which satisfies the LEOT condition, + 10 if LEOT detection was enabled (see discussion + 11 below) is detected. + + 12 3. The number of tape marks specified in the "tape + 13 mark count" command message field have been + 14 found. + + + 15 During the tape mark search the controller will keep + 16 a count of the number of tape marks found (Note: + 17 records found are not counted during the tape mark + 18 search). + + 19 LEOT detection is enabled only if the "Reverse" + 20 modifier is clear. If LEOT detection is enabled the + 21 controller will determine that the tape mark just + 22 found satisfies the LEOT condition if either of the + 23 following is true: + + 24 1. The previous object found during the current + 25 search was also a tape mark. + + 26 2. Based on context (the controller) saved + 27 following execution of the last command which + 28 caused tape motion, the tape was left positioned + 29 forward (i.e., on the EOT side of BOT) of a tape + 30 mark. + + 31 In the latter case the saved context must + 32 specifically indicate that the last tape motion + 33 command was one of the following: + + 34 a. An ACCESS, COMPARE HOST DATA, READ, or + 35 REPOSITION (with Skip Record positioning + 36 function enabled) command performed in the + 37 forward direction, which terminated with a + 38 status of Tape Mark Encountered. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-52 + REPOSITION Command 8 November 1987 + + + 1 b. A REPOSITION (with Skip Tape Mark function + 2 enabled and the Skip Record function + 3 disabled) command performed in the forward + 4 direction which completed successfully when + 5 that tape mark was found. + + + + 6 The controller performs the following actions upon + 7 detecting LEOT: + + 8 1. Stops tape motion. + + 9 2. Resumes tape motion in the reverse direction and + 10 positions the tape to the record gap separating + 11 the two adjacent tape marks. + + 12 3. Stops tape motion once again. + + + 13 The controller must not add the tape mark which + 14 satisfies the LEOT condition to the number of tape + 15 marks found count. + + + 16 o Skip Record + + 17 The Skip Record positioning function is enabled when + 18 the "Object Count" modifier is clear and the "record + 19 count or object count" command message field is + 20 non-zero. + + 21 When this function is enabled the controller starts + 22 tape motion (or continues tape motion if the Skip + 23 Tape Mark function was just completed), in the + 24 direction indicated by the "Reverse" modifier, and + 25 begins searching for the occurrence of records. + + 26 The controller continues the search until one of the + 27 following occurs: + + 28 1. An error is detected (including BOT + 29 Encountered). + + 30 2. A tape mark is detected. + + 31 3. The number of records specified in the "record + 32 count or object count" command message field + 33 have been found. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-53 + REPOSITION Command 8 November 1987 + + + 1 During the record search the controller will keep a + 2 count of the number of records found. + + 3 The action the controller follows if the record + 4 search is terminated by detecting a tape mark + 5 depends on whether LEOT detection is enabled or + 6 disabled: + + 7 o If LEOT Detection is disabled (i.e., "Detect + 8 LEOT" modifier clear or "Reverse" modifier is + 9 set, regardless of the setting of the "Detect + 10 LEOT" modifier) the tape mark is considered as + 11 having been unexpectedly encountered. In this + 12 case the controller must add the unexpected tape + 13 mark to the number of tape marks counted during + 14 the immediately preceding Skip Tape Mark + 15 function, or, set the tape mark count to one if + 16 the Skip Tape Mark function was not enabled. + + 17 o If LEOT detection is enabled (i.e., the "Detect + 18 LEOT" modifier is set and the "Reverse" modifier + 19 is clear) the controller must determine whether + 20 or not the tape mark satisfies the LEOT + 21 condition as described in the Skip Tape Mark + 22 function above. If LEOT was satisfied the + 23 controller performs the LEOT detected actions, + 24 again, as described in the Skip Tape Mark + 25 function above. Otherwise, the tape mark is + 26 unexpected and the controller performs the + 27 unexpected tape mark actions described + 28 immediately above. + + + + 29 o Skip Tape Object (i.e., both records and tape marks) + + 30 The Skip Tape Object positioning function is enabled + 31 when the "Object Count" modifier is set and the + 32 "record count or object count" command message field + 33 is non-zero. + + 34 When this function is enabled the controller starts + 35 tape motion, in the direction indicated by the + 36 "Reverse" modifier, and begins searching for the + 37 occurrence of tape objects. + + 38 The controller continues the search until one of the + 39 following occurs: + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-54 + REPOSITION Command 8 November 1987 + + + 1 1. An error is detected (including BOT + 2 Encountered). + + 3 2. The number of tape objects specified in the + 4 "record count or object count" command message + 5 field have been found. + + + 6 During the tape object search the controller need + 7 not keep a count of the number of records and tape + 8 marks found. + + + 9 o Sequential No-operation + + 10 The Sequential No-operation is enabled when none of + 11 the positioning functions are enabled. + + 12 The controller must not initiate any tape motion. + + + + 13 After executing the enabled functions to the fullest extent + 14 possible (i.e., terminate execution due to the detection of an + 15 error or special condition, or complete execution successfully by + 16 satisfying the count value(s) etc.), the controller prepares a + 17 REPOSITION command end message in standard MSCP/TMSCP fashion, + 18 with exception of the following specific actions: + + 19 o Where a Rewind to BOT function with no other positioning + 20 function enabled and the "immediate completion" modifier + 21 clear was executed, the controller will set both the + 22 "tape marks skipped" and "records skipped" fields to + 23 zero. + + 24 o Where a Rewind to BOT function with no other positioning + 25 function enabled and the "immediate completion" modifier + 26 set was executed, the controller will set both the "tape + 27 marks skipped" and "records skipped" fields to zero and + 28 set the "status" field to Success (subcode "Normal"). + + 29 o Where a Skip Tape Mark positioning function was + 30 executed, the controller will set the "tape marks + 31 skipped" field equal to the number of tape marks found + 32 during execution of the Skip Tape Mark function or as a + 33 result of the subsequent Skip Record function + 34 unexpectedly encountering a tape mark. If the Skip Tape + 35 Mark function was not executed and a tape mark was not + 36 unexpectedly encountered in the subsequent Skip Record + 37 function the controller will set the "tape marks" field + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-55 + REPOSITION Command 8 November 1987 + + + 1 to zero. + + 2 o Where a Skip Record positioning function was executed + 3 the controller will set the "records skipped" field + 4 equal to the number of records found value accumulated + 5 during execution of the function. If the Skip Record + 6 function was not executed the controller will set the + 7 "records skipped" field to zero. + + 8 o If either a Skip Tape Mark or Skip Record positioning + 9 function terminated due to detecting LEOT (as described + 10 above) the controller will set the "status" field equal + 11 to LEOT Detected. + + 12 o Where a Skip Object positioning function was executed + 13 the controller may set the "records skipped" and "tape + 14 marks skipped" fields to any value it chooses. (Those + 15 fields are undefined in this case.) + + 16 o For a Sequential No-operation the controller will set + 17 the "status" field to Success (subcode "Normal") and + 18 both the "tape marks skipped" and "records skipped" + 19 fields to zero. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-56 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 5.11 SET UNIT CHARACTERISTICS Command + + 2 Command Category: + + 3 Sequential + + + 4 5.11.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | unit flags | reserved | + 14 +---------------+---------------+ + 15 | | + 16 +--- ---+ + 17 | reserved | + 18 +--- ---+ + 19 | | + 20 +-------------------------------+ + 21 | device dependent parameters | + 22 +---------------+---------------+ + 23 | speed | format | + 24 +---------------+---------------+ + + + 25 Allowable Modifiers: + + 26 Clear Cached Data Lost + 27 Clear Serious Exception + 28 Enable Set Write Protect + 29 Exclusive Access + + 30 Unit Flags: + + 31 Caching Support + + 32 A non-host settable characteristic, set only if the + 33 tape unit supports tape write-back caching. + + 34 This flag is invalid when the returned Unit + 35 Identifier is zero. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-57 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 Compare Reads + + 2 If set, all READ commands will be verified with a + 3 compare operation. Equivalent to specifying the + 4 compare modifier on each such command. + + + 5 Compare Writes + + 6 If set, then all WRITE commands will be verified + 7 with a compare operation. Equivalent to specifying + 8 the Compare modifier on each such command. + + + 9 Enhanced Write Error Recovery + + 10 A non-host settable characteristic, set only if the + 11 tape unit supports the "Enable Re-write Error + 12 Recovery" command modifier on WRITE commands. + + 13 This flag is invalid when the returned Unit + 14 Identifier is zero. + + + 15 Software Write Protect (SWP) + + 16 If the SWP unit flag is set and the "Enable Set + 17 Write Protect" command modifier is also set, the + 18 tape unit will act as though it were Hardware Write + 19 Protected. + + 20 If the SWP unit flag is clear and the "Enable Set + 21 Write Protect" command modifier is set, the tape + 22 unit is virtually write enabled. + + 23 This flag cannot override hardware write protection. + + + 24 Suppress Caching + + 25 If set, caching using the TMSCP controller's + 26 volatile cache is disabled for this unit. If clear, + 27 read-ahead caching using the TMSCP controller's + 28 volatile cache is enabled for this unit. Equivalent + 29 to specifying the "Suppress Caching" command + 30 modifier on all "read" type commands for which it is + 31 legal. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-58 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 Variable Speed Mode Suppression + + 2 If set, a variable speed tape unit's speed change + 3 algorithm is disabled. The tape unit speed is fixed + 4 at the speed specified in the "speed" field + 5 (described below). If clear, a variable speed tape + 6 unit's speed change algorithm is enabled, the tape + 7 unit's operating speed may vary. This flag is + 8 ignored for a fixed speed tape unit. + + + 9 Write Back + + 10 If set, write-back caching using the controller's + 11 volatile cache is enabled for this unit. If clear, + 12 write-back caching using the controller's volatile + 13 cache is disabled for this unit. Equivalent to + 14 specifying the "Immediate Completion" modifier on + 15 all "write" type commands for which it is legal. + + + + 16 Device Dependent Parameters: + + 17 Device and/or controller dependent device tuning + 18 parameters. The value zero in this field means that + 19 default or normal tuning parameters should be used. + 20 Non-zero values for this field should normally be + 21 established through system-dependent appropriate means. + 22 Examples of the use of this field include selecting + 23 alternative optimization algorithms or enabling and + 24 disabling automatic (online) diagnosis of the tape unit. + + + 25 Format: + + 26 Assuming that the tape is positioned at BOT, the value + 27 supplied in this field is the host suggested format to + 28 be employed for tape unit operations (Refer to section + 29 3.4.2 for related information). It can be a zero or a + 30 binary bit value in the low byte representing the + 31 density of the tape. If the value is zero, the highest + 32 density format supported by the tape unit will be + 33 employed. If the low byte is non-zero, then the high + 34 byte must have the value corresponding to the media used + 35 by the unit. See Appendix C, Tables C-1 and C-2 for + 36 details. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-59 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 If the value is non-zero, but the high byte has the + 2 wrong value, the command will be rejected with an + 3 Invalid Command (subcode "Invalid Format") status code. + + 4 If the tape is not positioned at BOT, a zero value will + 5 not cause the format to change from the currently + 6 selected density. Furthermore, if the value is non-zero + 7 the command will be rejected with an Invalid Command + 8 (subcode "Invalid Format") status code. Refer to + 9 sections 5.8.2 and 5.11.2 for additional Invalid Command + 10 (subcode "Invalid Format") information. + + + 11 Speed: + + 12 The speed field value is used to select the "fixed + 13 speed" at which a variable speed tape unit will operate + 14 when the "Variable Speed Mode Suppression" unit flag + 15 (described above) is set in the command packet. The + 16 speed field is ignored if that flag is clear or the tape + 17 unit is not capable of variable speed operation. + + 18 The value supplied in this field is the host's + 19 prediction of the maximum data transfer rate it is + 20 capable of sustaining during data transfers to or from + 21 the tape unit. It is expressed as the maximum data + 22 transfer rate, in kilo-bytes per second, that can be + 23 achieved using a particular tape speed and format. (For + 24 9-track tape units, the actual data transfer rate + 25 approaches this value as the record length becomes + 26 arbitrarily large.) + + 27 For 9-track tape units it is computed, without rounding, + 28 as follows: + + 29 Speed = ( ips * bpi ) / 1000 + + 30 where: + + 31 ips = nominal tape transport speed in Inches per + 32 Second + + 33 bpi = nominal recording format frame density in + 34 linear Bits Per Inch (for nine track, actually Bytes + 35 Per Inch) + + + 36 The controller will automatically select the tape unit + 37 speed, from those available on the tape unit, which best + 38 accommodates the host's data transfer rate prediction. + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-60 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 The following rules govern speed selection: + + 2 1. The tape unit speed will be set equal to the speed + 3 which is closest to providing a maximum data + 4 transfer rate at the currently employed format, + 5 which is less than or equal to the value supplied. + + 6 2. The lowest possible tape unit speed will be selected + 7 if the maximum data transfer rate at the currently + 8 employed format of all available tape unit speeds is + 9 greater than the value supplied. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-61 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 5.11.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | unit flags |multi-unit code| + 11 +---------------+---------------+ + 12 | reserved | + 13 +-------------------------------+ + 14 | | + 15 +---- unit identifier ----+ + 16 | | + 17 +-------------------------------+ + 18 | media type identifier | + 19 +---------------+---------------+ + 20 | speed | format | + 21 +---------------+---------------+ + 22 | maximum write byte count | + 23 +---------------+---------------+ + 24 | reserved | noise record | + 25 +---------------+---------------+ + + + 26 Status Codes: + + 27 Success + + 28 (subcode "Normal") + + 29 The tape unit is "Unit-Online". + + + 30 (subcode "Duplicate Unit Number") + + 31 Implies that the tape unit is "Unit-Online" but + 32 that its unit number is identical to that of + 33 some other tape unit known to the controller. + 34 The tape unit will become "Unit-Offline", due to + 35 the duplicate Unit Number, as soon as it ceases + 36 to be "Unit-Online". + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-62 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 (subcode "Read-only Volume Format") + + 2 The unit only implements read access for the + 3 format of the volume mounted in the unit. For + 4 example, a single-density volume is mounted in a + 5 double-density drive that can read but not write + 6 it. Note that the unit will be Data Safety + 7 Write Protected whenever this subcode is + 8 returned. + + + 9 Command Aborted + + 10 The tape unit state is unchanged. The host must + 11 assume that the returned unit characteristics are + 12 invalid, since the unit may be "Unit-Offline". + + 13 Controller Error + 14 Drive Error + 15 Formatter Error + + 16 Invalid Command + 17 (subcode "Invalid Format") + + 18 More than one Format was specified, or the + 19 Format specified is not supported by the + 20 specified unit, or the magnetic tape loaded on + 21 the tape unit was not positioned at BOT. + + + 22 Unit-Available + 23 Unit-Offline + + + 24 Flags: + + 25 Cached Data Lost + 26 EOT Encountered + 27 Error Log Generated + 28 Exclusive Access + 29 Position Lost + 30 Serious Exception + + + 31 Multi-Unit code: + 32 Unit Flags: + 33 Unit Identifier: + 34 Media Type Identifier: + 35 Format: + 36 Speed: + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-63 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 Refer to section 5.7.2 for a description of these + 2 fields. + + 3 Recommended Maximum WRITE Byte Count: + 4 Noise Record: + + 5 Refer to section 5.8.2 for a description of these + 6 fields. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-64 + SET UNIT CHARACTERISTICS Command 8 November 1987 + + + 1 5.11.3 Description + + 2 The SET UNIT CHARACTERISTICS Command is used to set host-settable + 3 unit characteristics and to obtain those unit characteristics + 4 essential for proper class driver operation. + + 5 Successful execution of this command never alters the tape unit's + 6 host-relative connection state ("Unit-Online", etc.). + 7 Unsuccessful execution leaves the tape unit in either the + 8 "Unit-Available" or "Unit-Offline" states. + + 9 Setting host settable characteristics for a tape unit that is + 10 "Unit-Offline" or "Unit Available" has no effect. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-65 + WRITE Command 8 November 1987 + + + 1 5.12 WRITE Command + + 2 Command Category: + + 3 Sequential (optionally Immediate Completion) + + + 4 5.12.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + 13 | byte count | + 14 +-------------------------------+ + 15 | | + 16 +--- buffer ---+ + 17 | | + 18 +--- descriptor ---+ + 19 | | + 20 +-------------------------------+ + + + 21 Allowable Modifiers: + + 22 Clear Cached Data Lost + 23 Clear Serious Exception + 24 Compare + + 25 Enable Re-write Error Recovery + + 26 This modifier may not be set in conjunction with the + 27 "Suppress Error Recovery" command modifier and is + 28 therefore treated as a reserved field. The TMSCP + 29 controller must return an Invalid Command (subcode + 30 "Invalid Modifiers") status code if both the + 31 "Suppress Error Recovery" command modifier and the + 32 "Enable Re-write Error Recovery" command modifier + 33 are set in the same command (see section 3.5.5.2). + + 34 Immediate Completion + + 35 If this modifier is set, this command may be + 36 executed as a "write-back" caching enabled "write" + 37 type command. Refer to section 3.6.1 for complete + 38 details. + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-66 + WRITE Command 8 November 1987 + + + 1 Suppress Error Correction + + 2 Suppress Error Recovery + + 3 This modifier may not be set in conjunction with the + 4 "Enable Re-write Error Recovery" command modifier + 5 and is therefore treated as a reserved field. The + 6 TMSCP controller must return an Invalid Command + 7 (subcode "Invalid Modifiers") status code if both + 8 the "Suppress Error Recovery" command modifier and + 9 the "Enable Re-write Error Recovery" command + 10 modifier are set in the same command (see section + 11 3.5.5.2). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-67 + WRITE Command 8 November 1987 + + + 1 5.12.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | byte count (host transfer) | + 11 +-------------------------------+ + 12 | | + 13 +---- ----+ + 14 | undefined | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + 20 | byte count (tape record) | + 21 +-------------------------------+ + + + 22 Status Codes: + + 23 Success + 24 (subcode "Normal") + 25 (subcode "EOT Encountered") + + 26 Command Aborted + 27 Compare Error + 28 Controller Error + 29 Data Error + 30 Drive Error + 31 Formatter Error + 32 Host Buffer Access Error + + 33 Invalid Command + 34 (subcode "Invalid Byte Count") + + 35 Position Lost + 36 Serious Exception + 37 Unit-Available + 38 Unit-Offline + + 39 Write-Protected + 40 (subcode "Unit is Hardware Write Protected") + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-68 + WRITE Command 8 November 1987 + + + 1 (subcode "Unit is Software Write Protected") + 2 (subcode "Unit is Data Safety Write Protected") + + + + 3 Flags: + + 4 Cached Data Lost + 5 EOT Encountered + 6 Error Log Generated + 7 Position Lost + 8 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-69 + WRITE Command 8 November 1987 + + + 1 5.12.3 Description + + 2 Beginning at the current position, data is written from the host + 3 buffer to the magnetic tape in record form. + + 4 Refer to sections 3.3, 3.4, and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-70 + WRITE TAPE MARK Command 8 November 1987 + + + 1 5.13 WRITE TAPE MARK Command + + 2 Command Category: + + 3 Sequential (optionally Immediate Completion) + + + 4 5.13.1 Command Message Format + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 | reserved | unit number | + 10 +---------------+-------+-------+ + 11 | modifiers | rsvd | opcode| + 12 +---------------+-------+-------+ + + + 13 Allowable Modifiers: + + 14 Clear Cached Data Lost + 15 Clear Serious Exception + + 16 Immediate Completion + + 17 If this modifier is set, this command may be + 18 executed as a "write-back" caching enabled "write" + 19 type command. Refer to section 3.6.1 for complete + 20 details. + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-71 + WRITE TAPE MARK Command 8 November 1987 + + + 1 5.13.2 End Message Format + + 2 31 0 + 3 +-------------------------------+ + 4 | command reference number | + 5 +---------------+---------------+ + 6 |sequence number| unit number | + 7 +---------------+-------+-------+ + 8 | status | flags |endcode| + 9 +---------------+-------+-------+ + 10 | | + 11 +---- ----+ + 12 | | + 13 +--- undefined ---+ + 14 | | + 15 +---- ----+ + 16 | | + 17 +-------------------------------+ + 18 | position (object count) | + 19 +-------------------------------+ + + + 20 Status Codes: + + 21 Success + 22 (subcode "Normal") + 23 (subcode "EOT Encountered") + + 24 Command Aborted + 25 Controller Error + 26 Data Error + 27 Drive Error + 28 | Formatter Error + 29 Position Lost + 30 Serious Exception + 31 Unit-Available + 32 Unit-Offline + + 33 Write-Protected + 34 (subcode "Unit is Hardware Write Protected") + 35 (subcode "Unit is Software Write Protected") + 36 (subcode "Unit is Data Safety Write Protected") + + + 37 Flags: + + 38 Cached Data Lost + 39 EOT Encountered + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-72 + WRITE TAPE MARK Command 8 November 1987 + + + 1 Error Log Generated + 2 Position Lost + 3 Serious Exception + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP COMMAND DESCRIPTIONS Page 5-73 + WRITE TAPE MARK Command 8 November 1987 + + + 1 5.13.3 Description + + 2 A tape mark is written to the specified unit beginning at the + 3 current position. + + 4 Refer to sections 3.3 and 3.5 for additional detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-1 + 8 November 1987 + + + 1 CHAPTER 6 + + 2 TMSCP ERROR LOG MESSAGES + + + 3 6.1 TMSCP Error Log Message Format + + 4 For a detailed description of error log message handling, refer + 5 to MSCP. + + 6 The "volume serial number" field of the MSCP generic error log + 7 message format is used as the "Position (object count)" field in + 8 TMSCP. + + 9 The following error log message formats are supported by TMSCP, + 10 but described in MSCP: + + 11 o Controller Errors + 12 o Memory Errors + + + 13 The subsections which follow describe TMSCP specific error log + 14 formats. Note that where an STI response is included in the + 15 error log format the response code and checksum bytes of the + 16 response are not returned by the controller. Refer to the STI + 17 specification for a description of the individual STI responses. + + 18 Fields common to the TMSCP error log messages are described here: + + 19 o position (object count) + + 20 "position (object count)" at which the error + 21 occurred. This value may not necessarily reflect + 22 the actual object count since certain errors can + 23 result in a position lost condition. In that case, + 24 the last known good object count will be specified. + + + 25 o fsvrsn + + 26 Formatter software, firmware, or microcode revision + 27 number. Always zero if the development and + 28 maintainability groups for a product determine that + 29 there is no benefit from supporting machine readable + 30 revision numbers. + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-2 + TMSCP Error Log Message Format 8 November 1987 + + + 1 o fhvrsn + + 2 Formatter hardware revision number. Always zero if + 3 the development and maintainability groups for a + 4 product determine that there is no benefit from + 5 supporting machine readable revision numbers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-3 + TMSCP Error Log Message Format 8 November 1987 + + + 1 6.1.1 Tape Errors + + 2 The following format is used to report generic tape errors, + 3 including errors that occur during a tape data transfer + 4 operation. + + + 5 31 0 + 6 +-------------------------------+ + 7 | command reference number | + 8 +---------------+---------------+ + 9 |sequence number| unit number | + 10 +---------------+-------+-------+ + 11 | event code | flags | format| + 12 +---------------+-------+-------+ + 13 | | + 14 +--- controller identifier ---+ + 15 | | + 16 +---------------+-------+-------+ + 17 |multi-unit code| chvrsn| csvrsn| + 18 +---------------+-------+-------+ + 19 | | + 20 +--- unit identifier ---+ + 21 | | + 22 +-------+-------+-------+-------+ + 23 | retry | level | uhvrsn| usvrsn| + 24 +-------+-------+-------+-------+ + 25 | position (object count) | + 26 +---------------+-------+-------+ + 27 | reserved | fhvrsn| fsvrsn| + 28 +---------------+-------+-------+ + 29 | | + 30 / device / + 31 / dependent information / + 32 / (optional) / + 33 | | + 34 +-------------------------------+ + + 35 Level/Retry: + + 36 The error recovery level and retry count of the most + 37 recent attempt at the transfer. Note that these values + 38 always identify the last attempt -- i.e., the attempt + 39 that succeeded or the last attempt before giving up. + 40 Refer to MSCP for more detail on the Level and Retry + 41 fields. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-4 + TMSCP Error Log Message Format 8 November 1987 + + + 1 Device Dependent Information: + + 2 An optional, variable length field containing device + 3 dependent information. The length of this field is + 4 implied by the total length of the error log message, + 5 passed to the class driver by the port driver. The + 6 contents of the field must be described in the + 7 functional specification of any device providing this + 8 field. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-5 + TMSCP Error Log Message Format 8 November 1987 + + + 1 6.1.2 STI Communication Or Command Failures + + 2 The following format is used by STI Tape Controllers to report + 3 STI communication or command failures. Note that the controller + 4 may attempt several retries. A separate error log message will + 5 be generated for each attempt that fails. + + + 6 31 0 + 7 +-------------------------------+ + 8 | command reference number | + 9 +---------------+---------------+ + 10 |sequence number| unit number | + 11 +---------------+-------+-------+ + 12 | event code | flags | format| + 13 +---------------+-------+-------+ + 14 | | + 15 +--- controller identifier ---+ + 16 | | + 17 +---------------+-------+-------+ + 18 |multi-unit code| chvrsn| csvrsn| + 19 +---------------+-------+-------+ + 20 | | + 21 +--- unit identifier ---+ + 22 | | + 23 +---------------+-------+-------+ + 24 | reserved | uhvrsn| usvrsn| + 25 +---------------+-------+-------+ + 26 | position (object count) | + 27 +---------------+-------+-------+ + 28 | reserved | fhvrsn| fsvrsn| + 29 +---------------+-------+-------+ + 30 | | + 31 +--- STI UNSUCCESSFUL ---+ + 32 | Response | + 33 +--- 12 bytes ---+ + 34 | | + 35 +-------------------------------+ + + 36 STI UNSUCCESSFUL Response: + + 37 Twelve bytes of information received from the formatter + 38 as an UNSUCCESSFUL response, or in response to an STI + 39 GET SUMMARY STATUS command (the format is identical). + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-6 + TMSCP Error Log Message Format 8 November 1987 + + + 1 6.1.3 STI Formatter Error Log + + 2 The following format is used by STI Tape Controllers to return + 3 formatter requested error logs. + + + 4 31 0 + 5 +-------------------------------+ + 6 | command reference number | + 7 +---------------+---------------+ + 8 |sequence number| unit number | + 9 +---------------+-------+-------+ + 10 | event code | flags | format| + 11 +---------------+-------+-------+ + 12 | | + 13 +--- controller identifier ---+ + 14 | | + 15 +---------------+-------+-------+ + 16 |multi-unit code| chvrsn| csvrsn| + 17 +---------------+-------+-------+ + 18 | | + 19 +--- unit identifier ---+ + 20 | | + 21 +---------------+-------+-------+ + 22 | reserved | uhvrsn| usvrsn| + 23 +---------------+-------+-------+ + 24 | position (object count) | + 25 +---------------+-------+-------+ + 26 | reserved | fhvrsn| fsvrsn| + 27 +---------------+-------+-------+ + 28 | | + 29 +--- STI GET FORMATTER ---+ + 30 / ERROR LOG Response / + 31 +--- 20 bytes ---+ + 32 | | + 33 +-------------------------------+ + + + + 34 STI GET FORMATTER ERROR LOG Response: + + 35 Twenty bytes of information received from the formatter + 36 in response to an STI GET FORMATTER ERROR LOG command. + 37 Note that the format of this information is formatter + 38 and error type dependent, and will therefore vary in + 39 length and content. If the information received from + 40 the formatter is less than twenty bytes, the controller + 41 will zero fill the remaining unused bytes of the error + 42 log message. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + TMSCP ERROR LOG MESSAGES Page 6-7 + TMSCP Error Log Message Format 8 November 1987 + + + 1 6.1.4 STI Drive Error Log + + 2 The following format is used by STI Tape Controllers to return + 3 drive requested error logs. + + + 4 31 0 + 5 +-------------------------------+ + 6 | command reference number | + 7 +---------------+---------------+ + 8 |sequence number| unit number | + 9 +---------------+-------+-------+ + 10 | event code | flags | format| + 11 +---------------+-------+-------+ + 12 | | + 13 +--- controller identifier ---+ + 14 | | + 15 +---------------+-------+-------+ + 16 |multi-unit code| chvrsn| csvrsn| + 17 +---------------+-------+-------+ + 18 | | + 19 +--- unit identifier ---+ + 20 | | + 21 +---------------+-------+-------+ + 22 | reserved | uhvrsn| usvrsn| + 23 +---------------+-------+-------+ + 24 | position (object count) | + 25 +---------------+-------+-------+ + 26 | reserved | fhvrsn| fsvrsn| + 27 +---------------+-------+-------+ + 28 | | + 29 +--- STI GET EXTENDED ---+ + 30 / DRIVE STATUS Response / + 31 +--- 62 bytes ---+ + 32 | | + 33 +-------------------------------+ + + + + 34 STI GET EXTENDED DRIVE STATUS Response: + + 35 Sixty two bytes of information received from the + 36 formatter in response to an STI GET EXTENDED DRIVE + 37 STATUS command. Note that the format of this + 38 information is drive and error type dependent, and will + 39 therefore vary in length and content. If the + 40 information received from the drive is less than sixty + 41 two bytes, the controller will zero fill the remaining + 42 unused bytes of the error log message. + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-1 + 8 November 1987 + + + 1 APPENDIX A + + 2 OPCODE, FLAG AND OFFSET DEFINITIONS + + + 3 Table A-1: Control Message Opcodes + + 4 +--------------------+--------------------------+-----------------------------------------+ + 5 | Opcode Value | | | + 6 | (See note 1) | Preferred Mnemonics | | + 7 |------+------+------+--------+-----------------+ Control Message Type | + 8 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 9 +------+------+------+--------+-----------------+-----------------------------------------+ + 10 | 0 | 00 | 00 | - | - | reserved - must not be assigned | + 11 +------+------+------+--------+-----------------+-----------------------------------------+ + 12 | Standard Command Messages (See note 2): | | + 13 | 1 | 01 | 01 | OP.ABO | MSCP$K_OP_ABORT | ABORT | + 14 | 16 | 20 | 10 | OP.ACC | MSCP$K_OP_ACCES | ACCESS | + 15 | 8 | 10 | 08 | OP.AVL | MSCP$K_OP_AVAIL | AVAILABLE | + 16 | 32 | 40 | 20 | OP.CMP | MSCP$K_OP_COMP | COMPARE HOST DATA | + 17 | 11 | 13 | 0B | OP.DAP | MSCP$K_OP_DTACP | DETERMINE ACCESS PATHS | + 18 | 18 | 22 | 12 | OP.ERS | MSCP$K_OP_ERASE | ERASE | + 19 | 2 | 02 | 02 | OP.GCS | MSCP$K_OP_GTCMD | GET COMMAND STATUS | + 20 | 3 | 03 | 03 | OP.GUS | MSCP$K_OP_GTUNT | GET UNIT STATUS | + 21 | 9 | 11 | 09 | OP.ONL | MSCP$K_OP_ONLIN | ONLINE | + 22 | 33 | 41 | 21 | OP.RD | MSCP$K_OP_READ | READ | + 23 | 4 | 04 | 04 | OP.SCC | MSCP$K_OP_STCON | SET CONTROLLER CHARACTERISTICS | + 24 | 10 | 12 | 0A | OP.SUC | MSCP$K_OP_STUNT | SET UNIT CHARACTERISTICS | + 25 | 34 | 42 | 22 | OP.WR | MSCP$K_OP_WRITE | WRITE | + 26 +------+------+------+--------+-----------------+-----------------------------------------+ + 27 | Optional Command Messages: | | | + 28 | 5 | 05 | 05 | OP.ANM | MSCP$K_OP_ACCNM | ACCESS NON-VOLATILE MEMORY | + 29 +------+------+------+--------+-----------------+-----------------------------------------+ + 30 | Implementation Specific Command Messages (See note 4): | + 31 | 40 | 50 | 28 | OP.SP1 | MSCP$K_OP_SPEC1 | # 1 | + 32 | 41 | 51 | 29 | OP.SP2 | MSCP$K_OP_SPEC2 | # 2 | + 33 | 42 | 52 | 2A | OP.SP3 | MSCP$K_OP_SPEC3 | # 3 | + 34 | 43 | 53 | 2B | OP.SP4 | MSCP$K_OP_SPEC4 | # 4 | + 35 | 44 | 54 | 2C | OP.SP5 | MSCP$K_OP_SPEC5 | # 5 | + 36 | 45 | 55 | 2D | OP.SP6 | MSCP$K_OP_SPEC6 | # 6 | + 37 | 46 | 56 | 2E | OP.SP7 | MSCP$K_OP_SPEC7 | # 7 | + 38 | 47 | 57 | 2F | OP.SP8 | MSCP$K_OP_SPEC8 | # 8 | + 39 +------+------+------+--------+-----------------+-----------------------------------------+ + 40 | Tape MSCP Specific Command Messages: | | + 41 | 22 | 26 | 16 | OP.ERG | MSCP$K_OP_ERGAP | ERASE GAP | + 42 | 19 | 23 | 13 | OP.FLU | MSCP$K_OP_FLUSH | FLUSH | + 43 | 37 | 45 | 25 | OP.REP | MSCP$K_OP_REPOS | REPOSITION | + 44 | 36 | 44 | 24 | OP.WTM | MSCP$K_OP_WRITM | WRITE TAPE MARK | + 45 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-2 + 8 November 1987 + + + + 1 Table A-1: Control Message Opcodes (cont.) + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Opcode Value | | | + 4 | (See note 1) | Preferred Mnemonics | | + 5 |------+------+------+--------+-----------------+ Control Message Type | + 6 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 7 +------+------+------+--------+-----------------+-----------------------------------------+ + 8 | End Messages (See note 3): | | + 9 | 128 | 200 | 80 | OP.END | MSCP$K_OP_END | END message flag | + 10 +------+------+------+--------+-----------------+-----------------------------------------+ + 11 | Attention Messages:| | | | + 12 | 64 | 100 | 40 | OP.AVA | MSCP$K_OP_AVATN | AVAILABLE | + 13 | 65 | 101 | 41 | OP.DUP | MSCP$K_OP_DUPUN | DUPLICATE UNIT NUMBER | + 14 | 66 | 102 | 42 | OP.ACP | MSCP$K_OP_APATH | ACCESS PATH | + 15 +------+------+------+--------+-----------------+-----------------------------------------+ + 16 | Notes: 1. Message opcode bits 6 and 7 indicate the type of message (command, end, or | + 17 | attention). | + 18 | | + 19 | 2. Standard command opcode bits 3 through 5 indicate the command category | + 20 | (Immediate, Sequential, or Non-Sequential) and whether or not the command | + 21 | includes a buffer descriptor. | + 22 | | + 23 | 3. End message endcodes are formed by adding the end message flag to the command | + 24 | opcode. For example, a READ command's end message contains (using 16 bit | + 25 | mnemonics) the value OP.RD+OP.END in its endcode field. As described in the | + 26 | MSCP specification, an MSCP protocol violation produces an Invalid Command | + 27 | end message which contains just the end message flag (OP.END) in its endcode | + 28 | field. | + 29 | | + 30 | 4. The implementation specific command opcodes may be used by manufacturing test | + 31 | equipment to verify controller operation. They must never be issued by normal | + 32 | host software, or when a host is running anything other than stand-alone | + 33 | diagnostics. The operation of these commands when issued under anything but | + 34 | the expected manufacturing and/or diagnostic environment is UNDEFINED. | + 35 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-3 + 8 November 1987 + + + 1 Table A-2: Command Modifiers + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (See note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | ACCESS, AVAILABLE, COMPARE HOST DATA, ERASE, ERASE GAP, FLUSH, ONLINE, READ, | + 9 | REPOSITION, SET UNIT CHARACTERISTICS, WRITE and WRITE TAPE MARK Command Modifiers: | + 10 | 13 | 20000 | 2000 | MD.CSE | MSCP$x_MD_CLSEX | Clear Serious Exception | + 11 | 12 | 10000 | 1000 | MD.CDL | MSCP$x_MD_CDATL | Clear Cached Data Lost | + 12 +------+-------+------+--------+-----------------+----------------------------------------+ + 13 | ACCESS, COMPARE HOST DATA, READ, and REPOSITION Command Modifiers: | + 14 | 11 | 4000 | 800 | MD.SCH | MSCP$x_MD_SCCHH | Suppress Caching | + 15 | 3 | 10 | 8 | MD.REV | MSCP$x_MD_REVRS | Reverse | + 16 +------+-------+------+--------+-----------------+----------------------------------------+ + 17 | ACCESS, COMPARE HOST DATA, READ, REPOSITION, and WRITE Command Modifiers: | + 18 | 9 | 1000 | 200 | MD.SEC | MSCP$x_MD_SECOR | Suppress Error Correction | + 19 | 8 | 400 | 100 | MD.SER | MSCP$x_MD_SEREC | Suppress Error Recovery | + 20 +------+-------+------+--------+-----------------+----------------------------------------+ + 21 | AVAILABLE Command Modifiers: | | | + 22 | 4 | 20 | 10 | MD.UNL | MSCP$x_MD_UNLOD | Unload | + 23 | 1 | 2 | 2 | MD.ALL | MSCP$x_MD_ALLCD | All Class Drivers | + 24 +------+-------+------+--------+-----------------+----------------------------------------+ + 25 | AVAILABLE, ONLINE, and SET UNIT CHARACTERISTICS Command Modifiers: | + 26 | 5 | 40 | 20 | MD.EXC | MSCP$x_MD_EXCAC | Exclusive Access | + 27 +------+-------+------+--------+-----------------+----------------------------------------+ + 28 | ERASE, ERASE GAP, REPOSITION, WRITE and WRITE TAPE MARK Command Modifier: | + 29 | 6 | 100 | 40 | MD.IMM | MSCP$x_MD_IMMED | Immediate Completion | + 30 +------+-------+------+--------+-----------------+----------------------------------------+ + 31 | GET UNIT STATUS Command Modifier: | | + 32 | 0 | 1 | 1 | MD.NXU | MSCP$x_MD_NXUNT | Next Unit | + 33 +------+-------+------+--------+-----------------+----------------------------------------+ + 34 | ONLINE and SET UNIT CHARACTERISTICS Command Modifier: | + 35 | 2 | 4 | 4 | MD.SWP | MSCP$x_MD_STWRP | Enable Set Write Protect | + 36 +------+-------+------+--------+-----------------+----------------------------------------+ + 37 | READ and WRITE Command Modifier: | | + 38 | 14 | 40000 | 4000 | MD.CMP | MSCP$x_MD_COMP | Compare | + 39 +------+-------+------+--------+-----------------+----------------------------------------+ + 40 | REPOSITION Command Modifiers:| | | + 41 | 7 | 200 | 80 | MD.DLE | MSCP$x_MD_DLEOT | Detect LEOT | + 42 | 2 | 4 | 4 | MD.OBC | MSCP$x_MD_OBJCT | Object Count | + 43 | 1 | 2 | 2 | MD.RWD | MSCP$x_MD_REWND | Rewind | + 44 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-4 + 8 November 1987 + + + + 1 Table A-2: Command Modifiers (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------+-----------------+ Command Modifier | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (See note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | WRITE Command Modifier: | | | + 9 | 4 | 20 | 10 | MD.ERW | MSCP$x_MD_ENRWR | Enable Re-Write Error Recovery | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + 11 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 12 | defined as a bit number (offset) or an "M" if defined as a mask. | + 13 +-----------------------------------------------------------------------------------------+ + + + 14 Table A-3: End Message Flags + + 15 +------+--------------+--------------------------+----------------------------------------+ + 16 | Bit | Bit Mask | Preferred Mnemonics | | + 17 |Number+-------+------+--------+-----------------+ End Message Flag | + 18 | | Octal | Hex. | 16 bit | 32 bit | | + 19 | | | | | (See note 1) | | + 20 +------+-------+------+--------+-----------------+----------------------------------------+ + 21 | 5 | 40 | 20 | EF.LOG | MSCP$x_EF_ERLOG | Error Log Generated | + 22 | 4 | 20 | 10 | EF.SEX | MSCP$x_EF_SEREX | Serious Exception | + 23 | 3 | 10 | 8 | EF.EOT | MSCP$x_EF_EOT | End of Tape encountered | + 24 | 2 | 4 | 4 | EF.PLS | MSCP$x_EF_PLS | Position Lost | + 25 | 1 | 2 | 2 | EF.DLS | MSCP$x_EF_DLS | Cached Data Lost | + 26 +------+-------+------+--------+-----------------+----------------------------------------+ + 27 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 28 | defined as a bit number (offset) or an "M" if defined as a mask. | + 29 +-----------------------------------------------------------------------------------------+ + + + 30 Table A-4: Controller Flags + + 31 +------+--------------+--------------------------+----------------------------------------+ + 32 | Bit | Bit Mask | Preferred Mnemonics | | + 33 |Number+-------+------+--------------------------+ Controller Flag | + 34 | | Octal | Hex. | 16 bit | 32 bit | (See note 2) | + 35 | | | | | (See note 1) | | + 36 +------+-------+------+--------+-----------------+----------------------------------------+ + 37 | 7 | 200 | 80 | CF.ATN | MSCP$x_CF_ATTN | Enable Attention Messages | + 38 | 6 | 100 | 40 | CF.MSC | MSCP$x_CF_MISC | Enable Miscellaneous Error Log Messages| + 39 | 5 | 40 | 20 | CF.OTH | MSCP$x_CF_OTHER | Enable Other Host's Error Log Messages | + 40 | 4 | 20 | 10 | CF.THS | MSCP$x_CF_THIS | Enable This Host's Error Log Messages | + 41 | 2 | 4 | 4 | CF.MLH | MSCP$x_CF_MLHT | Multi-Host Support | + 42 +------+-------+------+--------+-----------------+----------------------------------------+ + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-5 + 8 November 1987 + + + + 1 Table A-4: Controller Flags (cont.) + + 2 +------+--------------+--------------------------+----------------------------------------+ + 3 | Bit | Bit Mask | Preferred Mnemonics | | + 4 |Number+-------+------+--------------------------+ Controller Flag | + 5 | | Octal | Hex. | 16 bit | 32 bit | | + 6 | | | | | (See note 1) | | + 7 +------+-------+------+--------+-----------------+----------------------------------------+ + 8 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 9 | defined as a bit number (offset) or an "M" if defined as a mask. | + 10 +------+-------+------+--------+-----------------+----------------------------------------+ + + + 11 Table A-5: Unit Flags + + 12 +------+--------------+--------------------------+----------------------------------------+ + 13 | Bit | Bit Mask | Preferred Mnemonics | | + 14 |Number+-------+------+--------+-----------------+ Unit Flag | + 15 | | Octal | Hex. | 16 bit | 32 bit | | + 16 | | | | | (See note 1) | | + 17 +------+-------+------+--------+-----------------+----------------------------------------+ + 18 | 15 |100000 | 8000 | UF.CAC | MSCP$x_UF_CACH | Tape Write-back caching | + 19 | 13 | 20000 | 2000 | UF.WPH | MSCP$x_UF_WRTPH | Hardware Write protect | + 20 | 12 | 10000 | 1000 | UF.WPS | MSCP$x_UF_WRTPS | Software Write protect | + 21 | 11 | 4000 | 800 | UF.SCH | MSCP$x_UF_SCCHH | Suppress Caching | + 22 | 10 | 2000 | 400 | UF.EXA | MSCP$x_UF_EXACC | Exclusive Access | + 23 | 8 | 400 | 100 | UF.WPD | MSCP$x_UF_WRTPD | Data Safety Write Protect | + 24 | 6 | 100 | 40 | UF.WBN | MSCP$x_UF_WBKNV | Write-back | + 25 | 5 | 40 | 20 | UF.VSS | MSCP$x_UF_VSMSU | Variable Speed Mode Suppression | + 26 | 4 | 20 | 10 | UF.VSU | MSCP$x_UF_VARSP | Variable Speed Unit | + 27 | 3 | 10 | 8 | UF.EWR | MSCP$x_UF_EWRER | Enhanced Write Error Recovery | + 28 | 1 | 2 | 2 | UF.CMW | MSCP$x_UF_CMPWR | Compare Writes | + 29 | 0 | 1 | 1 | UF.CMR | MSCP$x_UF_CMPRD | | + 30 +------+-------+------+--------+-----------------+----------------------------------------+ + 31 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 32 | defined as a bit number (offset) or an "M" if defined as a mask. | + 33 +------+-------+------+--------+-----------------+----------------------------------------+ + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-6 + 8 November 1987 + + + 1 Table A-6: Command Message Offsets + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | Generic Command Message Offsets: | | | + 8 | 0 | 0 | 0 | P.CRF | MSCP$L_CMD_REF | 4 | Command reference number | + 9 | 4 | 4 | 4 | P.UNIT | MSCP$W_UNIT | 2 | Unit number | + 10 | 6 | 6 | 6 | | | 2 | Reserved | + 11 | 8 | 10 | 8 | P.OPCD | MSCP$B_OPCODE | 1 | Opcode | + 12 | 9 | 11 | 9 | | | 1 | Reserved | + 13 | 10 | 12 | A | P.MOD | MSCP$W_MODIFIER | 2 | Modifiers | + 14 | 12 | 14 | C | P.BCNT | MSCP$L_BYTE_CNT | 4 | Byte count | + 15 | 16 | 20 | 10 | P.BUFF | MSCP$B_BUFFER | 12 | Buffer descriptor | + 16 +------+------+------+--------+-----------------+-------+---------------------------------+ + 17 | ABORT and GET COMMAND STATUS Command Message Offsets: | | + 18 | 12 | 14 | C | P.OTRF | MSCP$L_OUT_REF | 4 | Outstanding reference number | + 19 +------+------+------+--------+-----------------+-------+---------------------------------+ + 20 | ACCESS NON-VOLATILE MEMORY Command Message Offsets: | | + 21 | 4 | 4 | 4 | | | 2 | Reserved | + 22 | 12 | 14 | C | | | 4 | Reserved | + 23 | 16 | 20 | 10 | P.ANOF | MSCP$L_ANM_OFFS | 4 | Offset | + 24 | 20 | 24 | 14 | P.ANOP | MSCP$W_ANM_OPER | 2 | Operation (See Table A-11) | + 25 | 22 | 26 | 16 | P.ANDL | MSCP$W_ANM_DLGH | 2 | Data length | + 26 | 24 | 30 | 18 | P.ANMD | MSCP$T_ANM_MEMD | * | Memory data | + 27 +------+------+------+--------+-----------------+-------+---------------------------------+ + 28 | ONLINE and SET UNIT CHARACTERISTICS Command Message Offsets: | + 29 | 12 | 14 | C | | | 2 | Reserved | + 30 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 31 | 16 | 20 | 10 | | | 12 | Reserved | + 32 | 28 | 34 | 1C | P.DVPM | MSCP$L_DEV_PARM | 4 | Device dependent parameters | + 33 | 32 | 40 | 20 | P.FORM | MSCP$W_FORMAT | 2 | Format | + 34 | 34 | 42 | 22 | P.SPED | MSCP$L_SPEED | 2 | Speed | + 35 +------+------+------+--------+-----------------+-------+---------------------------------+ + 36 | REPOSITION Command Message Offsets: | | | + 37 | 12 | 14 | C | P.RECC | MSCP$L_REC_CNT | 4 | Record/Object Count | + 38 | 16 | 20 | 10 | P.TMGC | MSCP$L_TMGP_CNT | 4 | Tape Mark Count or N/A | + 39 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-7 + 8 November 1987 + + + + 1 Table A-6: Command Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | SET CONTROLLER CHARACTERISTICS Command Message Offsets: | + 8 | 4 | 4 | 4 | | | 2 | Reserved | + 9 | 12 | 14 | C | P.VRSN | MSCP$W_VERSION | 2 | MSCP version | + 10 | 14 | 16 | E | P.CNTF | MSCP$W_CNT_FLGS | 2 | Controller flags | + 11 | 16 | 20 | 10 | P.HTMO | MSCP$W_HST_TMO | 2 | Host timeout | + 12 | 18 | 22 | 12 | | | 2 | Reserved | + 13 | 20 | 24 | 14 | P.TIME | MSCP$Q_TIME | 8 | Quad-word time and date | + 14 | 28 | 34 | 1C | P.CNPM | MSCP$L_CNT_PARM | 4 | Controller dependent parameters | + 15 +------+------+------+--------+-----------------+-------+---------------------------------+ + 16 | Notes: 1. An asterisk (*) in the field size indicates that the size varies. | + 17 +-----------------------------------------------------------------------------------------+ + + + 18 Table A-7: End and Attention Message Offsets + + 19 +--------------------+--------------------------+-------+---------------------------------+ + 20 | Offset Value | Preferred Mnemonics | Field | | + 21 +------+------+------+--------+-----------------+ Size | Field Description | + 22 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 23 +------+------+------+--------+-----------------+-------+---------------------------------+ + 24 | Generic End Message Offsets:| | | | + 25 | 0 | 0 | 0 | P.CRF | MSCP$L_CMD_REF | 4 | Command reference number | + 26 | 4 | 4 | 4 | P.UNIT | MSCP$W_UNIT | 2 | Unit number | + 27 | 6 | 6 | 6 | P.SEQ | MSCP$W_SEQ_NUM | 2 | Sequence Number (LAST error log)| + 28 | 8 | 10 | 8 | P.OPCD | MSCP$B_OPCODE | 1 | Opcode (also called endcode) | + 29 | 9 | 11 | 9 | P.FLGS | MSCP$B_FLAGS | 1 | End message flags | + 30 | 10 | 12 | A | P.STS | MSCP$W_STATUS | 2 | Status | + 31 | 12 | 14 | C | P.BCNT | MSCP$L_BYTE_CNT | 4 | Byte count (host transfer) | + 32 +------+------+------+--------+-----------------+-------+---------------------------------+ + 33 | ABORT and GET COMMAND STATUS End Message Offsets: | | + 34 | 12 | 14 | C | P.OTRF | MSCP$L_OUT_REF | 4 | Outstanding reference number | + 35 +------+------+------+--------+-----------------+-------+---------------------------------+ + 36 | ACCESS NON-VOLATILE MEMORY End Message Offsets: | | + 37 | 4 | 4 | 4 | | | 2 | Reserved | + 38 | 12 | 14 | C | P.ANSZ | MSCP$L_ANM_SIZE | 4 | Memory Size | + 39 | 16 | 20 | 10 | P.ANOF | MSCP$L_ANM_OFFS | 4 | Offset | + 40 | 20 | 24 | 14 | P.ANOP | MSCP$W_ANM_OPER | 2 | Operation (See Table A-11) | + 41 | 22 | 26 | 16 | P.ANDL | MSCP$W_ANM_DLGH | 2 | Data length | + 42 | 24 | 30 | 18 | P.ANMD | MSCP$T_ANM_MEMD | * | Memory data | + 43 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-8 + 8 November 1987 + + + + 1 Table A-7: End and Attention Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | GET COMMAND STATUS End Message Offsets: | | | + 8 | 16 | 20 | 10 | P.CMST | MSCP$L_CMD_STS | 4 | Command status | + 9 +------+------+------+--------+-----------------+-------+---------------------------------+ + 10 | GET UNIT STATUS End Message Offsets: | | | + 11 | 12 | 14 | C | P.MLUN | MSCP$W_MULT_UNT | 2 | Multiunit code | + 12 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 13 | 16 | 20 | 10 | | | 4 | Reserved | + 14 | 20 | 24 | 14 | P.UNTI | MSCP$Q_UNIT_ID | 8 | Unit identifier | + 15 | 28 | 34 | 1C | P.MEDI | MSCP$L_MEDIA_ID | 4 | Media type identifier | + 16 | 32 | 40 | 20 | P.FORM | MSCP$W_FORMAT | 2 | Tape Format | + 17 | 34 | 42 | 22 | P.SPED | MSCP$W_SPEED | 2 | Speed | + 18 | 36 | 44 | 24 | P.FMEN | MSCP$W_FORMENU | 2 | Format Menu | + 19 | 38 | 46 | 26 | P.FCAP | MSCP$B_FREECAP | 1 | Free capacity | + 20 | 39 | 47 | 27 | | | 1 | Reserved | + 21 | 40 | 50 | 28 | P.FSVR | MSCP$B_FMTR_SVR | 1 | Formatter software version | + 22 | 41 | 51 | 29 | P.FHVR | MSCP$B_FMTR_HVR | 1 | Formatter hardware version | + 23 | 42 | 52 | 2A | P.USVR | MSCP$B_UNIT_SVR | 1 | Unit software version | + 24 | 43 | 53 | 2B | P.UHVR | MSCP$B_UNIT_HVR | 1 | Unit hardware version | + 25 +------+------+------+--------+-----------------+-------+---------------------------------+ + 26 | ONLINE and SET UNIT CHARACTERISTICS End Message and AVAILABLE Attention Message offsets:| + 27 | 12 | 14 | C | P.MLUN | MSCP$W_MULT_UNT | 2 | Multiunit code | + 28 | 14 | 16 | E | P.UNFL | MSCP$W_UNT_FLGS | 2 | Unit flags | + 29 | 16 | 20 | 10 | | | 4 | Reserved | + 30 | 20 | 24 | 14 | P.UNTI | MSCP$Q_UNIT_ID | 8 | Unit identifier | + 31 | 28 | 34 | 1C | P.MEDI | MSCP$L_MEDIA_ID | 4 | Media type identifier | + 32 | 32 | 40 | 20 | P.FORM | MSCP$W_FORMAT | 2 | Tape Format | + 33 | 34 | 42 | 22 | P.SPED | MSCP$W_SPEED | 2 | Speed | + 34 | 36 | 44 | 24 | P.MXWR | MSCP$L_MAXWRREC | 4 | Maximum WRITE record size | + 35 | 40 | 50 | 28 | P.NREC | MSCP$W_NOISEREC | 2 | Noise Record | + 36 | 42 | 52 | 2A | | | 2 | Reserved | + 37 +------+------+------+--------+-----------------+-------+---------------------------------+ + 38 | SET CONTROLLER CHARACTERISTICS End Message Offsets: | | + 39 | 4 | 4 | 4 | | | 2 | Reserved | + 40 | 12 | 14 | C | P.VRSN | MSCP$W_VERSION | 2 | MSCP version | + 41 | 14 | 16 | E | P.CNTF | MSCP$W_CNT_FLGS | 2 | Controller flags | + 42 | 16 | 20 | 10 | P.CTMO | MSCP$W_CNT_TMO | 2 | Controller timeout | + 43 | 18 | 22 | 12 | P.CSVR | MSCP$B_CNT_SVR | 1 | Controller software version | + 44 | 19 | 23 | 13 | P.CHVR | MSCP$B_CNT_HVR | 1 | Controller hardware version | + 45 | 20 | 24 | 14 | P.CNTI | MSCP$Q_CNT_ID | 8 | Controller ID | + 46 | 28 | 34 | 1C | P.CMBC | MSCP$L_MAXBCNT | 4 | Controller maximum byte count | + 47 | | | | | | | (optional) | + 48 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-9 + 8 November 1987 + + + + 1 Table A-7: End and Attention Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | ACCESS, COMPARE HOST DATA, FLUSH, READ, REPOSITION, WRITE, and WRITE TAPE MARK end | + 8 | message offsets: | | | | | + 9 | 28 | 34 | 1C | P.POS | MSCP$L_POSITION | 4 | Position (Object Count) | + 10 +------+------+------+--------+-----------------+-------+---------------------------------+ + 11 | ACCESS, COMPARE HOST DATA, READ and WRITE end message offsets: | + 12 | 32 | 40 | 20 | P.TRBC | MSCP$L_TAPEREC | 4 | Tape Record Byte Count | + 13 +------+------+------+--------+-----------------+-------+---------------------------------+ + 14 | REPOSITION end message offsets: | | | + 15 | 12 | 14 | C | P.RCSK | MSCP$L_RCSKIPED | 4 | Records Skipped / Undefined | + 16 | 16 | 20 | 10 | P.TMSK | MSCP$L_TMSKIPED | 4 | Tape Marks Skipped / Undefined | + 17 +------+------+------+--------+-----------------+-------+---------------------------------+ + 18 | Notes: 1. An asterisk (*) in the field size indicates that the size varies. | + 19 +-----------------------------------------------------------------------------------------+ + + + 20 Table A-8: Error Log Message Offsets + + 21 +--------------------+--------------------------+-------+---------------------------------+ + 22 | Offset Value | Preferred Mnemonics | Field | | + 23 +------+------+------+--------+-----------------+ Size | Field Description | + 24 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 25 +------+------+------+--------+-----------------+-------+---------------------------------+ + 26 | Generic Error Log Message Offsets: | | | + 27 | 0 | 0 | 0 | L.CRF | MSLG$L_CMD_REF | 4 | Command reference number | + 28 | 4 | 4 | 4 | L.UNIT | MSLG$W_UNIT | 2 | Unit number | + 29 | 6 | 6 | 6 | L.SEQ | MSLG$W_SEQ_NUM | 2 | Sequence number | + 30 | 8 | 10 | 8 | L.FMT | MSLG$B_FORMAT | 1 | Format | + 31 | 9 | 11 | 9 | L.FLGS | MSLG$B_FLAGS | 1 | Error log message flags | + 32 | 10 | 12 | A | L.EVNT | MSLG$W_EVENT | 2 | Event code | + 33 | 12 | 14 | C | L.CNTI | MSLG$Q_CNT_ID | 8 | Controller ID | + 34 | 20 | 24 | 14 | L.CSVR | MSLG$B_CNT_SVR | 1 | Controller software version | + 35 | 21 | 25 | 15 | L.CHVR | MSLG$B_CNT_HVR | 1 | Controller hardware version | + 36 | 22 | 26 | 16 | L.MLUN | MSLG$W_MULT_UNT | 2 | Multiunit code | + 37 | 24 | 30 | 18 | L.UNTI | MSLG$Q_UNIT_ID | 8 | Unit ID | + 38 | 32 | 40 | 20 | L.USVR | MSLG$B_UNIT_SVR | 1 | Unit software version | + 39 | 33 | 41 | 21 | L.UHVR | MSLG$B_UNIT_HVR | 1 | Unit hardware version | + 40 | 34 | 42 | 22 | | | 2 | Reserved | + 41 | 36 | 44 | 24 | L.GPCT | MSLG$L_GAP_CNT | 4 | Position (object count) | + 42 | 40 | 50 | 28 | L.FSVR | MSLG$B_FMTR_SVR | 1 | Formatter software version | + 43 | 41 | 51 | 29 | L.FHVR | MSLG$B_FMTR_HVR | 1 | Formatter hardware version | + 44 +------+------+------+--------+-----------------+-------+---------------------------------+ + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-10 + 8 November 1987 + + + + 1 Table A-8: Error Log Message Offsets (cont.) + + 2 +--------------------+--------------------------+-------+---------------------------------+ + 3 | Offset Value | Preferred Mnemonics | Field | | + 4 +------+------+------+--------+-----------------+ Size | Field Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit |(bytes)| | + 6 +------+------+------+--------+-----------------+-------+---------------------------------+ + 7 | Controller Error with Controller Dependent Information Offsets: | + 8 | 22 | 26 | 16 | | | * | Controller dependent information| + 9 | | | | | | | (optional) | + 10 +------+------+------+--------+-----------------+-------+---------------------------------+ + 11 | Memory Errors with Host Bus Address Error Log Message Offsets: | + 12 | 22 | 26 | 16 | | | 2 | Reserved | + 13 | 24 | 30 | 18 | L.BADR | MSLG$L_BUS_ADDR | 4 | Host bus memory address | + 14 | 28 | 34 | 1C | | | * | Controller dependent information| + 15 | | | | | | | (optional) | + 16 +------+------+------+--------+-----------------+-------+---------------------------------+ + 17 | Memory Errors with Controller Memory Address Error Log Message Offsets: | + 18 | 22 | 26 | 16 | | | 2 | Reserved | + 19 | 24 | 30 | 18 | L.BADR | MSLG$L_BUS_ADDR | 4 | Host bus memory address | + 20 | 28 | 34 | 1C | | | * | Controller dependent information| + 21 | | | | | | | (optional) | + 22 +------+------+------+--------+-----------------+-------+---------------------------------+ + 23 | Tape Errors Error Log Message Offsets: | | | + 24 | 34 | 42 | 22 | L.LVL | MSLG$B_LEVEL | 1 | Level | + 25 | 35 | 43 | 23 | L.RTRY | MSLG$B_RETRY | 1 | Retry | + 26 | 42 | 52 | 2A | | | 2 | Reserved | + 27 | 44 | 54 | 2C | | | * | Device Dependent Information | + 28 +------+------+------+--------+-----------------+-------+---------------------------------+ + 29 | STI Communication Error Error Log Message Offsets: | | + 30 | 42 | 52 | 2A | | | 2 | Reserved | + 31 | 44 | 54 | 2C | L.STI | MSLG$Z_STI | 12 | STI UNSUCCESSFUL Response | + 32 +------+------+------+--------+-----------------+-------+---------------------------------+ + 33 | STI Formatter Error Error Log Message Offsets:| | | + 34 | 42 | 52 | 2A | | | 2 | Reserved | + 35 | 44 | 54 | 2C | L.STI | MSLG$Z_STI | 20 | STI GET EXTENDED FORMATTER | + 36 | | | | | | | STATUS Response | + 37 +------+------+------+--------+-----------------+-------+---------------------------------+ + 38 | STI Drive Error Error Log Message Offsets: | | | + 39 | 42 | 52 | 2A | | | 2 | Reserved | + 40 | 44 | 54 | 2C | L.STI | MSLG$Z_STI | 62 | STI GET EXTENDED DRIVE STATUS | + 41 | | | | | | | Response | + 42 +------+------+------+--------+-----------------+-------+---------------------------------+ + 43 | Note: An asterisk (*) in the field size indicates that the size varies. | + 44 +-----------------------------------------------------------------------------------------+ + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + OPCODE, FLAG AND OFFSET DEFINITIONS Page A-11 + 8 November 1987 + + + 1 Table A-9: Error Log Message Format Codes + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Format Code | Preferred Mnemonics | | + 4 +------+------+------+--------+-----------------+ Format Description | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 6 +------+------+------+--------+-----------------+-----------------------------------------+ + 7 | 0 | 0 | 0 | FM.CNT | MSLG$K_CNT_ERR | Controller Errors | + 8 | 1 | 1 | 1 | FM.BAD | MSLG$K_BUS_ADDR | Memory Errors with (host/controller) | + 9 | | | | | | Memory Address | + 10 | 5 | 5 | 5 | FM.TPE | MSLG$K_TAPE_ERR | Tape Errors | + 11 | 6 | 6 | 6 | FM.STI | MSLG$K_STI_ERR | STI Communication or Command Failure | + 12 | 7 | 7 | 7 | FM.DEL | MSLG$K_STI_DEL | STI Drive Error Log | + 13 | 8 | 10 | 8 | FM.FEL | MSLG$K_STI_FEL | STI Formatter Error Log | + 14 +------+------+------+--------+-----------------+-----------------------------------------+ + + + 15 Table A-10: Error Log Message Flags + + 16 +------+--------------+--------------------------+----------------------------------------+ + 17 | Bit | Bit Mask | Preferred Mnemonics | | + 18 |Number+-------+------+--------+-----------------+ Format Description | + 19 | | Octal | Hex. | 16 bit |32 bit (See note)| | + 20 +------+-------+------+--------+-----------------+----------------------------------------+ + 21 | 7 | 200 | 80 | LF.SUC | MSLG$x_LF_SUCC | Operation Successful | + 22 | 6 | 100 | 40 | LF.CON | MSLG$x_LF_CONT | Operation Continuing | + 23 | 0 | 1 | 1 | LF.SNR | MSLG$x_LF_SQNRS | Sequence Number Reset | + 24 +------+-------+------+--------+-----------------+----------------------------------------+ + 25 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 26 | defined as a bit number (offset) or an "M" if defined as a mask. | + 27 +-----------------------------------------------------------------------------------------+ + + + 28 Table A-11: Access Nonvolatile Memory Command Operation Codes + + 29 +--------------------+--------------------------+-----------------------------------------+ + 30 | Opcode Value | Preferred Mnemonics | | + 31 +------+------+------+--------+-----------------+ Operation | + 32 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 33 +------+------+------+--------+-----------------+-----------------------------------------+ + 34 | 0 | 0 | 0 | ANM.RD | MSCP$K_ANM_READ | Read | + 35 | 1 | 1 | 1 | ANM.EX | MSCP$K_ANM_EXCG | Exchange | + 36 | 2 | 2 | 2 | ANM.TS | MSCP$K_ANM_TSST | Test and Set | + 37 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-1 + 8 November 1987 + + + 1 APPENDIX B + + 2 STATUS AND EVENT CODE DEFINITIONS + + + + 3 NOTES + + + 4 1. The combination of a status or event code with a subcode should be + 5 expressed (assuming 16 bit symbols) as: + + 6 (subcode * ST.SUB) + code + + 7 2. The subcode values shown in Table B-2 are only returned as status codes + 8 in end messages. They are never returned as event codes in error log + 9 messages. In addition, the references to other tables within Table B-2 + 10 indicates that those tables contain subcodes which are only returned as + 11 status codes in end messages. + + 12 3. The subcode values shown in Tables B-3 through B-7 may be returned (as + 13 indicated in the "EV" and "ST" columns) as status codes, event codes or + 14 both. In those tables, an asterisk in the "EV" column indicates that + 15 the code and subcode may be returned as an event code. An asterisk in + 16 the "ST" column indicates that the code and subcode may be returned as + 17 a status code. + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-2 + 8 November 1987 + + + 1 Table B-1: Status and Event Codes + + 2 +--------------------+--------------------------+-----------------------------------------+ + 3 | Value | Preferred Mnemonics | | + 4 +------+------+------+--------+-----------------+ Status or Event Code | + 5 | Dec. | Oct. | Hex. | 16 bit | 32 bit | | + 6 +------+------+------+--------+-----------------+-----------------------------------------+ + 7 | 31 | 37 | 1F | ST.MSK | MSCP$M_ST_MASK | Status / event code mask | + 8 | 32 | 40 | 20 | ST.SUB | MSCP$M_ST_SUBCD | Subcode multiplier | + 9 | | | | | | | + 10 | 0 | 0 | 0 | ST.SUC | MSCP$K_ST_SUCC | Success | + 11 | 1 | 1 | 1 | ST.CMD | MSCP$K_ST_ICMD | Invalid command | + 12 | 2 | 2 | 2 | ST.ABO | MSCP$K_ST_ABRTD | Command Aborted | + 13 | 3 | 3 | 3 | ST.OFL | MSCP$K_ST_OFFLN | Unit-Offline | + 14 | 4 | 4 | 4 | ST.AVL | MSCP$K_ST_AVLBL | Unit-Available | + 15 | 5 | 5 | 5 | ST.MFE | MSCP$K_ST_MFMTE | Media Format Error | + 16 | 6 | 6 | 6 | ST.WPR | MSCP$K_ST_WRTPR | Write Protected | + 17 | 7 | 7 | 7 | ST.CMP | MSCP$K_ST_COMP | Compare Error | + 18 | 8 | 10 | 8 | ST.DAT | MSCP$K_ST_DATA | Data Error | + 19 | 9 | 11 | 9 | ST.HST | MSCP$K_ST_HSTBF | Host Buffer Access Error | + 20 | 10 | 12 | A | ST.CNT | MSCP$K_ST_CNTLR | Controller Error | + 21 | 11 | 13 | B | ST.DRV | MSCP$K_ST_DRIVE | Drive Error | + 22 | 12 | 14 | C | ST.FMT | MSCP$K_ST_FMTER | Formatter Error | + 23 | 13 | 15 | D | ST.BOT | MSCP$K_ST_BOT | BOT Encountered | + 24 | 14 | 16 | E | ST.TM | MSCP$K_ST_TAPEM | Tape Mark Encountered | + 25 | 15 | 17 | F | - | - | unassigned | + 26 | 16 | 20 | 10 | ST.RDT | MSCP$K_ST_RDTRN | Record Data Truncated | + 27 | 17 | 21 | 11 | ST.POL | MSCP$K_ST_PLOST | Position Lost | + 28 | 18 | 22 | 12 | ST.SEX | MSCP$K_ST_SEX | Serious Exception | + 29 | 19 | 23 | 13 | ST.LED | MSCP$K_ST_LED | LEOT Detection | + 30 | 20-30| 24-36| 14-1E| - | - | unassigned | + 31 | 31 | 37 | 1F | ST.DIA | MSCP$K_ST_DIAG | Message from an internal diagnostic | + 32 +------+------+------+--------+-----------------+-----------------------------------------+ + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-3 + 8 November 1987 + + + 1 Table B-2: Status Only Subcode Values + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Status Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | "Success" Subcode values: | | + 8 | 0 | 0 | 0 | 0 | Normal | + 9 | 1 | 32 | 40 | 20 | Unload Ignored | + 10 | 2 | 64 | 100 | 40 | Still Connected | + 11 | 4 | 128 | 200 | 80 | Duplicate Unit Number | + 12 | 8 | 256 | 400 | 100 | Already Online | + 13 | 16 | 512 | 1000 | 200 | Still Online | + 14 | 32 | 1024 | 2000 | 400 | EOT Encountered | + 15 | 128 | 4096 | 10000 | 1000 | Read Only Volume Format | + 16 +------+------+-------+------+---------------------------------------------------------+ + 17 | "Invalid Command" Subcode values: | + 18 | 0 | 1 | 1 | 1 | Invalid Message Length | + 19 | many | | | | Other "Invalid Command" subcodes values should be | + 20 | | | | | referenced as follows (note that this is combined | + 21 | | | | | with the status code): | + 22 | | | | | | + 23 | | | | | offset*256.+code | + 24 | | | | | | + 25 | | | | | where "offset" is the command message offset symbol for | + 26 | | | | | the field in error and "code" is the symbol for the | + 27 | | | | | "Invalid Command" status code. | + 28 +------+------+-------+------+---------------------------------------------------------+ + 29 | "Command Aborted" Subcode values: | + 30 | 0 | 2 | 2 | 2 | Subcodes are not used. | + 31 +------+------+-------+------+---------------------------------------------------------+ + 32 | "Unit-Offline" Subcode values: | + 33 | 0 | 3 | 3 | 3 | Unit unknown or online to another controller. | + 34 | 1 | 35 | 43 | 23 | No media mounted or drive disabled via switch setting | + 35 | 2 | 67 | 103 | 43 | Unit is inoperative | + 36 | 4 | 131 | 203 | 83 | Duplicate unit number | + 37 | 8 | 259 | 403 | 103 | Unit disabled by field service or diagnostic. | + 38 | 16 | 515 | 1003 | 203 | Exclusive Use | + 39 +------+------+-------+------+---------------------------------------------------------+ + 40 | "Unit-Available" Subcode values: | + 41 | 0 | 4 | 4 | 4 | Available | + 42 | 32 | 1028 | 2004 | 404 | Already In use | + 43 +------+------+-------+------+---------------------------------------------------------+ + 44 | "Media Format Error" Subcode values: | + 45 | 5 | 165 | 245 | A5 | Block mode device not formatted for tape operations. | + 46 +------+------+-------+------+---------------------------------------------------------+ + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-4 + 8 November 1987 + + + + 1 Table B-2: Status Only Subcode Values (cont.) + + 2 +------+---------------------+---------------------------------------------------------+ + 3 | Sub- | Code + Subcode | | + 4 | code +------+-------+------+ Status Subcode | + 5 | | Dec. | Oct. | Hex. | | + 6 +------+------+-------+------+---------------------------------------------------------+ + 7 | "Write Protected" Subcode values: | + 8 | 8 | 262 | 406 | 106 | Unit is Data Safety Write Protected | + 9 | 128 | 4102 | 10006 | 1006 | Unit is Software Write Protected | + 10 | 256 | 8198 | 20006 | 2006 | Unit is Hardware Write Protected | + 11 +------+------+-------+------+---------------------------------------------------------+ + 12 | "Compare Error" Subcode values - see Table B-3 | + 13 +------+------+-------+------+---------------------------------------------------------+ + 14 | "Data Error" Subcode values - see Table B-4 | + 15 +------+------+-------+------+---------------------------------------------------------+ + 16 | "Host Buffer Access Error" Subcode values - see Table B-5 | + 17 +------+------+-------+------+---------------------------------------------------------+ + 18 | "Controller Error" Subcode values - see Table B-6 | + 19 +------+------+-------+------+---------------------------------------------------------+ + 20 | "Drive Error" Subcode values - see Table B-7 | + 21 +------+------+-------+------+---------------------------------------------------------+ + 22 | "Formatter Error" Subcode values - see Table B-8 | + 23 +------+------+-------+------+---------------------------------------------------------+ + 24 | "BOT Encountered" Subcode values: | + 25 | 0 | 13 | 15 | D | Subcodes are not used | + 26 +------+------+-------+------+---------------------------------------------------------+ + 27 | "Tape Mark Encountered" Subcode values: | + 28 | 0 | 14 | 16 | E | Subcodes are not used | + 29 +------+------+-------+------+---------------------------------------------------------+ + 30 | "Record Data Truncated" Subcode values: | + 31 | 0 | 16 | 20 | 10 | Subcodes are not used. | + 32 +------+------+-------+------+---------------------------------------------------------+ + 33 | "Position Lost" Subcode values: | + 34 | 0 | 17 | 21 | 11 | Subcodes are not used. | + 35 +------+------+-------+------+---------------------------------------------------------+ + 36 | "Serious Exception" Subcode values: | + 37 | 0 | 18 | 22 | 12 | Subcodes are not used. | + 38 +------+------+-------+------+---------------------------------------------------------+ + 39 | "LEOT Encountered" Subcode values: | + 40 | 0 | 19 | 23 | 13 | Subcodes are not used. | + 41 +------+------+-------+------+---------------------------------------------------------+ + 42 | "Message from an internal diagnostic" Subcode values - see Table B-9 | + 43 +------+------+-------+------+---------------------------------------------------------+ + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-5 + 8 November 1987 + + + 1 Table B-3: "Compare Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 0 | 7 | 7 | 7 |*|*| Subcodes are not used. Note: the compare error | + 8 | | | | | | | code is only used as an event code when the error | + 9 | | | | | | | occurs during a read-compare or write-compare | + 10 | | | | | | | operation. | + 11 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 12 Table B-4: "Data Error" Status or Event Subcode Values + + 13 +------+---------------------+-+-+-----------------------------------------------------+ + 14 | Sub- | Code + Subcode |E|S| | + 15 | code +------+-------+------+V|T| Status or Event Subcode | + 16 | | Dec. | Oct. | Hex. | | | | + 17 +------+------+-------+------+-+-+-----------------------------------------------------+ + 18 | 0 | 8 | 10 | 8 |*|*| Long Gap Encountered | + 19 | 7 | 232 | 350 | E8 |*|*| Unrecoverable Read Error | + 20 | many | - | - | - |*|*| controller and/or driver/formatter type dependent | + 21 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 22 Table B-5: "Host Buffer Access Error" Status or Event Subcode Values + + 23 +------+---------------------+-+-+-----------------------------------------------------+ + 24 | Sub- | Code + Subcode |E|S| | + 25 | code +------+-------+------+V|T| Status or Event Subcode | + 26 | | Dec. | Oct. | Hex. | | | | + 27 +------+------+-------+------+-+-+-----------------------------------------------------+ + 28 | 0 | 9 | 11 | 9 | |*| Host Buffer Access error, cause not available. | + 29 | | | | | | | The controller was unable to access a host buffer | + 30 | | | | | | | to perform a transfer, but has no visibility into | + 31 | | | | | | | the cause of the error. | + 32 +------+------+-------+------+-+-+-----------------------------------------------------+ + 33 | 3 | 105 | 151 | 69 |*|*| Nonexistent memory error | + 34 +------+------+-------+------+-+-+-----------------------------------------------------+ + 35 | 4 | 137 | 211 | 89 |*|*| Host memory parity error | + 36 +------+------+-------+------+-+-+-----------------------------------------------------+ + 37 | 5 | 169 | 251 | A9 |*|*| Invalid page table entry | + 38 | | | | | | | (See UNIBUS/QBUS Storage Systems Port | + 39 | | | | | | | Specification for additional detail.) | + 40 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-6 + 8 November 1987 + + + + 1 Table B-5: "Host Buffer Access Error" Status or Event Subcode Values (cont.) + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | 6 | 201 | 311 | C9 |*|*| Invalid buffer name | + 8 | | | | | | | The key in the buffer name does not match the key | + 9 | | | | | | | in the buffer descriptor, the V bit in the buffer | + 10 | | | | | | | descriptor is clear, or the index into the Buffer | + 11 | | | | | | | Descriptor Table is too large. (See the BI Vax | + 12 | | | | | | | Port Specification for additional detail.) | + 13 +------+------+-------+------+-+-+-----------------------------------------------------+ + 14 | 7 | 233 | 351 | E9 |*|*| Buffer length violation | + 15 | | | | | | | The number of bytes requested in the TMSCP | + 16 | | | | | | | command exceeds the buffer length as specified | + 17 | | | | | | | in the buffer descriptor. (See the BI Vax | + 18 | | | | | | | Port Specification for additional detail.) | + 19 +------+------+-------+------+-+-+-----------------------------------------------------+ + 20 | 8 | 265 | 411 | 109 |*|*| Access control violation | + 21 | | | | | | | The access mode specified in the buffer | + 22 | | | | | | | descriptor is protected against by the PROT field | + 23 | | | | | | | in the PTE. (See the BI Vax Port Specification | + 24 | | | | | | | for additional detail.) | + 25 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 26 Table B-6: "Controller Error" Status or Event Subcode Values + + 27 +------+---------------------+-+-+-----------------------------------------------------+ + 28 | Sub- | Code + Subcode |E|S| | + 29 | code +------+-------+------+V|T| Status or Event Subcode | + 30 | | Dec. | Oct. | Hex. | | | | + 31 +------+------+-------+------+-+-+-----------------------------------------------------+ + 32 | 0 | 10 | 12 | A |-|-| Reserved for host detected command timeout error | + 33 | | | | | | | logging. This subcode is never reported by a | + 34 | | | | | | | controller. | + 35 +------+------+-------+------+-+-+-----------------------------------------------------+ + 36 | many | - | - | - |*|*| controller and/or drive/formatter type dependent | + 37 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + STATUS AND EVENT CODE DEFINITIONS Page B-7 + 8 November 1987 + + + 1 Table B-7: "Drive Error" Status or Event Subcode Values + + 2 +------+---------------------+-+-+-----------------------------------------------------+ + 3 | Sub- | Code + Subcode |E|S| | + 4 | code +------+-------+------+V|T| Status or Event Subcode | + 5 | | Dec. | Oct. | Hex. | | | | + 6 +------+------+-------+------+-+-+-----------------------------------------------------+ + 7 | many | - | - | - |*|*| controller and/or drive/formatter type dependent | + 8 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 9 Table B-8: "Formatter Error" Status or Event Subcode Values + + 10 +------+---------------------+-+-+-----------------------------------------------------+ + 11 | Sub- | Code + Subcode |E|S| | + 12 | code +------+-------+------+V|T| Status or Event Subcode | + 13 | | Dec. | Oct. | Hex. | | | | + 14 +------+------+-------+------+-+-+-----------------------------------------------------+ + 15 | many | - | - | - |*|*| controller and/or drive/formatter type dependent | + 16 +------+------+-------+------+-+-+-----------------------------------------------------+ + + + 17 Table B-9: "Message From An Internal Diagnostic" Event Only Subcode Values + + 18 +------+---------------------+---------------------------------------------------------+ + 19 | Sub- | Code + Subcode | | + 20 | code +------+-------+------+ Event Subcode | + 21 | | Dec. | Oct. | Hex. | | + 22 +------+------+-------+------+---------------------------------------------------------+ + 23 | many | - | - | - | controller and/or drive/formatter type dependent | + 24 +------+------+-------+------+---------------------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + MISCELLANEOUS TABLES Page C-1 + 8 November 1987 + + + 1 APPENDIX C + + 2 MISCELLANEOUS TABLES + + + 3 Table C-1: Tape Format Flag Values + + 4 +---------------------+--------------------------+-+--------------------------------------+ + 5 | Value | Preferred Code Mnemonic |N| | + 6 |-------+------+------+--------+-----------------+I| Tape Format Flag | + 7 | Dec. | Oct. | Hex. | 16 bit | 32 bit |S| | + 8 +-------+------+------+--------+-----------------+-+--------------------------------------+ + 9 | 255 | 377 | FF | TF.MSK | MSCP$M_TF_MASK | | Bitflag mask | + 10 | 256 | 400 | 100 | TF.COD | MSCP$K_TF_CODE | | Format code multiplier | + 11 +-------+------+------+--------+-----------------+-+--------------------------------------+ + 12 | 0 | 0 | 0 | TC.OLD | MSCP$K_TC_OLD | | Old value (See notes 1, 4) | + 13 | 256 | 400 | 100 | TC.9TR | MSCP$K_TC_9TRACK| | New "9 track" devices | + 14 | 512 | 1000 | 200 | TC.CTP | MSCP$K_TC_CTP |*| "TK50" compatible cart tapes (note 3)| + 15 | 768 | 1400 | 300 | TC.348 | MSCP$K_TC_3480 | | "IBM 3480" compatible cartridge tapes| + 16 | 1024 | 2000 | 400 | TC.W1 | MSCP$K_TC_W1 |*| "RV80" compatible write once cart. | + 17 +-------+------+------+--------+-----------------+----------------------------------------+ + 18 | Note: 1. The TC.OLD value is for backwards compatibility with existing products. New | + 19 | devices are prohibited from using the TC.OLD value. Products having media | + 20 | different from those associated with the above TC.xxx values must ECO this | + 21 | specification to include a new TC.xxx value for their media. Products having | + 22 | media identical to one of those associated with the above TC.xxx value must | + 23 | use that TC.xxx value. | + 24 | | + 25 | 2. Formats with an asterisk in the "NIS" column are considered "non-industry | + 26 | standard". Devices which utilize these formats thus need not support the | + 27 | "Reverse" command modifier on ACCESS, COMPARE HOST DATA, and READ commands. | + 28 | Whether or not a device supporting one of these formats supports the | + 29 | "Reverse" command modifier on the above commands must be documented in that | + 30 | device's functional specification (See section 3.3.1.1). | + 31 | | + 32 | 3. Devices that support this format may not follow the normal ABORT process for | + 33 | REPOSITION commands with the "Reverse" modifier set. See section 3.2.1.2. | + 34 | | + 35 | 4. Some devices that report a tape code of TC.OLD are considered to be | + 36 | equivalent to devices that report a tape code of TC.CTP with respect to notes | + 37 | 2 and 3 (see Table C-2). | + 38 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + MISCELLANEOUS TABLES Page C-2 + Table C-1: Tape Format Flag Values 8 November 1987 + + + 1 Table C-2: Tape Format Bitflag Values + + 2 +------+---------------------+--------------------------+---------------------------------+ + 3 | | Code + Bitflag |Preferred Bitflag Mnemonic| | + 4 | Bit- +-------+------+------+--------+-----------------+ Tape Format Bitflag | + 5 | flag | Dec. | Oct. | Hex. | 16 bit |32 bit (see note)| | + 6 +------+-------+------+------+--------+-----------------+---------------------------------+ + 7 | "OLD" bitflag values: | | | | + 8 | 0 | 1 | 1 | 1 | TF.800 | MSCP$x_TF_800 | NRZI 800 bpi | + 9 | 1 | 2 | 2 | 2 | TF.PE | MSCP$x_TF_PE | Phase Encoded 1600 bpi | + 10 | 2 | 4 | 4 | 4 | TF.GCR | MSCP$x_TF_GCR | Group Code Recording 6250 bpi | + 11 | 3 | 8 | 10 | 8 | TF.BLK | MSCP$x_TF_BLOCK | Cartridge Block Mode (note 3) | + 12 +------+-------+------+------+--------+-----------------+---------------------------------+ + 13 | "9TR" bitflag values: | | | | + 14 | 0 | 257 | 401 | 101 | TF.800 | MSCP$x_TF_800 | NRZI 800 bpi | + 15 | 1 | 258 | 402 | 102 | TF.PE | MSCP$x_TF_PE | Phase Encoded 1600 bpi | + 16 | 2 | 260 | 404 | 104 | TF.GCR | MSCP$x_TF_GCR | Group Code Recording 6250 bpi | + 17 +------+-------+------+------+--------+-----------------+---------------------------------+ + 18 | "CTP" bitflag values: | | | | + 19 | 0 | 513 | 1001 | 201 | TF.NOR | MSCP$x_TF_NORML | Normal (low) density | + 20 | 1 | 514 | 1002 | 202 | TF.BHD | MSCP$x_TF_BLKHD | High density | + 21 +------+-------+------+------+--------+-----------------+---------------------------------+ + 22 | "IBM 3480" bitflag values: | | | | + 23 | 0 | 769 | 1401 | 301 | TF.NOR | MSCP$x_TF_NORML | Normal density | + 24 +------+-------+------+------+--------+-----------------+---------------------------------+ + 25 | "W1" bitflag values: | | | | + 26 | 0 | 1025 | 2001 | 401 | TF.NOR | MSCP$x_TF_NORML | Normal density | + 27 +------+-------+------+------+--------+-----------------+---------------------------------+ + 28 | Notes: 1. The "x" in the 32 bit mnemonic for a bit flag will be "V" if the symbol is | + 29 | defined as a bit number (offset) or an "M" if defined as a mask. | + 30 | | + 31 | 2. The "Preferred Bitflag Mnemonic" is the mnemonic for the bitflag only. The | + 32 | "Code + Bitflag" values are the sum of the tape format flag from the previous | + 33 | table and the bitflag from this table. Thus, bitflags that have the same | + 34 | meaning and bit value for different tape formats have the same mnemonic | + 35 | (i.e., TF.800 for the TC.OLD and TC.9TR tape formats). | + 36 | | + 37 | 3. A code + bitflag value of TC.OLD + TF.BLK is equivalent to a code + bitflag | + 38 | value of TC.CTP + TF.NOR with respect to functional behavior of devices. | + 39 +-----------------------------------------------------------------------------------------+ + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + MISCELLANEOUS TABLES Page C-3 + Table C-2: Tape Format Bitflag Values 8 November 1987 + + + 1 Table C-3: Controller Specific Maximum Record Size + + 2 +----------------------------------------------------------+------------------------------+ + 3 | Controller Type | Maximum Record Size in Bytes | + 4 | | | + 5 +----------------------------------------------------------+------------------------------+ + 6 | U/Q Bus Direct Access Controllers | 64K (preferred) | + 7 | HSC50 | 64K | + 8 | TU81 | 64K-1 | + 9 | TK50 | 64K-1 | + 10 +----------------------------------------------------------+------------------------------+ + + + 11 Table C-4: Format Specific Long Gap Values + + 12 +-----------------------------------------+-----------------------------------------------+ + 13 | Encoding Format Descriptor | Log Gap Value | + 14 | | | + 15 +-----------------------------------------+-----------------------------------------------+ + 16 | Phase Encoding (PE) 1600 bpi | 25 linear feet | + 17 | Group Code Recording (GCR) 6250 bpi | 15 linear feet | + 18 | Cartridge Block Format | device dependent, see device spec for details | + 19 +-----------------------------------------+-----------------------------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REPOSITION COMMAND VARIATIONS Page D-1 + 8 November 1987 + + + 1 APPENDIX D + + 2 REPOSITION COMMAND VARIATIONS + + + + 3 NOTES + + + 4 1. Square brackets ([]) indicate optional setting. + + 5 2. An asterisk (*) indicates that the modifier setting or count field + 6 value is ignored by the controller due to an interdependence on the + 7 setting of another modifier or the value of the count fields. + + 8 3. See Section 5.10.3 specific information related to controller execution + 9 of combined basic functions. + + 10 4. Certain combinations of the repositioning functions, although + 11 permissible, are illogical since the result is always termination of + 12 the command with a status of BOT Encountered. + + + + 13 Table D-1: REPOSITION Command Variations + + 14 +------------------------------+----------------------------------------+--------+-------+ + 15 | | | | | + 16 | REPOSITION | Modifiers | Record | Tape | + 17 | Command +----------+-------+------+------+-------+ or | Mark | + 18 | Variation |Immediate |Detect |Object|Rewind|Reverse| Object | Count | + 19 | |Completion|LEOT |Count | | | Count | | + 20 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 21 | a. sequential no-operation | * | * | 0 | 0 | * | 0 | 0 | + 22 | | * | * | 1 | 0 | * | 0 | * | + 23 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 24 | a. rewind to BOT | 0 [1] | * | 0 | 1 | * | 0 | 0 | + 25 | | 0 [1] | * | 1 | 1 | * | 0 | * | + 26 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 27 | a. rewind to BOT | * | * | 1 | 1 | 0 | >0 | * | + 28 | b. skip "object count" | | | | | | | | + 29 | tape objects (both | | | | | | | | + 30 | records and tape marks) | | | | | | | | + 31 | in the forward | | | | | | | | + 32 | direction | | | | | | | | + 33 +------------------------------+----------+-------+------+------+-------+--------+-------+ + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REPOSITION COMMAND VARIATIONS Page D-2 + 8 November 1987 + + + + 1 Table D-1: REPOSITION Command Variations (cont.) + + 2 +------------------------------+----------------------------------------+--------+-------+ + 3 | | | | | + 4 | REPOSITION | Modifiers | Record | Tape | + 5 | Command +----------+-------+------+------+-------+ or | Mark | + 6 | Variation |Immediate |Detect |Object|Rewind|Reverse| Object | Count | + 7 | |Completion|LEOT |Count | | | Count | | + 8 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 9 | a. rewind to BOT | * | * | 1 | 1 | 1 | >0 | * | + 10 | b. attempt to skip "object | | | | | | | | + 11 | count" tape objects | | | | | | | | + 12 | (both records and tape | | | | | | | | + 13 | marks) in the reverse | | | | | | | | + 14 | direction | | | | | | | | + 15 | (See Note 4 above) | | | | | | | | + 16 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 17 | a. rewind to BOT | * | 0 [1] | 0 | 1 | 0 | 0 | >0 | + 18 | b. skip "tape mark count" | | | | | | | | + 19 | tape marks in the | | | | | | | | + 20 | forward direction | | | | | | | | + 21 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 22 | a. rewind to BOT | * | * | 0 | 1 | 1 | 0 | >0 | + 23 | b. attempt to skip "tape | | | | | | | | + 24 | mark count" tape marks | | | | | | | | + 25 | in the reverse | | | | | | | | + 26 | direction | | | | | | | | + 27 | (See Note 4 above) | | | | | | | | + 28 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 29 | a. rewind to BOT | * | 0 [1] | 0 | 1 | 0 | >0 | 0 | + 30 | b. skip "record count" | | | | | | | | + 31 | records in the forward | | | | | | | | + 32 | direction | | | | | | | | + 33 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 34 | a. rewind to BOT | * | * | 0 | 1 | 1 | >0 | 0 | + 35 | b. attempt to skip "record | | | | | | | | + 36 | count" records in the | | | | | | | | + 37 | reverse direction | | | | | | | | + 38 | (See Note 4 above) | | | | | | | | + 39 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 40 | a. rewind to BOT | * | 0 [1] | 0 | 1 | 0 | >0 | >0 | + 41 | b. skip "tape mark count" | | | | | | | | + 42 | tape marks in the | | | | | | | | + 43 | forward direction | | | | | | | | + 44 | c. skip "record count" | | | | | | | | + 45 | records in that same | | | | | | | | + 46 | direction | | | | | | | | + 47 +------------------------------+----------+-------+------+------+-------+--------+-------+ + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REPOSITION COMMAND VARIATIONS Page D-3 + 8 November 1987 + + + + 1 Table D-1: REPOSITION Command Variations (cont.) + + 2 +------------------------------+----------------------------------------+--------+-------+ + 3 | | | | | + 4 | REPOSITION | Modifiers | Record | Tape | + 5 | Command +----------+-------+------+------+-------+ or | Mark | + 6 | Variation |Immediate |Detect |Object|Rewind|Reverse| Object | Count | + 7 | |Completion|LEOT |Count | | | Count | | + 8 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 9 | a. rewind to BOT | * | * | 0 | 1 | 1 | >0 | >0 | + 10 | b. attempt to skip "tape | | | | | | | | + 11 | mark count" tape marks | | | | | | | | + 12 | in the reverse | | | | | | | | + 13 | direction | | | | | | | | + 14 | c. attempt to skip "record | | | | | | | | + 15 | count" records in that | | | | | | | | + 16 | same direction | | | | | | | | + 17 | (See Note 4 above) | | | | | | | | + 18 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 19 | a. skip "object count" | * | * | 1 | 0 | 0 | >0 | * | + 20 | tape objects in the | | | | | | | | + 21 | forward direction | | | | | | | | + 22 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 23 | a. skip "object count" | * | * | 1 | 0 | 1 | >0 | * | + 24 | tape objects in the | | | | | | | | + 25 | reverse direction | | | | | | | | + 26 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 27 | a. skip "tape mark count" | * | 0 [1] | 0 | 0 | 0 | 0 | >0 | + 28 | tape marks in the | | | | | | | | + 29 | forward direction | | | | | | | | + 30 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 31 | a. skip "tape mark count" | * | * | 0 | 0 | 1 | 0 | >0 | + 32 | tape marks in the | | | | | | | | + 33 | reverse direction | | | | | | | | + 34 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 35 | a. skip "record count" | * | 0 [1] | 0 | 0 | 0 | >0 | 0 | + 36 | records in the forward | | | | | | | | + 37 | direction | | | | | | | | + 38 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 39 | a. skip "record count" | * | * | 0 | 0 | 1 | >0 | 0 | + 40 | records in the reverse | | | | | | | | + 41 | direction | | | | | | | | + 42 +------------------------------+----------+-------+------+------+-------+--------+-------+ + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REPOSITION COMMAND VARIATIONS Page D-4 + 8 November 1987 + + + + 1 Table D-1: REPOSITION Command Variations (cont.) + + 2 +------------------------------+----------------------------------------+--------+-------+ + 3 | | | | | + 4 | REPOSITION | Modifiers | Record | Tape | + 5 | Command +----------+-------+------+------+-------+ or | Mark | + 6 | Variation |Immediate |Detect |Object|Rewind|Reverse| Object | Count | + 7 | |Completion|LEOT |Count | | | Count | | + 8 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 9 | a. skip "tape mark count" | * | 0 [1] | 0 | 0 | 0 | >0 | >0 | + 10 | tape marks in the | | | | | | | | + 11 | forward direction | | | | | | | | + 12 | b. skip "record count" | | | | | | | | + 13 | records in that same | | | | | | | | + 14 | direction | | | | | | | | + 15 +------------------------------+----------+-------+------+------+-------+--------+-------+ + 16 | a. skip "tape mark count" | * | * | 0 | 0 | 1 | >0 | >0 | + 17 | tape marks in the | | | | | | | | + 18 | reverse direction | | | | | | | | + 19 | b. skip "record count" | | | | | | | | + 20 | records in that same | | | | | | | | + 21 | direction | | | | | | | | + 22 +------------------------------+----------+-------+------+------+-------+--------+-------+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + WAIVERS AND EXCEPTIONS Page E-1 + 8 November 1987 + + + 1 APPENDIX E + + 2 WAIVERS AND EXCEPTIONS + + + 3 E.1 TU81 + + 4 E.1.1 "EOT Encountered" Status Subcode + + 5 Waiver: + + 6 Early serial number TU81 integrated controllers return + 7 "Success (subcode EOT Encountered)" status in the end message + 8 of all WRITE commands executed while the tape is positioned + 9 on the trailer side of the EOT marker. That status is only + 10 supposed to be returned when the EOT marker is encountered + 11 during the execution of a "write" type command. WRITE TAPE + 12 MARK and ERASE GAP commands operate properly, only the WRITE + 13 command is affected. + + + 14 Justification: + + 15 This waiver is required to allow the shipment of the first + 16 200 units to customers. The microcode fixes for these + 17 problems are extensive and would delay the shipments of TU81s + 18 for a quarter. + + 19 E.1.2 "Serious Exception" And "EOT Encountered" + + 20 Waiver: + + 21 "Serious exception" end message flag and "EOT encountered" + 22 are not reported in the end messages of ABORT, DETERMINE + 23 ACCESS PATHS, and GET COMMAND STATUS commands. + + + 24 Justification: + + 25 This waiver is required to allow the shipment of the first + 26 200 units to customers. The microcode fixes for these + 27 problems are extensive and would delay the shipments of TU81s + 28 for a quarter. + + 29 E.1.3 "Byte Count (Host Transfer)" On Read Reverse + + 30 Wavier: + + 31 The "byte count (host transfer)" end message field of reverse + 32 (i.e., "reverse" modifier set) COMPARE HOST DATA commands and + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + WAIVERS AND EXCEPTIONS Page E-2 + TU81 8 November 1987 + + + 1 reverse READ with compare after (i.e., "compare" modifier + 2 set) commands are erroneous under certain conditions. + + 3 The general problem is that the TU81 can not do a real read + 4 reverse. The TU81 emulates the read reverse by doing a + 5 series of position and read forwards. When attempting to do + 6 the host data compare operation the compare is taking place + 7 in the wrong direction. This causes the TU81 to flag the + 8 wrong byte in error if there are two or more errors. + + + 9 Justification: + + 10 This problem has little system impact because the command is + 11 not used by any DEC operating system. The command can be + 12 issued by a user program. In most cases the program is not + 13 interested in the byte in error, just the fact there was an + 14 error or not. + + 15 The change to conform to the specification is a major + 16 hardware and micro code change (the compare is done in + 17 hardware). The redesign effort would take at least one + 18 quarter. + + 19 The point is best summed up by the following quote from Jim + 20 Zahrobsky: "What is described in the specification is the + 21 ideal. Traditional usage shows that there is no clear need + 22 for devices to conform to that ideal (TE16 and TU77 do not + 23 meet the ideal. The TU78 on the other hand does)." The TU81 + 24 doesn't meet the ideal, but it does come very close. + + 25 Zahrobsky also went on to say that we will strive to meet the + 26 ideal on all future devices. + + 27 E.2 TK50 + + 28 E.2.1 Incorrect Command Processing While Position Lost + + 29 Waiver: + + 30 Whenever the TK50 is in the "Position Lost" state, it rejects + 31 further read/write/position commands until one of the + 32 following takes place: + + 33 o The tape is returned to BOT; + 34 o The tape unit enters the "Unit Offline" state; + 35 o The tape is unloaded via the AVAILABLE command. + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + WAIVERS AND EXCEPTIONS Page E-3 + TK50 8 November 1987 + + + 1 The intention of the TMSCP specification in the case of the + 2 "Position Lost" condition is to allow the host to attempt to + 3 recover positioning of the tape behind and/or ahead of the + 4 object where the "Position Lost" condition occurred. This + 5 implies that the host can issue any I/O or positioning + 6 command while the unit is in the "Position Lost" state and + 7 expect reasonable operation of those commands provided the + 8 unit is still able to read the tape (i.e., its read + 9 electronics are still in good shape). + + + 10 Justification: + + 11 Corrective action would have prevented FRS with MicroVAX II. + 12 This waiver only applies to early serial number TK50s. + + 13 E.2.2 COMPARE HOST DATA Error Reporting + + 14 Waiver: + + 15 While performing a COMPARE HOST DATA command, the TK50 will + 16 report a "Record Data Truncated" error subordinate to a + 17 "Compare" error. The operating systems indicated that this + 18 was not a major error but that it must be fixed. + + + 19 Justification: + + 20 Corrective action would have prevented FRS with MicroVAX II. + 21 This waiver only applies to early serial number TK50s. + + 22 E.2.3 Incorrect "Offline" Error Reporting + + 23 Wavier: + + 24 When the TK50 drive is powered off after the controller has + 25 been initialized the status reported is Offline (subcode "No + 26 Media Loaded"). + + + 27 Justification: + + 28 Corrective action would have prevented FRS with MicroVAX II. + 29 This waiver only applies to early serial number TK50s. + + 30 E.2.4 Progress Indicator Processing + + 31 Waiver: + + 32 The Progress Indicator stops indicating progress after 11 + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + WAIVERS AND EXCEPTIONS Page E-4 + TK50 8 November 1987 + + + 1 minutes and 20 seconds following the execution of the ERASE + 2 command with the "Immediate" qualifier set. One of the + 3 consequences of this is that 2/3 of the data may be left on + 4 the tape. Another consequence is that the host may flag the + 5 device as broken. All of the operating systems agreed that + 6 this is a problem that must be fixed. + + + 7 Justification: + + 8 Corrective action would have prevented FRS with MicroVAX II. + 9 This waiver only applies to early serial number TK50s. + + 10 E.2.5 Multiple Error Logs Reported + + 11 Waiver: + + 12 The TK50 returns individual error logs for each of the retry + 13 attempts when a "Long Gap Encountered" situation occurs at + 14 BOT. Also, the Event Code contained in the error log differs + 15 from the value reported in the command's end message. + + 16 These situations only occur at BOT since other tests perform + 17 correctly when positioned away from BOT. + + + 18 Justification: + + 19 Corrective action would have prevented FRS with MicroVAX II. + 20 This waiver only applies to early serial number TK50s. + + 21 E.2.6 Invalid "Records Skipped Count" + + 22 Waiver: + + 23 The "Records Skipped Count" field (P.RCSK) is set to all ones + 24 in the end message of a REPOSITION command that encounters a + 25 "Long Gap" condition. The value should be zero. The spec + 26 was ambiguous on this point. The operating systems indicated + 27 that this was not a major problem. + + + 28 Justification: + + 29 Corrective action would have prevented FRS with MicroVAX II. + 30 This waiver only applies to early serial number TK50s. + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + WAIVERS AND EXCEPTIONS Page E-5 + TK50 8 November 1987 + + + 1 E.2.7 Hardware Serial Number + + 2 Waiver: + + 3 Early TK50 controllers and drives do not implement a Hardware + 4 Serial Number that is unique to each component. + + + 5 Justification: + + 6 Corrective action would have prevented FRS with MicroVAX II. + 7 This waiver only applies to early serial number TK50s. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REVISION HISTORY Page F-1 + 8 November 1987 + + + 1 APPENDIX F + + 2 REVISION HISTORY + + + 3 F.1 Changes Since Version 1.6 + + 4 The following changes were made from TMSCP Version 1.6 to TMSCP + 5 Version 1.6.4: + + 6 The following approved ECOs to V1.6 were incorporated. + + 7 o TMSCP16-1 BOT and Tape Mark Encountered + 8 Clarification + 9 o TMSCP16-5 STI Formatter Error Log Changed + 10 o TMSCP16-6 Eliminate Command Aborted as SE Cause + 11 o TMSCP16-8 64kb Transfer ECO + 12 o TMSCP16-9 ONL and SUC Speed Field Clarification + 13 o TMSCP16-10 Expanded Transfer Error Log + 14 o TMSCP16-12 Byte Count Equals Zero is Invalid + 15 o TMSCP16-13 TMSCP Extension to Get Unit Status + 16 Command + 17 o TMSCP16-17 TU81 "EOT Encountered" Waiver + 18 o TMSCP16-19 TU81 Reverse Compare Byte Count Waiver + 19 o TMSCP16-21 Tape Caching + 20 o TMSCP16-22 "Non-industry standard" Read Reverse + 21 o TMSCP16-25 TK50 Maximum Record Length + 22 o TMSCP16-26 TK50 Various Temporary Waivers + 23 o TMSCP16-28 TK50 Hardware Serial Number + 24 o TMSCP16-29 CTP ABORT during REPOSITION + 25 o TMSCP16-31 REPOSITION Command Description + 26 Clarification + 27 o TMSCP16-32 Lengthy I/O Command Abort Clarification + 28 o TMSCP16-33 Asynchronous Command Completion + 29 Clarification + 30 o TMSCP16-34 Position Lost Error Handling + 31 Clarification + 32 o TMSCP16-36 Error Log Generation Clarification + 33 o TMSCP16-37 Media Format Error Status Code + 34 o TMSCP16-42 GET UNIT STATUS Modification + 35 o TMSCP16-43 Tape Format Flag Redefinition + 36 o TMSCP16-44 End Message Field Validation + 37 Clarification + 38 o TMSCP16-45 "Position" Field Clarification + 39 o TMSCP16-46 PEOT Redefinition + 40 o TMSCP16-47 "Position" Field Clarification + 41 o TMSCP16-49 TA90 Density Flag + 42 o TMSCP16-52 Sequential Command Clarification while + 43 Caching + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REVISION HISTORY Page F-2 + Changes Since Version 1.6 8 November 1987 + + + 1 o TMSCP16-56 "Position" Field Changes + 2 o TMSCP16-57 EOT Can Move + 3 o TMSCP16-58 TAPE TRANSFER ERRORS Errorlog Renamed + 4 o TMSCP16-60 Enhanced Write Error Recovery Changes + + + 5 The following approved ECOs to MSCP V1.2 were + 6 incorporated. + + 7 o MSCP12-2 Error Log Sequence Numbers + 8 o MSCP12-9 Reserve OPCODE Zero + 9 o MSCP12-16 Error Log Format Generalization + 10 o MSCP12-27 Read-Only Device Write Protect + 11 o MSCP12-34 Exclusive Access [Multi-Host] + 12 o MSCP12-35 ACCESS NON-VOLATILE MEMORY Command + 13 o MSCP12-39 TU81 Waiver Request + 14 o MSCP12-53 Diagnostic Opcodes + 15 o MSCP12-56 Multi-Host Flag Definition + 16 o MSCP12-57 Minor Errors in ECOs + + + 17 The following editorial changes were performed (on the + 18 original and ECO text): + + 19 o Table and "picture" formats changed to be more + 20 readable. + + 21 o Spelling and grammatical errors corrected. + + 22 o List and item formats changed to be consistent. + + 23 o List items were placed in alphabetical order. + + 24 o Wording changes were made to increase readability. + + + + 25 | F.2 Changes Since Version 1.6.4 + + 26 | The following changes were made from TMSCP Version 1.6.4 to TMSCP + 27 | Version 2.0.0: + + 28 | The following approved ECOs to V1.6 were incorporated. + + 29 | o TMSCP16-65 Position Lost Clarification + 30 | o TMSCP16-68 No Host Buffer Access Error for WTM + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N *** + Digital Equipment Corporation Confidential And Proprietary + Tape Mass Storage Control Protocol Version 2.0.0 + REVISION HISTORY Page F-3 + Changes Since Version 2.0.0 8 November 1987 + + + 1 | F.3 Changes Since Version 2.0.0 + + 2 | The following changes were made from TMSCP Version 2.0.0 to TMSCP + 3 | Version 2.0.2: + + 4 | The following approved ECOs to V2.0.0 were incorporated. + + + 5 | o TMSCP20-1 Discarding Read-Ahead Cache Contents + + 6 | o TMSCP20-4 Position Lost Terminology + + 7 | o TMSCP20-5 FLUSH Should Not Block Further Caching + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *** R E S T R I C T E D D I S T R I B U T I O N ***