Selective hard and soft rewrite

By classifying and selectively rewriting the encoded data blocks in the data storage system, the problem of over-rewriting at low signal-to-noise ratio operating points is solved, and higher data reliability and capacity utilization are achieved.

CN120092291APending Publication Date: 2025-06-03INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380074901.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-10-24
Filing Date
2023-09-21
Publication Date
2025-06-03

AI Technical Summary

Technical Problem

Existing data storage systems are prone to over-rewrite at low signal-to-noise operating points, resulting in increased capacity loss and data loss risks.

Method used

Rewrite overhead and reduce the risk of data loss by classifying encoded data blocks into hard rewrite classes, soft rewrite classes, and no rewrite classes, and selectively rewrite the rewrite areas of the media in order based on these categories.

Benefits of technology

Effectively reduces the overhead of rewriting in sequential access storage systems, while improving data reliability and capacity utilization, especially under low signal-to-noise ratio operating conditions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120092291A_ABST
    Figure CN120092291A_ABST
Patent Text Reader

Abstract

The present disclosure includes systems and methods for reducing rewrite overhead in sequential access storage systems. The method may include writing a dataset to a sequential access medium using a magnetic head, wherein the dataset includes a plurality of encoded data blocks; classifying each of the plurality of encoded data blocks on the sequential access medium into one of at least three write quality classes; and rewriting the encoded data block in a rewrite region of the sequential access medium based at least in part on the write quality class. In some embodiments, the at least three write quality classes may include a hard rewrite class that requires rewriting to prevent data loss, a soft rewrite class that requires but is not necessary, and a non-rewrite class that does not require or is not desired to rewrite.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] The present disclosure relates to data storage systems, and more particularly, to selective rewriting of codewords in a data storage system.

[0002] The development of the EDVAC computer system in 1948 is generally considered to be the beginning of the computer age. Since then, data processing systems (DPSs) have evolved into extremely complex devices. Today's DPSs typically include a combination of complex hardware and software components, applications, operating systems, processors, buses, memories, input / output devices, and the like. As semiconductor processing and computer architecture advancements have driven computer performance to increasingly higher levels, even more advanced computer software has been developed to take advantage of the higher performance of the hardware, resulting in today's computer systems being much more powerful than just a few years ago.

[0003] These increased capabilities have led to an explosion of data that is typically stored in non-volatile storage systems. A magnetic storage system is a type of non-volatile storage system in which a magnetic transducer reads data from and writes data to a magnetic recording medium. Data can be written to the magnetic recording medium by positioning the magnetic recording transducer above the location on the medium where the data is to be stored. The magnetic recording transducer can then generate a magnetic field that reversibly encodes the data into the magnetic medium. Subsequently, data can be read from the medium by positioning the magnetic reading transducer over the data location and then sensing the magnetic field originating from the magnetic medium. The read and write operations can be independently synchronized with the movement of the medium to ensure that data can be read from and written to the desired locations on the medium.

[0004] Over the years, tape storage has provided advantages in terms of cost and storage density compared to other storage technologies such as disk storage or solid-state storage. In tape storage, data can be encoded as data sets (DSs) onto a sequential access medium (e.g., a magnetic tape), where a DS typically refers to an internal physical data block on the tape. In turn, a "user data segment" typically refers to a data block that a user is interested in storing intact.

[0005] A cloud drive typically refers to a type of tape storage device in which user data segments are protected by some scheme external to the tape drive (e.g., error correction code (or "ECC") encoding, where different shards of ECC-encoded data are sent to different tapes, replicated copies of the data are sent to different tapes, etc.). Such protection schemes are typically designed to withstand a specified level of loss (e.g., the loss of "n" data blocks). Summary of the Invention

[0006] According to an embodiment of the present disclosure, a system includes:

[0007] A magnetic head and a controller communicatively coupled to the magnetic head. The controller may be adapted to write a data set to a sequential access medium using the magnetic head, the data set including a plurality of encoded data blocks. One or more controllers may also be adapted to classify the encoded data blocks into three or more write quality classes. One or more controllers may also be adapted to selectively rewrite one or more of the encoded data blocks in a rewrite region of the sequential access medium at least in part based on the write quality classes. In some embodiments, the three or more write quality classes include a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no-rewrite class for which no or no desirable rewriting is required.

[0008] According to an embodiment of the present disclosure, a method for reducing rewrite overhead in a sequential access storage system. The method may include writing a data set to a sequential access medium using a magnetic head, where the data set includes a plurality of encoded data blocks. The method may also include classifying each of the plurality of encoded data blocks on the sequential access medium into one of at least three write quality classes. The method may also include selectively rewriting the encoded data blocks in a rewrite region of the sequential access medium at least in part based on the write quality classes. In some embodiments, the at least three write quality classes may include a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no-rewrite class for which no or no desirable rewriting is required.

[0009] According to an embodiment of the present disclosure, a computer program product. The computer program product may include a computer-readable storage medium having program instructions embodied therewith. The program instructions may be executed by a device to cause the device to write a data set to a sequential access medium using a magnetic head, where the data set includes a plurality of encoded data blocks, classify each of the plurality of encoded data blocks on the sequential access medium into one of at least three write quality classes, and selectively rewrite the encoded data blocks in a rewrite region of the sequential access medium at least in part based on the write quality classes. In some embodiments, the at least three write quality classes may include a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no-rewrite class for which no or no desirable rewriting is required.

[0010] According to an embodiment of the present disclosure, an apparatus includes a controller and logic that is integrated with the controller, executable by the controller, or integrated with and executable by the controller. The logic may be configured to write a data set to a sequential access medium using a magnetic head, where the data set includes a plurality of encoded data blocks, classify each of the plurality of encoded data blocks on the sequential access medium into at least one of at least three write quality classes, and selectively rewrite the encoded data blocks in a rewrite region of the sequential access medium at least partially based on the write quality class. In some embodiments, the at least three write quality classes may include a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no rewrite class for which rewriting is not required or not desirable.

[0011] Any of these embodiments may be implemented in a magnetic data storage system such as a tape drive system, which may include one or more magnetic heads, a drive mechanism for passing a magnetic medium (e.g., a magnetic tape) past the magnetic heads, and a controller operatively coupled to the magnetic heads.

[0012] Other aspects of the present disclosure will become apparent from the following detailed description, which illustrates the principles of the present disclosure by way of example when taken in conjunction with the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The drawings included in this application are incorporated into and form a part of the specification. They illustrate embodiments of the present disclosure and, together with the specification, are used to explain the principles of the present disclosure. The drawings are only illustrative of certain embodiments and do not limit the present disclosure.

[0014] Figure 1A is a schematic diagram of a simplified tape drive system consistent with some embodiments.

[0015] Figure 1B is a schematic diagram of a tape cartridge consistent with some embodiments.

[0016] Figure 2A shows a side view of a flat lap, bi-directional, dual-module magnetic head consistent with some embodiments.

[0017] Figure 2B is taken from Figure 2A a tape bearing surface view taken along line 2B of

[0018] Figure 2C is taken from Figure 2B a detailed view taken along circle 2C of

[0019] Figure 2D is a detailed view of a partial tape bearing surface of a pair of modules.

[0020] Figure 3Partial tape bearing surface view of a magnetic head with a write-read-write configuration consistent with some embodiments.

[0021] Figure 4 Partial tape bearing surface view of a magnetic head with a read-write-read configuration consistent with some embodiments.

[0022] Figure 5 Representation of files and indexes stored on a magnetic tape consistent with some embodiments.

[0023] Figure 6 Diagram of a hierarchical data storage system consistent with some embodiments.

[0024] Figure 7 Illustrates an embodiment of a data processing system (DPS) suitable for use with a host system consistent with some embodiments.

[0025] Figure 8A Schematic diagram of a magnetic tape configured to store DS consistent with some embodiments.

[0026] Figure 8B Depicts an example rewrite list table consistent with some embodiments.

[0027] Figure 9 High-level block diagram showing an example of the data stream for a tape drive consistent with some embodiments.

[0028] Figure 10 High-level block diagram showing the allocation of incoming variable-length records to fixed-size DS before recording data on a tape, consistent with some embodiments.

[0029] Figure 11 High-level block diagram showing data of a sub-data set (SDS) organized into a two-dimensional data array consistent with some embodiments.

[0030] Figure 12 High-level block diagram showing the ECC code attached to the SDS data array consistent with some embodiments, where each row of the data array protected by the extended ECC is codeword interleaving (CWI).

[0031] Figure 13 Flowchart showing a method for reducing rewrite overhead in a sequential access storage system according to some embodiments.

[0032] Although the present invention may be subject to various modifications and alternative forms, its details have been shown by way of example in the drawings and will be described in detail. However, it should be understood that the intention is not to limit the present invention to the specific embodiments described. On the contrary, the present invention is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention. Detailed implementation manners

[0033] The following description is for the purpose of illustrating the general principles of the present invention and is not intended to limit the inventive concept claimed herein. In addition, the specific features described herein can be used in combination with other described features in each of various possible combinations and permutations.

[0034] Unless specifically defined otherwise herein, all terms should be given their broadest possible interpretation, including the meanings implied in the specification and understood by those skilled in the art and / or defined in dictionaries, treatises, etc. Additionally, it must be noted that, as used in the specification and the appended claims, the singular forms "a", "an", and "the" include plural referents unless otherwise stated.

[0035] A common application of tape storage is for backup and archival storage of data "records" (which can be data blocks of variable size). Typically, a host sends records to / receives records from a tape drive. The tape drive, being a sequential storage device, maps the records into data sets (DSs) which are written to / read from the tape medium. And a DS generally refers to the internal format of the drive for the data on the tape medium.

[0036] When accessing a DS during read-back, data archival operations typically dictate a high level of reliability. One technique that helps provide such high reliability is the read-while-write operation. During the read-while-write operation, error-correction-coded (ECC) protected data segments of faults and / or potential faults (hereinafter referred to as fault "codeword interleaving" or "CWI") can be stored in a buffer and then rewritten to the medium at the end of the data set (DS) to ensure that the data is written correctly during the write process. This feature may be desirable as it can significantly improve the reliability of the write operation. In some embodiments, four-way interleaved data segments (or "CWI-4") can be used, and approximately 3% of each tape is reserved for such rewriting. In such embodiments, if the rewriting exceeds the 3% capacity reservation, the medium will not achieve the full-listed capacity.

[0037] One way to increase the capacity of a storage medium is to lower its signal-to-noise ratio (SNR) operating point. However, at low SNR operating points, such as those specified in many "cloud tape drives", the random byte error rate can increase rapidly, resulting in a large number of "C1" codewords (e.g., having N 1 = 240 and K 1= a Reed - Solomon codeword of 228 bytes) has errors in seven or more bytes and is thus uncorrectable in the "read - while - write" mode. Additionally, since the rewrite unit is typically CWI interleaved, an even larger number of C1 CWs are marked for rewrite, which typically results in an excessive number of rewrites.

[0038] One possible solution for achieving a low SNR, high - capacity operating point is to turn off "rewrite" completely. However, completely disabling rewrite has serious potential consequences (e.g., data loss due to uncorrectable DS) or very high overhead (e.g., due to the DS being repeated in its entirety), as many conventional implementations rely on rewrite to avoid uncorrectable data sets (e.g., handling "stripe errors" caused by off - track / stop - write events). Alternative possible low - SNR solutions may allow rewrite, but since relatively weak C1 codes are typically used to perform read - while - write verification to verify write quality, low - SNR operating conditions can quickly lead to an excessive number of rewrite attempts.

[0039] Accordingly, one aspect of the present disclosure is a selective rewrite method that mitigates capacity loss due to excessive rewrite (e.g., in a cloud drive) and better utilizes the potential gain from iterative error - correcting code (ECC) decoding. In this way, some embodiments can use iterative ECC decoding to successfully decode a sub - data set (SDS) in many cases, even at a C1 uncorrectable rate of 50% or higher.

[0040] Some embodiments can effectively and significantly reduce rewrite overhead (e.g., for a cloud drive), while reducing the risk of data loss by identifying three different classes (or categories) of rewrite, e.g., by classifying rewrite as the following and / or differentiating between the following:

[0041] Class A) Forced / critical rewrite, also known as "hard" rewrite.

[0042] Class B) Optional / configurable rewrite, also known as "soft" rewrite.

[0043] Class C) Rewrite not required.

[0044] In an example embodiment, the "rewritten unit" is the CWI, and all data is equal. CWIs that have not been fully written and / or remained unvalidated during the first write (e.g., due to a transient stop-write event) can be classified as hard rewrites. In this embodiment, CWIs classified as hard rewrites will always be rewritten to avoid data loss. In contrast, CWIs that have been validated but do not meet the desired write quality metric can be classified as soft rewrites. Soft rewrite CWIs may or may not be rewritten, depending on additional criteria or algorithms, such as the remaining space in the rewrite region, the specified reliability operating point, etc. Other embodiments include, but are not limited to, configurable parameters (N max ) for rewriting up to the CWI per DS, sorting and rewriting soft rewrites by additional quality metrics / thresholds (such as, for example, the number of RLL decoding errors in the CWI or the SNR (signal-to-noise ratio) during detection). CWIs written and verified with high write quality do not need to be rewritten and can thus be classified as class C (i.e., no rewrite required) in some embodiments.

[0045] Thus, one aspect of some embodiments is data stream expansion, which allows for a potentially significant reduction in rewrite overhead (e.g., for cloud drives), but at the same time reduces the likelihood of data loss. These technical benefits can be achieved by measuring the write quality metric for each CWI and then using it to classify the CWI as a hard rewrite, a soft rewrite, or no rewrite. Hard rewrites must be performed by the system, while soft rewrites may or may not be performed, depending on factors such as the space in the rewrite region, the importance of the data, predefined service commitments, etc.

[0046] Some embodiments can identify and distinguish more than three classes of rewrites, such as four or five categories. Other embodiments can assign a priority score to the rewrite of a particular CWI and then prioritize the rewrite of the CWI based on that score. The lower the estimated quality / reliability of the CWI, the higher the priority score for the rewrite. Other embodiments can identify subclasses of rewrites and / or prioritize subclasses of rewrites. For example, in some embodiments, the b) "soft" rewrite class can be divided into multiple categories, such as:

[0047] Subclass B1): More than 20 RLL decoding errors;

[0048] Subclass B2): 6 to 20 RLL decoding errors;

[0049] Subclass B3): Less than 6 RLL decoding errors.

[0050] In these embodiments, subclass B1 can be given a higher priority than subclass B2, and subclass B2 has a higher priority than subclass B3.

[0051] One technical advantage of some embodiments is that they can achieve relatively low SNR operating points while still providing a relatively high degree of data reliability, particularly in embodiments that utilize both row and column parity and / or in embodiments where a significant percentage of the errors are read-back errors. In particular, some embodiments can mitigate excessive rewriting caused by random byte errors by defining one or more predetermined thresholds (e.g., "threshS" and "threshH" described in more detail below), selecting a high value for "threshS" and / or preventing data loss due to associated byte errors, and stopping writes / dead tracking by selecting a low value for "threshH". Another technical advantage of some embodiments is that they can effectively and significantly reduce rewrite overhead (e.g., by not performing rewrites classified as soft rewrites), while also mitigating the risk of data loss (e.g., by always performing rewrites classified as hard rewrites).

[0052] One feature and advantage of some embodiments is that they can enable an administrator to select a desired mode among a wide range of operating conditions and / or quality of service, including but not limited to relatively high reliability, medium capacity mode (e.g., maximizing a reliability metric), and relatively high capacity, medium reliability mode (e.g., maximizing a capacity metric). This feature and advantage can be achieved by tuning and / or changing one or more of the predetermined thresholds (i.e., threshS and threshH) described below.

[0053] Figure 1A A simplified tape drive 100 of a tape-based data storage system consistent with some embodiments of the present disclosure is shown. Although Figure 1A a particular embodiment of the tape drive is shown, it should be noted that the aspects and methods described herein can be implemented in the context of any type of tape drive system.

[0054] As shown, a tape supply cartridge 120 and a take-up reel 121 are provided to support a tape 122, which is also referred to as a magnetic tape, magnetic recording tape, tape medium, etc. One or more of the reels can form part of a removable cartridge and are not necessarily part of the tape drive 100. The tape drive, as Figure 1A shown, can also include one or more drive motors to drive the supply cartridge 120 and the take-up reel 121, thereby moving the tape 122 over any type of head 126. Such a head can include an array of read transducers (also referred to as readers), write transducers (also referred to as writers in the art), or both.

[0055] The guide member 125 guides the tape 122 through the tape head 126. Such a tape head 126 is in turn coupled to the controller 128 via a cable 130. The controller 128 may be or may include a processor and / or any logic for controlling any subsystem of the drive 100. For example, the controller 128 may control head functions such as servo following, data writing, data reading, and the like. The controller 128 may include at least one servo channel and at least one data channel, each channel including data stream processing logic configured to process and / or store information to be written to and / or read from the tape 122. In various embodiments, the controller 128 may operate under the logic disclosed herein and may thus be implemented as an application specific integrated circuit (“ASIC”), or implemented using a general purpose processor, for any description of the tape drive included herein. In some embodiments, the controller 128 may be coupled to a memory 136, which may store instructions executable by the controller 128. Additionally, the controller 128 may be configured and / or programmable to execute or control some or all of the methods presented herein. For example, the controller 128 may be configured to perform various operations via logic programmed into one or more chips, modules, and / or blocks; software, firmware, and / or other instructions available to one or more processors; and so on, and combinations thereof.

[0056] The cable 130 may include read / write circuitry to send data to the head 126 for recording on the tape 122 and to receive data read by the head 126 from the tape 122. The actuator 132 may control the position of the tape head 126 relative to the tape 122.

[0057] An interface 134 may also be provided for communication between the tape drive 100 and a host (internal or external) to send and receive data, and to control the operation of the tape drive 100 and convey the status of the tape drive 100 to the host.

[0058] Figure 1B An exemplary tape cartridge 150 consistent with some embodiments is shown. Such a tape cartridge 150 may be used with a system such as Figure 1A shown. As shown, the tape cartridge 150 includes a housing 152, a tape 122 within the housing 152, and a non-volatile memory 156 coupled to the housing 152. In some embodiments, the non-volatile memory 156 may be embedded inside the housing 152, as Figure 1BAs shown. In other embodiments, the non-volatile memory 156 may be attached to the inside or outside of the housing 152 without modifying the housing 152. For example, the non-volatile memory 156 may be embedded in the self-adhesive label 154. In some embodiments, the non-volatile memory 156 may be a solid-state (e.g., flash) memory device, a read-only memory (ROM) device, etc., embedded or coupled to the inside or outside of the tape cartridge 150. The non-volatile memory may be accessed by the tape drive and tape operating software / drive software and / or another device.

[0059] As an example, Figure 2A A side view of a flat-lap, bi-directional, dual-module magnetic head 200 consistent with some embodiments is shown. As shown, the head includes a pair of bases 202, each base 202 equipped with a module 204 and fixed relative to each other at a small angle α. The bases may be "U-shaped beams" adhesively joined together. Each module 204 includes a substrate 204A and an enclosure 204B having a thin film portion, commonly referred to as a "gap", in which a read transducer and / or a write transducer 206 are formed. In use, the tape 208 moves over the module 204 along the media (tape) bearing surface 209 in the manner shown for reading and writing data on the tape 208 using the read transducer and the write transducer. In some embodiments, the wrap angles θ at the edges where the tape 208 enters and exits the flat media support surface 209 may each be between about 0.1 degrees and about 3 degrees.

[0060] The substrate 204A may be made of a wear-resistant material such as ceramic. The enclosure 204B may be made of the same or similar ceramic as the substrate 204A.

[0061] The read transducer and the write transducer may be arranged in a piggyback or merged configuration. An example piggyback configuration includes a (magnetic induction) write transducer on top (or below) of a (magnetically shielded) read transducer (e.g., a magnetoresistive reader, etc.), where the poles of the write transducer and the shield of the read transducer are typically separate. An exemplary merged configuration includes a read head shield in the same physical layer as one write pole (thus, "merged"). The read transducer and the write transducer may also be in a staggered configuration. Alternatively, each channel array may be only a read transducer or a write transducer. Any of these arrays may include one or more servo readers for reading servo data on the media.

[0062] Figure 2B Shown from Figure 2A The tape bearing surface 209 of one of the modules 204 taken along line 2B. The representative tape 208 is shown in dashed lines. The module 204 is depicted as being long enough to support the tape as the head steps and / or moves between data tapes.

[0063] The data bands are confined between the servo tracks 210. Each data band may include a plurality of data tracks, such as 1024 data tracks (not shown). During read / write operations, the read transducer and / or the write transducer 206 is positioned at a specific track location within one of the data bands. An external reader (sometimes referred to as a servo reader) reads the servo tracks 210. The signals from the servo reader are in turn used to keep the read transducer and / or the write transducer 206 aligned with a specific track group during read / write operations.

[0064] In this example, the tape 208 includes from 4 to 32 data bands, for example, having 16 data bands and 17 servo tracks 210, as Figure 2B shown, on a half-inch wide tape 208. Other embodiments may use, for example, four data bands (and thus five servo bands) on a half-inch wide tape, and each data band stores two thousand or more tracks.

[0065] Figure 2C Depicted are a plurality of read transducers and / or write transducers 206 formed in the gap 218 on the module 204 in the circle 2C of Figure 2B . As Figure 2C shown, the array of read transducers and write transducers 206 includes, for example, 16 write transducers 214, 16 read transducers 216, and two servo readers 212, although the number of elements may vary. Other example methods include 8, 16, 32, 40, and 64 active read transducers and / or write transducers 206 per array, and optionally a staggered design with an odd number of read transducers or write transducers (such as 17, 25, 33, etc.). Example methods include 32 read transducers per array and / or 32 write transducers per array, where the actual number of transducer elements may be greater, such as 33, 34, etc. A plurality of simultaneously operating transducers may allow the tape to travel at a moderate speed while maintaining a high data transfer rate. A lower speed may be desirable to reduce mechanical difficulties from speed-induced tracking.

[0066] Although the read transducers and write transducers may be arranged in a back-to-back configuration as Figure 2C shown, the read transducers 216 and the write transducers 214 may also be arranged in other configurations, such as a staggered configuration. In other embodiments, each array of read transducers and / or write transducers 206 may be only read transducers or write transducers, and the array may include one or more servo readers 212. As Figures 2A to 2C shown, each module 204 may include a set of complementary read transducers and / or write transducers 206 to allow bidirectional reading and writing, read-while-write capability, backward compatibility, etc.

[0067] Figure 2D Shows a partial tape-bearing surface view of complementary modules of a magnetic head 200 consistent with some embodiments. In Figure 2D , each module has a plurality of read / write (R / W) pairs formed in a back-to-back configuration on a common substrate 204A and an optional electrical insulation layer 236. The write transducer 214 and the read transducer 216 are aligned parallel to the expected direction of travel of the tape medium to form an R / W pair, illustrated by the R / W pair 222. Note that the expected direction of tape travel is sometimes referred to herein as the direction of tape travel, and such terms may be used interchangeably. This direction of tape travel can be inferred from the design of the system, e.g., by examining the guides; additionally, in a system operable for bidirectional reading and / or writing, the directions in which the tape travels in the two directions can be parallel, and thus, the two directions can be considered equivalent to each other.

[0068] In some embodiments, there may be a number of R / W pairs 222, such as 8, 16, 32, etc. Figure 2D The R / W pairs 222 in are shown linearly aligned in a direction generally perpendicular to the direction of tape travel across them. However, these pairs can also be diagonally aligned, etc. The servo reader 212 can be positioned outside the array of R / W pairs.

[0069] In some embodiments, the magnetic tape medium can be moved in the forward or reverse direction as indicated by the arrow 220. The magnetic tape medium and the head assembly 200 can operate in a transducer relationship. The head assembly 200 includes two thin film modules 224 and 226 of substantially the same structure.

[0070] The modules 224 and 226 can be joined together with a space therebetween in their enclosure 204B (partially shown) to form a single physical unit, thereby providing a write-and-read-while-write capability by activating the write transducer of the leading module and the read transducer of the trailing module aligned parallel to the direction in which the tape travels relative to it. When constructing the modules 224, 226 of the magnetic head 200, layers can be formed in a gap 218 that can be generated, for example, above a conductive substrate 204A (partially shown) of aluminum-titanium-carbon. For the R / W pair 222, typically in the following order: an insulation layer 236; a first shield 232, which includes a ferroalloy, such as NiFe (e.g., ∼80 / 20 at% NiFe, also known as permalloy), cobalt zirconium tantalum (CZT), or aluminum iron silicon (Sendust); a sensor 234; a second shield 238, typically a nickel-iron alloy (e.g., permalloy); a first write pole 228 and a second write pole 230; and a coil (not shown). The sensor can be any device suitable for sensing data tracks on a magnetic medium, including but not limited to magnetoresistive (MR) sensors, giant magnetoresistive (GMR) sensors, anisotropic magnetoresistive (AMR) sensors, tunneling magnetoresistive (TMR) sensors, etc.

[0071] The first write pole 228 and the second write pole 230 can be made of a high magnetic moment material such as cobalt-iron. Note that these materials are provided only as examples, and other materials can be used. There can be additional layers such as an insulating layer between the shield and / or the magnetic pole tips and an insulating layer surrounding the sensor. Illustrative materials for insulation include alumina and other oxides, insulating polymers, etc.

[0072] The configuration of the leading head 126 according to one method includes a plurality of modules, such as three or more in some embodiments. In a write-read-write (W-R-W) head, the external module for writing is located alongside one or more internal modules for reading. Referring Figure 3 to, a W-R-W configuration is shown, where the external modules 252, 256 can each include an array of one or more write transducers 260. Figure 3 The internal module 254 of can include an array of one or more read transducers 258 with a similar configuration. Variations of the multi-module head include but are not limited to R-W-R heads ( Figure 4 ), R-R-W heads, W-W-R heads, etc. In other variations, one or more of the modules can have a read / write pair of transducers. Additionally, there can be more than three modules. In another method, two outer modules can be located alongside two or more inner modules, e.g., in a W-R-R-W, R-W-W-R arrangement, etc. For simplicity of illustration, the W-R-W head is mainly used herein to illustrate the method of the present disclosure, and the embodiments of the present disclosure can be applied to configurations other than the W-R-W configuration.

[0073] Advantageously, when the tape runs over the module, the tape passes close enough to the magnetic transducers on the module such that reading and / or writing can be effectively performed with a low error rate, for example.

[0074] The magnetic tape can be stored in a tape cartridge, which in turn can be stored in a storage slot etc. within a data storage repository. The tape cartridges can be stored in the library such that they can be accessed for physical retrieval. In addition to the magnetic tape and the tape cartridges, the data storage repository can also include a data storage drive for storing data to and / or retrieving data from the magnetic tape. Further, the tape library and the components included therein can implement a file system that enables access to the magnetic tape and the data stored thereon.

[0075] A file system can be used to control how data is stored in and retrieved from memory. Thus, a file system can include the processes and data structures that an operating system uses to keep track of files in memory (e.g., the way files are organized in memory). The Linear Tape File System (LTFS) is an example format that can be implemented in a library to enable access to files on a compatible tape. It should be understood that the various methods herein can be implemented with a wide range of file system formats. However, for purposes of providing context and solely to assist the reader, some of the methods below will be described with reference to the LTFS file system format. This is done by way of example only and should not be considered a limitation on the scope of the disclosure.

[0076] A cartridge can be "loaded" by inserting it into a tape drive, and can be "unloaded" by removing the cartridge from the tape drive. Once loaded into the tape drive, the tape in the cartridge can be "threaded" through the drive by physically pulling the tape (the magnetic recording portion) out of the cartridge and passing it over the heads of the tape drive. Additionally, the tape can be attached to a take-up reel (e.g., see 121 above Figure 1A to move the tape over the heads.

[0077] Once threaded through the tape drive, the tape in the cartridge can be "mounted" by reading the metadata on the tape and bringing the tape into a state where LTFS can use the tape as a component of the file system. Conversely, to "dismount" the tape, metadata can first be written to the tape (e.g., as an index), after which the tape can be removed from the state where LTFS is permitted to use the tape as a component of the file system. The tape can then be "unthreaded". To unthread the tape, the tape can be detached from the take-up reel and physically placed back inside the cartridge again. Even after the tape has been unthreaded, e.g., waiting for another read and / or write request, the cartridge can remain loaded in the tape drive. However, in other embodiments, the cartridge can be unloaded from the tape drive when the tape is unthreaded, e.g., as described above.

[0078] Magnetic tape is a sequential access medium. Thus, new data is written to the tape by appending it to the end of the previously written data. Typically, when data is recorded on a tape that has only one partition, metadata (e.g., allocation information) can be continuously appended to the end of the previously written data because it is updated frequently and accordingly rewritten to the tape. As a result, when the tape is first mounted, the last information is read in order to access the most recent copy of the metadata corresponding to the tape. However, this can introduce a significant amount of latency during the process of mounting a given tape.

[0079] To overcome this latency caused by single-partitioned tape media, the LTFS format includes a tape that is divided into two partitions, which include an index partition and a data partition. The index partition can be configured to record metadata (meta-information), such as file allocation information (index), while the data partition can be configured to record the body of the data, such as the data itself.

[0080] Turning now Figure 5 , a representation diagram of files and indexes stored on a tape consistent with some embodiments is shown. In Figure 5 , the tape 500 has an index partition 502 and a data partition 504. As shown, data files and indexes are stored on the tape. The LTFS format may be desirable because it allows index information to be recorded in the index partition 502 at the start of the tape 506.

[0081] When the index information is updated, it can be rewritten over the previous version of the index information, allowing the currently updated index information to be accessible at the start of the tape in the index partition. According to Figure 5 the specific example embodiment shown in, the latest version of the metadata index 3 is recorded in the index partition 502 at the start of the tape 506. In contrast, all three versions of the metadata indexes 1, 2, 3, as well as data files A, B, C, D, are recorded in the data partition 504 of the tape. Although indexes 1 and 2 are old (e.g., obsolete) indexes, since information is written to the tape by appending the information to the end of the previously written data as described above, these old indexes, indexes 1, 2, remain stored in the data partition 504 of the tape 500 without being rewritten.

[0082] Depending on the desired method, the metadata can be updated the same or differently in the index partition 502 and / or the data partition 504. In some embodiments, the metadata of the index and / or data partitions 502, 504 can be updated in response to the tape being ejected, such that the index can be quickly read from the index partition when the tape is installed again. The metadata can also be written to the data partition 504, so the tape can be installed using the metadata recorded in the data partition 504, for example, as a backup option.

[0083] According to one non-limiting example, the Linear Tape File System Library Edition (LTFS LE) can be used to provide the function of writing indexes to the data partition when the user explicitly instructs the system to do so or at a time specified by a predetermined period (which can be set by the user, for example, such that data loss in the event of a sudden power outage can be mitigated). LTFS LE in turn generally refers to a multi-drive variant of LTFS that presents each cartridge in the library as a subdirectory in the LTFS file system.

[0084] Now referring toFigure 6 , shows a hierarchical data storage system 600 consistent with some embodiments. Note that, according to various methods, Figure 6 some of the elements shown in can be implemented as hardware and / or software. The storage system 600 can include a storage system manager 612 for communicating with a plurality of media and / or drives on at least one higher storage layer 602 and at least one lower storage layer 606. The higher storage layer 602 can include one or more random access and / or direct access media 604, such as hard disks in a hard disk drive (HDD), non-volatile memory (NVM), solid state memory in a solid state drive (SSD), flash memory, SSD arrays, flash arrays, etc. The lower storage layer 606 can include one or more lower performance storage media 608, including sequential access media, such as magnetic tape in a tape drive and / or optical media, slower access HDDs, slower access SSDs, etc. One or more additional storage layers 616 can include any combination of storage media desired by the designers of the system 600. Additionally, any one of the higher storage layer 602 and / or the lower storage layer 606 can include a certain combination of storage devices and / or storage media.

[0085] The storage system manager 612 can communicate with the drives and / or storage media 604, 608 on the higher storage layer 602 and the lower storage layer 606 via a network 610 (such as a storage area network (SAN), as Figure 6 shown) or some other suitable network type. The storage system manager 612 can also communicate with one or more host systems (see Figure 7 ) via a host interface 614, which may or may not be part of the storage system manager 612. The storage system manager 612 and / or any other components of the storage system 600 can be implemented in hardware and / or software and can utilize a processor (not shown) for executing commands of types known in the art, such as a central processing unit (CPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc. Of course, any arrangement of the storage system can be used, as will be apparent to those skilled in the art upon reading this specification.

[0086] In some embodiments, the storage system 600 may include any number of data storage layers and may include the same or different storage media within each storage layer. For example, each data storage layer may include the same type of storage media, such as HDDs, SSDs, sequential access media (tape in a tape drive, optical disc in an optical disc drive, etc.), direct access media (CD-ROM, DVD-ROM, etc.), or any combination of media storage types. In one non-limiting example, the higher storage layer 602 may include mostly SSD storage media for storing data in a higher performance storage environment, and the remaining storage layers including the lower storage layer 606 and the additional storage layer 616 may include any combination of SSDs, HDDs, tape drives, etc. for storing data in a lower performance storage environment. In this way, data that is accessed more frequently, has a higher priority, requires faster access, etc. can be stored in the higher storage layer 602, while data that does not have one of these attributes can be stored in the additional storage layer 616, including the lower storage layer 606.

[0087] According to some methods, a storage system (such as storage system 600) may include logic configured to receive a request to open a data set, logic configured to determine whether the requested data set is stored in multiple associated parts in the lower storage layer 606 of the hierarchical data storage system 600, logic configured to move each associated part of the requested data set to the higher storage layer 602 of the hierarchical data storage system 600, and logic configured to assemble the requested data set from the associated parts on the higher storage layer 602 of the hierarchical data storage system 600.

[0088] Figure 7 An embodiment of a data processing system (DPS) 700 suitable for use with a host system is shown that is consistent with some embodiments. In some embodiments, the DPS 700 is implemented as a personal computer; a server computer; a portable computer, such as a laptop or notebook computer, a PDA (personal digital assistant), a tablet computer, or a smart phone; a processor embedded in a larger device such as an automobile, an airplane, a teleconferencing system, an appliance; a smart device; or any other suitable type of electronic device. Additionally, there may be components different from those shown Figure 7 in or in addition to those shown Figure 7 and the number, type, and configuration of these components may vary. Additionally, Figure 7 only representative major components of the DPS 700 are depicted and the individual components may have a greater complexity than that represented Figure 7 in.

[0089] Figure 7The data processing system 700 therein includes a plurality of central processing units 710a - 710d (collectively referred to herein as processor 710 or CPU 710) connected to a memory 712, a mass storage interface 714, a terminal / display interface 716, a network interface 718, and an input / output ("I / O") interface 720 via a system bus 722. The mass storage interface 714 in this embodiment connects the system bus 722 to one or more mass storage devices, such as a direct access storage device 740, a universal serial bus ("USB") storage device 741, or a read / write optical disc drive 742. The network interface 718 allows the DPS 700 to communicate with other DPS 700s via a communication medium 706. The memory 712 also contains an operating system 724, a plurality of application programs 726, and program data 728.

[0090] Figure 7 The embodiment of the data processing system 700 therein is a general - purpose computing device. Thus, the processor 710 can be any device capable of executing program instructions stored in the memory 712 and can itself be composed of one or more microprocessors and / or integrated circuits. In this embodiment, the DPS 700 contains multiple processors and / or processing cores, as in a typical larger and more capable computer system; however, in other embodiments, the computing system 700 can include a single - processor system and / or a single processor designed to emulate a multiprocessor system. Additionally, the processor 710 can be implemented using multiple heterogeneous data processing systems 700, where a main processor co - exists with auxiliary processors on a single chip. As another illustrative example, the processor 710 can be a symmetric multiprocessor system containing multiple processors of the same type.

[0091] When the data processing system 700 starts up, the associated processor(s) 710 initially execute the program instructions that make up the operating system 724, which manages the physical and logical resources of the DPS 700. These resources include the memory 712, the mass storage interface 714, the terminal / display interface 716, the network interface 718, and the system bus 722. Like the processor(s) 710, some embodiments of the DPS 700 can utilize multiple system interfaces 714, 716, 718, 720 and buses 722, and the multiple system interfaces 714, 716, 718, 720 and buses 722 can in turn each include their own separate, fully - programmed microprocessors.

[0092] Instructions for operating systems, applications, and / or programs (collectively referred to as "program code," "computer-usable program code," or "computer-readable program code") may initially be located in mass storage devices 740, 741, 742, which communicate with processor 710 via system bus 722. The program code in different embodiments may be embodied on different physical or tangible computer-readable media, such as system memory 712 or mass storage devices 740, 741, 742. In Figure 7 the illustrative example in, the instructions are stored in a functional form in a persistent storage device on direct access storage device 740. These instructions are then loaded into memory 712 for execution by processor 710. However, the program code may also be in a functional form on a computer-readable medium that is selectively removable and may be loaded onto or transferred to DPS 700 for execution by processor 710.

[0093] System bus 722 may be any device that facilitates communication among and between processors 710; memory 712; and interfaces 714, 716, 718, 720. Additionally, although system bus 722 in this embodiment is a relatively simple single bus structure that provides a direct communication path between system buses 722, other bus structures are also consistent with the present disclosure, including but not limited to point-to-point links, multiple hierarchical buses, parallel and redundant paths, etc. in hierarchical, star, or network configurations.

[0094] Memory 712 and mass storage devices 740, 741, 742 work together to store operating system 724, application programs 726, and program data 728. In this embodiment, memory 712 is a random access semiconductor device capable of storing data and programs. Although Figure 7 conceptually depicting this device as a single monolithic entity, in some embodiments, memory 712 may be a more complex arrangement, such as a hierarchy of cache and other memory devices. For example, memory 712 may exist in a multi-level cache, and these caches may be further functionally partitioned such that one cache holds instructions while another cache holds non-instruction data used by one or more processors. Memory 712 may be further distributed and associated with different processors 710 or a collection of processors 710, as is known in any of the various so-called non-uniform memory access (NUMA) computer architectures. Additionally, some embodiments may utilize a virtual addressing mechanism that allows DPS 700 to act as if it can access a large single storage entity rather than accessing multiple smaller storage entities (such as memory 712 and mass storage devices 740, 741, 742).

[0095] Although the operating system 724, application programs 726, and program data 728 are shown as being included in the memory 712, in some embodiments, some or all of them may be physically located on different computer systems and may be accessed remotely, for example, via the communication medium 706. Thus, although the operating system 724, application programs 726, and program data 728 are shown as being included in the memory 712, these elements are not necessarily all fully contained in the same physical device at the same time and may even reside in the virtual memory of other DPSs 700.

[0096] The system interfaces 714, 716, 718, 720 support communication with various storage and I / O devices. The mass storage interface 714 supports the attachment of one or more mass storage devices 740, 741, 742, which are typically rotating disk drive storage devices, solid state storage devices (SSDs) that use integrated circuit components as memory to persistently store data, typically using flash memory, or a combination of both. However, the mass storage devices 740, 741, 742 may also include other devices, including disk drive arrays (commonly referred to as RAID arrays) configured to present as a single large storage device to the host and / or archival storage media, such as hard disk drives, tapes (e.g., mini-DV), writable optical discs (e.g., CD-R and CD-RW), digital versatile discs (e.g., DVD, DVD-R, DVD+R, DVD+RW, DVD-RAM), holographic storage systems, blue laser discs, IBM Millipede devices, etc.

[0097] The terminal / display interface 716 is used to directly connect one or more display units 780 (e.g., monitors) to the data processing system 700. These display units 780 may be non-intelligent (i.e., dumb) terminals or may themselves be fully programmable workstations that allow IT administrators and customers to communicate with the DPS 700. However, note that although the display interface 716 is provided to support communication with one or more display units 780, the computer system 700 does not necessarily require a display unit 780, since all required interactions with customers and other processes may occur via the network interface 718.

[0098] The communication medium 706 can be any suitable network or combination of networks and can support any appropriate protocol suitable for transmitting data and / or code to / from the multiple DPSs 700. Thus, the network interface 718 can be any device that facilitates such communication, regardless of whether the network connection is made using today's analog and / or digital technologies or via some future networking mechanism. Suitable communication media 706 include, but are not limited to, networks implemented using one or more of the "InfiniBand" or IEEE (Institute of Electrical and Electronics Engineers) 802.3x "Ethernet" specifications; cellular transmission networks; wireless networks implementing one of the IEEE 802.11x, IEEE 802.16, General Packet Radio Service ("GPRS"), FRS (Family Radio Service), or Bluetooth specifications; ultra-wideband ("UWB") technologies such as those described in FCC 02-48; or the like. Those skilled in the art will appreciate that many different networks and transmission protocols can be used to implement the communication medium 706. The Transmission Control Protocol / Internet Protocol ("TCP / IP") suite includes suitable networks and transmission protocols.

[0099] Figure 8A is a schematic diagram of a magnetic tape 800 configured to store a data set (DS) in accordance with some embodiments. The DS 800 in this example includes a DSS (Data Set Separator Sequence) at position 820 and multiple sets of CWI codewords 825(1)…825(384), each set of CWI codewords 825(1)…825(384) including multiple CWI codewords 825(1)-1, 825(1)-2…825(384)-16, etc., such as CWI-4 codewords (only some of the codeword sets 825(n) and codewords 825(n)-m are labeled for clarity). For each CWI codeword 825(n)-m, a write head 810 writes the associated data to the tape 800, and the data is subsequently read back by a read head 815 that implements read-while-write data verification. In this example, some of these CWI codewords 825-1-3, CWI825-2-11, etc. will fail to verify (e.g., the read-back is below the desired write quality metric). These unverified CWI codewords 825(1)-3, CWI 825(2)-11 can be classified as soft rewrites and may or may not be (re)written into a rewrite region 850, depending on additional criteria or algorithms such as the remaining space in the rewrite region 850, a specified reliability operating point, etc.

[0100] In addition, in Figure 8AIn [the situation], an off-track event has occurred at position 830 (again, assuming the servo position of tape 800 is known). In response, the write is interrupted / paused until heads 810, 815 return to the desired track position 840. Then, resume writing with a new DSS, etc. In this example, all CWI codewords 825(3)-1…825(3)-16 in codeword set 825(3) are affected by the off-track event. These CWI codewords are uncorrectable (e.g., incomplete due to the write stop at position 830 / there must be many byte errors), and thus can be classified as "hard rewrites" to be rewritten in rewrite area 850.

[0101] In addition, in Figure 8A a dead track event occurs, e.g., from a faulty write head 810. In response, some embodiments can detect a string of unverified CWI codewords greater than a predetermined length, e.g., CWI 825(1)-1, CWI 825(2)-1, etc., and also classify them as "hard rewrites". In response, the affected CWI codewords will also be rewritten in rewrite area 850. The rewrite of CWI occurs on a different track from the track on which it was first written.

[0102] Figure 8A Also shown are CWI codewords that have been written and verified to a predetermined write quality level (e.g., CWI 825(6)-2). These CWI codewords can be classified as "do not require rewrite".

[0103] In operation, some embodiments can use ECC (such as iterative C1-C2 decoding) to protect rows of CWI codewords (such as CWI-4 codewords) (i.e., CWI codewords written by the same head 810). At low SNR, almost all CWIs of DS / SDS can be rewritten and thus read from the tape. Iterative decoding can be used to process rows of CWI codewords. Iterative decoding can handle a byte error rate of up to a few percent at the input, as long as all CWI codewords are available for decoding, e.g., have been written to the tape at least once.

[0104] When DS is first written to tape 800, the CWI rewrite list / table can be filled with metadata (e.g., which (which) CWI blocks need to be rewritten, what type of rewrite, etc.). Figure 8B An example rewrite list table 870 consistent with some embodiments is depicted in [the figure]. The unique identifiers of CWI codewords that need to be rewritten (e.g., CWI825(1)-1, CWI 825(1)-3, etc.) can be listed in the first column of table 870 (for clarity of drawing, in Figure 8BShown as “1”, “4” and “77” in [the figure], but many embodiments may use more complex identifiers). The second and third columns of Table 870 may include tags indicating whether a CWI codeword has been identified for “hard” or “soft” rewriting. In some embodiments, during the rewriting process, the CWI codewords identified in Table 870:

[0105] If “hard_flag” (hard flag) equals “true” (e.g., “1”), then it must be (re)written

[0106] If “soft_flag” (soft flag) equals “true” (e.g., “1”) and “hard_flag” equals “false” (e.g., “0”), then it may be rewritten (or discarded via a threshold scheme)

[0107] For any other combination (e.g., ELSE), no rewriting

[0108] In some embodiments, when the data stream (of the pipeline) writes DS to the tape, it may create / update list / Table 870, which “marks” those CWI codewords that need to be rewritten. Some embodiments may implement these marks by extending the current “rewrite mark” from one bit to two bits, e.g., to include a “soft mark” and a “hard mark”

[0109] “Hard rewriting” generally refers to those rewritings that are most important or even necessary to avoid data loss. Events where some CWI codewords are not written or are not fully written (and thus cannot be read / used for decoding in a reading device) are, for example: a stop-writing event (where writing suddenly stops to avoid rewriting adjacent tracks), a dead track (due to a very poor or inoperative writer). In these events, to avoid the risk of data loss / uncorrectable DS, some embodiments may ensure that the missing / incomplete CWI is (re)written. These CWIs may be considered “hard rewrites” (or forced / critical rewrites).

[0110] In some embodiments, a CWI codeword may be considered a “hard rewrite” if the following conditions are met:

[0111] (#RLL_decoding_errors in CWI is greater than “threshH”) AND ((#byte_errors is greater than “threshB”) OR (“is uncorrectable”))

[0112] That is, if the total number of RLL decoding errors in the CWI codeword (in some embodiments, maximum: 243 errors) exceeds a first configurable / tunable threshold "threshH" (where 0 ≤ threshH ≤ 255), and if: (i) the number of byte errors in each C1 codeword exceeds a second configurable / tunable threshold "threshB" (where 0 ≤ threshB ≤ T = 255); or (ii) the C1 codeword is uncorrectable. This dual condition may be desirable in low SNR environments where more errors may be present. In other embodiments, the CWI may be considered "hard rewritten" if the following single condition is met:

[0113] #RLL_decoding_errors_in_CWI4 > threshH

[0114] For the above example C1 code (Reed - Solomon codeword with N1 = 240 and K1 = 228 bytes), the C1 decoder can detect / correct up to six byte errors per codeword, so threshB ≤ T = 5 works as expected. If there are more than six byte errors in the C1 codeword and (6 ≤ T), then C1 decoding will fail, and thus the second condition is true: ("uncorrectable"). Additionally, if the CWI codeword is not written / verified, e.g., due to an off - track event, some embodiments can set the above #RLL_decoding_errors_in_CWI4 variable to 244 (i.e., a value greater than the maximum possible number of errors, or a similar flag), and thus force the CWI codeword to be classified as "hard rewritten".

[0115] Other tests for determining the "hard rewrite" condition are within the scope of this disclosure and can be used as a supplement or alternative to the above conditions. For example, a CWI codeword on a "dead track" (e.g., due to a very poor or non - functional writer) can be classified as "hard rewritten" based on read channel statistics (e.g., mean square error (MSE) or signal - to - noise ratio (SNR)) or statistics of C1 decoding performance, etc. Additionally, some embodiments can optionally allow disabling of the rewrite (e.g., for testing) by setting the first threshold threshH equal to 255.

[0116] "Soft rewrite" generally refers to those rewrites that are desirable for reliability purposes but are less likely to result in data loss. In some embodiments, if the CWI codeword is not "hard rewritten" and if one of the following "soft rewrite" conditions is met, the CWI codeword can be classified for "soft rewrite":

[0117] A) The CWI codeword has at least one C1 codeword where #byte_errors > threshB;

[0118] B) #RLL decoding errors in CWI > threshS; or

[0119] C) A combination of A) and B);

[0120] where "threshS" is a third configurable / tunable threshold and is lower than threshH.

[0121] If neither the hard rewrite nor the soft rewrite condition is satisfied, no rewrite is required. For example, the CWI codeword is both written and verified.

[0122] Figure 9 is a high-level block diagram showing an example data stream 900 for a tape drive consistent with some embodiments. This data stream 900 is presented only as an example and is not intended to be limiting. In fact, tape drives implementing other data streams may also benefit from the rewrite techniques disclosed herein and are therefore intended to be included within the scope of the present invention. The data stream 900 is simply presented to show one way of performing the process of recording data onto a tape.

[0123] The CRC module 902 receives a sequence of bytes contained within variable length data blocks (also referred to as "records") from a host device. These data blocks can be of any size up to the maximum size supported by the tape drive. The cyclic redundancy check (CRC) module 902 can add CRC information to these blocks. The compression module 904 can then compress the blocks, and the encryption module 906 can optionally encrypt the blocks. The data blocks can then be divided into fixed-size data sets, which can then be divided into fixed-size sub-data sets (SDSs). Each SDS can be organized into a two-dimensional data array and passed to a column error correction coding (ECC) encoder 908, which in turn generates parity bits for each column in the data array and appends the column ECC parity to the array.

[0124] Once the column ECC parity is generated and appended to the array, the multiplexer 910 can append headers to the rows in the array. These headers can identify the position of the rows within their sub-dataset and the larger dataset. The extended array can then be passed to the row ECC encoder 912, which generates row ECC parity (typically consisting of 8-bit symbols (bytes), etc.) for each row in the array. Generally, the ECC parity symbols have n bits, where n is a positive integer. The ECC parity can be of any conventional type, such as C1 parity, C1' parity, etc., where C1 parity is generated from the rows of the SDS, and C1' parity is generated from both the rows of the SDS and the headers appended to those rows. Thus, C1 parity protects against faults in the rows of the SDS, while C1' parity protects against faults in both the rows of the SDS and the headers appended to those rows. Then, the tape layout module 914 can distribute the data array, ECC parity, and headers in different orders on M different tracks for recording on the tape. M is typically a multiple of 8, such as 8, 16, 32, 64, etc. Generally, M can be any positive integer. The data sequence can then be processed by the randomizer 916, which performs additional signal processing on the data in a conventional manner. The run length limited (RLL) encoder 918 can then transform the information so that it is better suited for magnetic recording. The multiplexer 920 can multiplex synchronization information (such as a variable frequency oscillator (VFO) sequence for timing acquisition, synchronization characters, etc.) into the information to enable it to be synchronized during reading. The resulting data can then be sent to a write driver (not shown), which passes current through the recording head element to generate a magnetic flux for writing the data to the magnetic recording medium. Generally, each block or module to the right of the row ECC encoder 912 performs a different transformation on the data to make it more suitable for magnetic recording.

[0125] Figure 10 is a high-level block diagram showing the assignment of incoming variable-length records to fixed-size Ds before recording the data on the tape, in accordance with some embodiments. In Figure 10In it, the tape drive can be configured to allocate the input variable - length records to fixed - size DS1008s before recording the data on the tape. The number of bytes in the DS1008 depends on the drive technology and may be invisible to the host. The incoming host data can start filling the first DS1008 from the first byte of the DS1008 and continue to the last byte of the DS1008, and then enter subsequent DS1008s as needed. In some cases, the tape drive can combine multiple small host records 1000 into a single DS1008, or can generate multiple DS1008s from a large host record 1000. As described above, each DS1008 can interleave a certain number of smaller fixed - size data entities called sub - DS1004 (SDS) to improve the performance of the ECC decoder.

[0126] Figure 11 is a high - level block diagram showing data of sub - data sets (SDS) 1004 organized into a two - dimensional data array consistent with some embodiments. As shown, the SDS1004 is organized into a matrix of d 2 rows and d 1 columns. Data from the DS1008 can fill the SDS1004 row - by - row, starting from row 0 byte 0 and continuing through row d 2 −1 byte d 1 −1.

[0127] Figure 12 is a high - level block diagram showing an ECC code attached to the SDS data array consistent with some embodiments, where each row of the data array protected by the extended ECC is codeword interleaving (CWI). As Figure 12 shown, p 2 column ECC parity bytes 1202 (also called "C2" parity) can be added to each column in the SDS1004 array, and after attaching a header 1204 to each row, p 1 row ECC parity bytes 1200 (also called C1 parity or C1' parity) are added to each row in the SDS1004 array. The C1 parity is generated from the rows of the SDS, while the C1' parity is generated from both the rows of the SDS and the headers attached to those rows. The row ECC parity 1200 protects each row of the SDS1004 array, while the column ECC parity 1202 protects each column in the SDS array 804 except for the attached header part. Each SDS row including the column ECC parity data 1202 can be considered a C1 codeword. In the selected method, the row ECC parity 1200 and / or the column ECC parity 1202 consists of Reed - Solomon codes.

[0128] In some methods, each row contains multiple C1 codewords that are interleaved in some way. Thus, for the purposes of this description, each row of the ECC-protected SDS array 1210 will hereinafter be referred to as a codeword interleaving (CWI), where a CWI includes at least one codeword. Each column of the ECC-protected SDS 1004 array can be referred to as a C2 codeword. Each SDS 804 is an independent ECC-protected entity, meaning that the C1 ECC parity 1200 and C2 ECC parity 1202 of the SDS 804 only protect that SDS 804. The DS1008 includes "S" SDS1004s, each SDS1004 containing N = d 2 +p 2 CWI. Thus, the number of CWIs in the DS 808 is Q = N × S.

[0129] Figure 13 is a flowchart showing a method 1300 for reducing rewrite overhead in a sequential access storage system consistent with some embodiments. In some embodiments, the method 1300 can be performed via logic integrated with the controller, executable by the controller, or integrated with and executable by the controller. At operation 1305, the controller can cause a write transducer to write a DS to sequential access media. The DS can include multiple encoded data blocks. At operation 1310, the controller can cause a read transducer to read the DS (e.g., the encoded data blocks) written by the write transducer. Next, at operation 1315, the controller can measure and / or estimate a write quality metric by comparing the encoded data blocks written by the write transducer with the encoded data blocks read by the read transducer during the write-while-read process.

[0130] Optionally, at operation 1320, the controller can receive one or more thresholds from a system administrator, such as threshH, threshB, and / or threshS. These thresholds can be used to tune the system for optimization for relatively high capacity, or to tune the system for optimization for relatively high reliability.

[0131] At operation 1325, the controller may classify each of a plurality of encoded data blocks on the sequential access medium into at least one of at least three write quality classes. The at least three write quality classes may include: a hard rewrite class for which a rewrite is necessary to prevent data loss; a soft rewrite class for which a rewrite is desirable but not required; and a no rewrite class for which a rewrite is not needed or not desirable. If the number of run length limited (RLL) decoding errors is greater than a first predetermined threshold threshH and: (i) the number of byte errors is greater than a second predetermined threshold threshB; or (ii) a decoding error (uncorrectable codeword) is detected. An encoded data block may be classified into the soft rewrite class if at least one of the following sets of conditions is met: (i) the encoded data block has at least one codeword in which the number of RLL decoding errors is greater than a third predetermined threshold threshS; and (ii) the encoded data block has at least one codeword in which the number of byte errors is greater than the second predetermined threshold threshB.

[0132] At operation 1330, the controller may cause a write transducer to selectively rewrite some of the encoded data blocks in a rewrite region of the sequential access medium at least partially based on the write quality class. In some embodiments, at least some of the encoded data blocks in the soft rewrite class are not rewritten.

[0133] Although the invention has been described in detail with reference to certain examples of the invention, the invention may also be embodied in other specific forms without departing from the basic spirit or characteristics of the invention. For example, the invention may be a system, method, and / or computer program product at any possible level of integration of technical details. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to perform aspects of the invention. The computer readable program instructions may be stored and executed on a single computer or divided between different computers at the same location or different locations for storage and execution.

[0134] A computer-readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer-readable storage medium can be, for example but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanically encoded device (such as a punched card or raised structures in grooves having instructions recorded thereon), and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed as a transient signal per se, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., an optical pulse through an optical fiber cable), or an electrical signal transmitted through a wire.

[0135] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network can include a copper transmission cable, an optical transmission fiber, a wireless transmission, a router, a firewall, a switch, a gateway computer, and / or an edge server. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the corresponding computing / processing device.

[0136] The computer-readable program instructions for performing the operations of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuits, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the customer's computer, partially on the customer's computer, as a stand-alone software package, partially on the customer's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the customer's computer through any type of network connection, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., through the Internet using an Internet service provider). In some embodiments, an electronic circuit, including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit so as to perform aspects of the present invention.

[0137] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing device to produce a machine, such that the instructions executed via the processor of the computer or other programmable data processing device create means for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, a programmable data processing device, and / or other devices to function in a particular manner, such that the computer-readable storage medium in which the instructions are stored comprises an article of manufacture that includes instructions for implementing aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0138] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing device, or other device to cause a series of operational steps to be performed on the computer, other programmable device, or other device to produce a computer-implemented process, such that the instructions executed on the computer, other programmable device, or other device implement the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0139] In addition, some embodiments may be delivered as part of a service engagement with a customer company, non-profit organization, government entity, internal organizational structure, etc. Aspects of these embodiments may include configuring a computer system to perform some or all of the methods described herein, and deploying software, hardware, and web services that implement some or all of the methods described herein. Aspects of these embodiments may also include analyzing the operations of a client, creating recommendations in response to the analysis, building a system that implements portions of the recommendations, integrating the system into existing processes and infrastructure, metering the use of the system, allocating costs to users of the system, and billing for use of the system.

[0140] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be completed as one step, executed concurrently, substantially concurrently, executed in partial or total time overlap, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by a system based on dedicated hardware that performs the specified functions or acts, or combinations of dedicated hardware and computer instructions.

[0141] Aspects of the present invention are described herein with reference to the flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions. In addition, the flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or portion of instructions, which includes one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by a system based on dedicated hardware that performs the specified functions or acts, or combinations of dedicated hardware and computer instructions.

[0142] Any specific program nomenclature used in this specification is for convenience only, and thus the present invention should not be limited to use in any particular application identified and / or implied by such nomenclature. Thus, for example, routines implemented to achieve embodiments of the present invention, whether implemented as part of an operating system or a particular application, component, program, module, object, or sequence of instructions, may be referred to as a "program", "application", "server", or other meaningful nomenclature. In fact, alternative hardware and / or software environments may be used without departing from the scope of the present invention.

[0143] In addition, systems according to various methods may include a processor and logic integrated with and / or executable by the processor, the logic being configured to perform one or more of the processing steps described herein. The processor may be any configuration as described herein, such as a discrete processor or a processing circuit including many components such as processing hardware, memory, I / O interfaces, etc. By being integrated with..., it means that the processor has logic embedded therein as hardware logic, such as an application-specific integrated circuit (ASIC), FPGA, etc. By being executable by the processor, it means that the logic is hardware logic; software logic, such as firmware, a part of an operating system, a part of an application program; etc., or some combination of hardware and software logic that is accessible by the processor and configured to cause the processor to perform a certain function when executed by the processor. As is known in the art, software logic may be stored on local and / or remote memory of any memory type. Any processor known in the art may be used, such as a software processor module and / or a hardware processor, such as an ASIC, FPGA, central processing unit (CPU), integrated circuit (IC), graphics processing unit (GPU), etc.

[0144] Accordingly, it is intended that the embodiments described herein be considered in all respects illustrative and not restrictive, and the scope of the present invention be determined with reference to the appended claims.

Claims

1. A system, comprising: a magnetic head; a controller communicatively coupled to the magnetic head, wherein the controller is adapted to: write a data set to a sequential access medium using the magnetic head, the data set including a plurality of encoded data blocks; classify the encoded data blocks into three or more write quality classes; and selectively rewrite one or more of the encoded data blocks in a rewrite region of the sequential access medium at least partially based on the write quality classes.

2. The system according to claim 1, wherein the controller is further adapted to measure a write quality metric for each of the encoded data blocks.

3. The system according to claim 1, wherein the magnetic head includes at least one write transducer and at least one read transducer adapted for parallel data transmission.

4. The system according to claim 1, wherein each of the encoded data blocks includes codewords arranged in an interleaved or non-interleaved manner.

5. The system according to claim 4, wherein each codeword includes a predetermined number of symbols, each symbol having a size of at least 8 bits.

6. The system according to claim 1, wherein the three or more write quality classes include: a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not required; and a no rewrite class for which rewriting is not needed or not desirable.

7. The system according to claim 6, wherein if the following conditions are met, the encoded data block is classified into the hard rewrite class: the number of run length limited decoding errors is greater than a first predetermined threshold; and either the number of byte errors is greater than a second predetermined threshold; or an uncorrectable error is detected.

8. The system according to claim 7, wherein the classification of the encoded data block into the soft rewrite class depends on whether: the encoded data block is not classified in the hard rewrite class; and the encoded data block has at least one codeword in which the number of run length limited decoding errors is greater than a third predetermined threshold.

9. The system according to claim 8, wherein the third predetermined threshold is greater than the first predetermined threshold.

10. The system according to claim 7, wherein the classification of the encoded data block into the soft rewrite class depends on whether: the encoded data block is not classified in the hard rewrite class; and the encoded data block has at least one codeword in which the number of byte errors is greater than the second predetermined threshold.

11. The system according to claim 6, wherein at least some of the encoded data blocks in the soft rewrite class are not rewritten.

12. A method for reducing rewrite overhead in a sequential access storage system, the method comprising: writing a data set to a sequential access medium using a magnetic head, wherein the data set includes a plurality of encoded data blocks; classifying each of the plurality of encoded data blocks on the sequential access medium into one of at least three write quality classes; and selectively rewriting the encoded data blocks in a rewrite region of the sequential access medium at least partially based on the write quality classes.

13. The method according to claim 12, wherein, the magnetic head includes a write transducer and a read transducer, and the method further includes: writing, by the write transducer, at least one of the plurality of encoded data blocks; reading, by the read transducer, the at least one encoded data block written by the write transducer; and measuring a write quality metric, wherein the measuring includes comparing, during a read - while - write process, the at least one encoded data block written by the write head with the at least one encoded data block read by the read transducer.

14. The method according to claim 12, wherein, the at least three write quality classes include: a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no - rewrite class for which rewriting is not needed or not desirable.

15. The method according to claim 14, wherein, the encoded data block is classified as the hard rewrite class depending on whether: the number of run - length limited decoding errors is greater than a first predetermined threshold; and any one of the following: the number of byte errors is greater than a second predetermined threshold; or an uncorrectable error is detected.

16. The method according to claim 15, wherein, the encoded data block will be classified as the soft rewrite class conditioned on satisfying at least one condition from a group of conditions consisting of: the encoded data block has at least one codeword wherein the number of RLL decoding errors is greater than a third predetermined threshold; and the encoded data block has at least one codeword wherein the number of byte errors is greater than the second predetermined threshold.

17. The method according to claim 16, further comprising adjusting the first predetermined threshold for optimization for higher capacity.

18. The method according to claim 16, further comprising adjusting the first predetermined threshold for optimization for higher reliability.

19. The method according to claim 14, wherein, at least some of the encoded data blocks in the soft rewrite class are not rewritten.

20. A computer program product, the computer program product comprising a computer - readable storage medium having program instructions embodied therewith, the program instructions executable by a device to cause the device to: write a data set to a sequential access medium using a magnetic head, wherein the data set includes a plurality of encoded data blocks; classify each of the plurality of encoded data blocks on the sequential access medium into one of at least three write quality classes; and selectively rewrite the encoded data blocks in a rewrite region of the sequential access medium at least partially based on the write quality class.

21. The computer program product according to claim 20, wherein, the at least three write quality classes include: a hard rewrite class for which rewriting is necessary to prevent data loss; a soft rewrite class for which rewriting is desirable but not necessary; and a no - rewrite class for which rewriting is not needed or not desirable.

22. A device, which includes: a controller; and Logic, which is integrated with the controller, executable by the controller, or integrated with and executable by the controller, is configured to: Write a data set to a sequential access medium using a magnetic head, wherein the data set includes a plurality of encoded data blocks; Classify each of the plurality of encoded data blocks on the sequential access medium into at least one of three write quality classes; And Selectively rewrite the encoded data blocks in a rewrite area of the sequential access medium at least in part based on the write quality class.

23. The apparatus according to claim 22, Wherein, The at least three write quality classes include: A hard rewrite class for which rewriting is necessary to prevent data loss; A soft rewrite class for which rewriting is desirable but not necessary; and A no-rewrite class for which rewriting is not required or desirable.

24. The apparatus according to claim 23, Wherein: If the following conditions are met, the encoded data block is classified in the hard rewrite class: The number of run length limited decoding errors is greater than a first predetermined threshold; And any one of the following: The number of byte errors is greater than a second predetermined threshold; Or An uncorrectable error is detected; The encoded data block is classified as the soft rewrite class depending on whether: The encoded data block is not classified in the hard rewrite class; And The encoded data block has at least one codeword in which the number of run length limited decoding errors is greater than a third predetermined threshold.

25. The apparatus according to claim 23, Wherein: If the following conditions are met, the encoded data block is classified in the hard rewrite class: The number of run length limited decoding errors is greater than a first predetermined threshold; And any one of the following: The number of byte errors is greater than a second predetermined threshold; Or An uncorrectable error is detected; The encoded data block is classified as the soft rewrite class depending on whether: The encoded data block is not classified in the hard rewrite class; And The encoded data block has at least one codeword in which the number of byte errors is greater than a second predetermined threshold.