WO2005071574A1 - Preload library for transparent file transformation - Google Patents

Preload library for transparent file transformation Download PDF

Info

Publication number
WO2005071574A1
WO2005071574A1 PCT/US2004/018478 US2004018478W WO2005071574A1 WO 2005071574 A1 WO2005071574 A1 WO 2005071574A1 US 2004018478 W US2004018478 W US 2004018478W WO 2005071574 A1 WO2005071574 A1 WO 2005071574A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
file
transformed
chunk
files
Prior art date
Application number
PCT/US2004/018478
Other languages
French (fr)
Inventor
Adam L. Buchsbaum
Kiem-Phong Vo
Original Assignee
At & T Corp.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by At & T Corp. filed Critical At & T Corp.
Priority to EP04754916A priority Critical patent/EP1702276A4/en
Priority to CA002542162A priority patent/CA2542162A1/en
Publication of WO2005071574A1 publication Critical patent/WO2005071574A1/en
Priority to IL174897A priority patent/IL174897A0/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files

Definitions

  • Lossless compression has long been used to reduce storage requirements and network transmission costs. Compressing data can help reduce the amount of data that must be accessed from main memory and therefore may be useful in mitigating the I/O bottleneck.
  • Compressing data can help reduce the amount of data that must be accessed from main memory and therefore may be useful in mitigating the I/O bottleneck.
  • the nominal disk - bandwidth is d bytes/second, it requires — time to effectuate the transfer.
  • the data can d be compressed by some compressor with compression ratio r (the ratio of the size of the compressed data to that of the original) however, and the uncompression speed is u t bytes/second (compression and uncompression speeds typically depend on the resulting compression ratio, which tends to be similar for different files from the same domain or
  • Equation (1) yields several useful observations.
  • Compression schemes used in practice e.g., Huffman coding used in pack, Lempel-Ziv coding used in compress, gzip, and zlib, and the Burrows-Wheeler transform used in bzip
  • Huffman coding used in pack Lempel-Ziv coding used in compress, gzip, and zlib
  • Burrows-Wheeler transform used in bzip all share the characteristic that uncompression must start from the beginning of the compressed data. That is, to retrieve any byte requires uncompressing the entire text up to the desired access point. This complicates any application that requires arbitrary access into the data While some theoretical advances have been made in the area of string matching in compressed data, general-purpose computation over compressed data remains elusive.
  • This access problem may be generalized to situations having the following characteristics.
  • slow memory such as a disk drive, tape, CD ROM, DVD or the like.
  • One such technique as applied to compression of files partitions the original file into segments, then compresses each compressed segment individually and stores each compressed segment starting in the exact location in slow memory (usually disk memory) in which the original uncompressed segment was stored.
  • slow memory usually disk memory
  • Another approach partitions the file into segments and then applies the transform (e.g. compression, encryption, etc.) to each segment.
  • the resulting "chunks" i.e. transformed segments
  • a preload library transforms file data in segments, each independently of the other as part of the process of retrieving and writing data to the file.
  • the preload library creates a meta-data structure for each file to be transformed in response to a system call to that file issued by a system application or some other system library program.
  • the file to be transformed comprises meta-data including a map that identifies each of the transformed segments with their original untransformed counterparts.
  • the file meta-data may further include trailer information describing the transform methodology, the original length of the file prior to transformation, length of the segments, and checksum data
  • the map permits fast location of the segment(s) containing any arbitrary range of original data locations.
  • desired data can be retrieved from anywhere within the file by inverting the transform of only the compressed segments) of interest.
  • Each of the transformed segments referred to herein as "chunks" is initially stored contiguously in memory, but with some additional space built in for those cases in which the chunk grows as a result of its segment being altered through a memory write.
  • the preload library permits operation within a system having files that are not transformed, as well as the additional flexibility to treat individual files differently with the respect to the parameters of the transformation process.
  • Files may be transformed using different methodologies as well as different segment sizes for example.
  • Figure 1 is a block diagram representation of the relationships between the various functions operating in a computer system;
  • Figure 2 is a block diagram representation of the functional operation of an embodiment of the invention.
  • Figure 3 a cuagrammatical representation of a format for storing transformed data in accordance with an embodiment of the invention
  • system calls specifying associated file descriptors originated by system applications or other library programs are intercepted by a preload library.
  • Each system call handled by the preload library respects its standard semantics such that return values and expected side effects are preserved.
  • the preload Ubrary operates transparently with respect to an apphcation and the operating system. If the file(s) specified by the intercepted system call are determined to have been previously transformed by the preload library or are to be transformed once created, the library allocates a meta-data structure to maintain the relevant meta-data, which is initialized from the file on disk. Otherwise, no meta-data structure for the referenced file is created and the preload library simply passes the system calls directly to the OS for processing.
  • Fig. 1 illustrates the functional layers that exist in a typical computer system.
  • the computer system could be a notebook or desk top computer, and could be as complex as a server with multiple CPUs.
  • the operating system (OS) 17 communicates with the physical devices 19, typically through an interface of software routines sometimes known as drivers 18 for each device.
  • the OS 17 performs functions that include maintaining internal data structures such as a file table to provide a record of all of those files that have been opened at the request of apphcation programs 10 or other libraries 14.
  • the OS 17 further maintains pointers into those files so that it knows where in a particular file data has just been read from or written to (i.e. accessed) and the next location. Thus, the OS 17 will know from where to start reading, for example, if an application 10 requests the next 1000 bytes of the file.
  • the applications 10 and other libraries 14 typically make requests of the OS 17 and receive responses to those requests from the OS 17 by way of apphcation program interfaces (APIs) 12.
  • APIs apphcation program interfaces
  • OS 17 used. Nevertheless, the system calls from a functional standpoint are quite similar, including basic system functions such as "open a file,” “read from a file,” “write to a file,” “close a file,” “create a file,” etc.
  • the Ubrary layer 14 sits between the applications 10 and the OS 17. It is generaUy designed to perform functions that one may not wish to incorporate into the OS 17, at least until they've been proven, or to provide functions over which the user may want control.
  • a library function 14 intercepts certain system calls from the appUcations to the OS 17. It then performs some sort of processing in response to the call and then passes on a call to the OS 17 by which to complete the processing.
  • Fig. 2 illustrates a functional flow diagram for an embodiment of the invention.
  • the library of the invention 15 can be preloaded and sits at the bottom of all other library functions 14, Fig.l. It is designed to detect and intercept all system calls generated from appUcations 10, Fig. 1 and any of the other libraries 14, Fig. 1 (together sometimes referred to herein generally as system programs) to the OS 17, Fig. 1.
  • system programs generated from appUcations 10, Fig. 1 and any of the other libraries 14, Fig. 1 (together sometimes referred to herein generally as system programs) to the OS 17, Fig. 1.
  • the preload Ubrary 15, Fig. 1 can be designed to recognize the semantics of system calls for any OS. When the preload Ubrary detects and intercepts a system call to the OS at 100, it determines the nature of the syste ccm caU.
  • the preload library determines whether the particular file referenced has been transformed in accordance with the library's transform at 116 (i.e. whether it is a transform system file). If it has been so transformed, the Ubrary builds a meta-data structure at 118 for that file, much like the OS does in response to system calls, which controls ensuing system calls to that file's descriptor.
  • the preload library processes all subsequent system calls to that file, including reading transformed data, inverting or reversing the transform on the data and providing the processed data to the application or Ubrary that requested it, performing the transform on data to be written back to disk and providing the transformed data back to the OS to carry out the physical write process.
  • Ubrary passes call commands to the OS at 122 that the OS needs to build its own internal structure such that the any processing performed by the preload library remains transparent to the OS as weU as the apphcation or library that initiated the call.
  • Processing then returns at 108 to block 100 to look for and intercept further system calls from applications or other Ubraries at 100.
  • the system caU is passed directly to the OS at 124 without further processing by the preload Ubrary, and processing returns at 108.
  • the library instantiates the file at 106 and then determines at 114 whether the files is one which it is to transform This decision is based on parametric information provided to the library when it is loaded and permits a user to cause the library to process only those files that a user desires to be transformed. If the file is one designated to be processed by the preload library (i.e. a transform system file), it builds its meta-data structure to govern further processing of the file at 118 and processing continues as previously described. If it is not, prcessing continues at 124 and the system call is passed directly through to the preload library (i.e. a transform system file).
  • the transformation process can be turned off by the user iff desired for all files or for particular types of files, for example if the transform does not provide performance enhancement on that type of file.
  • An embodiment of the invention determines at 110 if the caU is to a file that has already been opened and that it has been designated as one to be transformed by the Ubrary. This can be answered in the affirmative if it has already been opened and a meta-data structure previously has been created by the library at 118. If true, the call is processed by the library at 112 (including for example, reading transformed data and then performing the inverse transform on the data before supplying it to the requesting apphcation or Ubrary, or tiarisforming data from the application and then sending it to the OS to be written to slow memory). If it is determined at 110 that the system caU does not reference a file that has been identified to the preload library as one to be transformed , then the system call is passed directly to the OS at 114 and processing returns at 108 to intercepting the next caU at 100.
  • the library can be appUed generally to any data files that have been transformed and for which improved random access to the transformed data is desired.
  • the preload Ubrary may be employed where compression is the transform imposed on the data
  • the data is segmented and compressed (i.e. transformed) on a segment-by-segment basis to enhance random access to the compressed data
  • a compression transform is performed at block 112 of Fig. 2 whenever the compression transform is enabled for the file being written.
  • the original data is partitioned into n segments of size S each This is a parameter that may be tuned by the user through interaction with the preload library.
  • the last segment in the file possibly may be smaller of course.
  • An embodiment of a format for the files transformed using such a compression algorithm is iUustrated in Fig. 3.
  • a file 200 compressed by the Ubrary can be implemented in two sections. The first section includes the compressed data for each segment of the untransformed data file.
  • the second section of the compressed data file 200 is meta-data that includes a 28 map that identifies the relationship between each compressed data segment and each pre- compressed data segment
  • a segment may have a size of 1000 bytes (with a certain address range associated therewith), and each compressed segment (referred to herein as a chunk) may range between 360 and 440 bytes, for example.
  • the preload library must be able to know how the address ranges of the chunks correspond to the address ranges of the pre-compressed segments, as the applications/Ubraries, oblivious to the compression, will request bytes based on the pre-compressed addresses.
  • each bag further includes a gap 26a, 26b through 26n, which is simply unused contiguous memory that is there in case the chunk actuaUy grows larger as a result of modifications to its corresponding segment
  • the size of the bag which includes the chunk 22 and the gap 26 wiU be determined by the original size C of the chunk (that is the size of the chunk 22 for each segment when the compressed file 200 is initially created and processed at block 106 of Fig. 2) and a bag factor/ > 1.
  • each bag can have a size of / * C bytes.
  • these parar eters can be adjusted for different types of files through the meta data of each file so that the transformation can be performed differently for different files stored in the same system. This is an advantage that is not easily accomphshed using an OS file system
  • the gap 26a, 26b through 26n provides slack for the chunk to grow which may occur when amended data is written back to a particular compressed segment. This overcomes the need to re-layout the entire compressed file to accommodate the growth of a chunk because they are not tightly packed.
  • the gap 26a, 26b through 26n is only a smaU percentage of what memory space is saved through compression
  • the bag is now too large for its original aUocation of space and may be appended at the end of the compressed data section of the compressed file 200-
  • the bag is also aUocated a smaU amount of space for chunk specific mete-data 24a, 24b through 24n.
  • the meta-data section of the compressed (transformed) file 200 can be stored immediately foUowing the last gap 26n of the last bag 20n.
  • the metadata can start with a chunk map 28, which is an array containing for each bag 20 the offset 32 into the compressed file at which the bag 20 begins, the size 34 of the chunk 22 within it, the size 36 of any chunk-specific compression meta-data 24, and the size 38 of the bag 20 to which the meta-data is mapped.
  • a variable- length segment describing any compressor-specific meta-data 40 for example, if a Lempel-Ziv algorithm is being employed, what level is being used).
  • a compressed (transformed) file 200 is opened (the process represented by blocks 102, 116, 118, 122, FIG.2) the meta-data is read.
  • the trailer 30 is of a fixed size, so it is read first.
  • Each compressor program has a method that includes a startup routine, which is caUed to read its meta-data 40 (e.g., the compression level for Lempel-Ziv based compressors like zlib), which precedes the trailer 30.
  • the chunk map 28 is read, using the uncompressed file size 42 and segment size 44 to deter ⁇ iine its length.
  • the meta-data remains entirely in memory while the file 200 is open.
  • Blocks and chunks are cached, in separate caches each with an LRU replacement strategy; the per-file cache sizes are also library start-up parameters.
  • the foregoing format as applied to compression can be adapted to other types of transforms that may require random access to the transformed data, and for which segmenting and fransforming the segments may prove useful in providing such random access.
  • the format may provide performance benefits concerning the possibihty that the transformed chunks may grow or shrink and thus prove useful in accommodating this expansion and contraction without need to place chunks out-of-order or to have to rearrange the entire transformed file each time it is written to. Encryption is another example of such a transformation.
  • open() first determines if the requested file is compressed.
  • a file may be deemed compressed if all of the foUowing are true: (1) it is long enough to contain a trailer 30; (2) the trailer checksum 48 validates; (3) the segment size 44 is positive; (4) the compressor identifier
  • test (8) can be skipped.
  • any combination of the foregoing tests may be used to determine if the file has been transformed by compression, but the more that are used the more likely the determination wiU be correct. If a file is deemed compressed, an internal structure is initialized, which controls ensuing system calls on the file descriptor identifying the file just opened. A start-up parameter can be implemented to determine whether newly created files are to be compressed, or even which types.

Abstract

A preload library partitions certain files into segments and transforms the data of the files on a segment by segment basis (22a), each independently of the other. The transformed segments are then stored as part of a transformed file, with each segment corresponding to a bag containing a chunk (of transformed data) and a gap which permits the chunks to grow when data of the segment is modified during a write operation. The bags are followed by a chunk map which contains metadata, defining the compressed version of each segment (20a). The preload library intercepts system calls from applications to the OC specifying access to specific segments of a transformed file. The preload library identifies the chunks corresponding to the specified segments, retrieves and reverses the transform on those chunks and passes the data to the application requesting it. For a system call to write data to certain segments, the data is modified and re-transformed by the library before being written back to disk. A preload library provides improved random access into transformed (e.g. compressed, encrypted, etc.) files.

Description

PRELOAD LIBRARY FOR TRANSPARENT FILE TRANSFORMATION
BACKGROUND
[0001] This application claims the benefit of U.S. Provisional Application No. 60/439,215, filed January 10, 2003.
[0002] There is an exponentially increasing disparity between CPU (central processing unit) speeds and disk bandwidth. Moore's law predicts a doubling of processor speed every 18 months, whereas disk bandwidth has been doubling only every 2.2 years. The result is an I/O (input/output) bottleneck that undermines many of the advances in processing speed and memory capacity. The process of simply getting data into and out of core memory takes too long. In cases where data does not even fit in main memory, paradigms like external memory and streaming dgorithms have been explored as alternatives to the RAM model for designing algorithms. Often, though, increases in memory capacity obviate the need to favor I7O over RAM complexity. Still, simply getting the input from disk to algorithm comprises a significant portion of the time spent by an application.
[0003] Lossless compression has long been used to reduce storage requirements and network transmission costs. Compressing data can help reduce the amount of data that must be accessed from main memory and therefore may be useful in mitigating the I/O bottleneck. Consider transferring b bytes from disk to memory. If the nominal disk - bandwidth is d bytes/second, it requires — time to effectuate the transfer. If the data can d be compressed by some compressor with compression ratio r (the ratio of the size of the compressed data to that of the original) however, and the uncompression speed is ut bytes/second (compression and uncompression speeds typically depend on the resulting compression ratio, which tends to be similar for different files from the same domain or
source), then it takes time to read and uncompress the compressed data
Figure imgf000003_0001
Storing the compressed data therefore speeds data transfer whenever rb or
Figure imgf000003_0002
equivalently whenever?.,. > d . (1) 1- r
[0004] Equation (1) yields several useful observations. First, the benefit of compression is independent of the amount of data being transferred when assuming sufficient data is available to realize the assumed compression ratio. Second, for any fixed compression ratio, the benefit of compression increases proportionately to CPU speed, assuming that uncompression is CPU bound, as it is for compression schemes like Huffman, Lempel- Ziv, and Burrows-Wheeler. This mitigates the I/O bottleneck because increasing CPU speed directly speeds the transfer of data to applications when data is compressed. Third, for a given CPU, the benefit of compression depends on the compression ratio r. As r γ improves (i.e. gets smaller), so does , in that for compression to be worthwhile in 1- r terms of overall data transfer, the demand on uncompression speed relative to the disk bandwidth becomes less onerous.
[0005] Compression schemes used in practice (e.g., Huffman coding used in pack, Lempel-Ziv coding used in compress, gzip, and zlib, and the Burrows-Wheeler transform used in bzip) all share the characteristic that uncompression must start from the beginning of the compressed data. That is, to retrieve any byte requires uncompressing the entire text up to the desired access point. This complicates any application that requires arbitrary access into the data While some theoretical advances have been made in the area of string matching in compressed data, general-purpose computation over compressed data remains elusive.
[0006] This access problem may be generalized to situations having the following characteristics. First, data is stored after being transformed in some manner (e.g. compression, encryption, etc.). Second, upon retrieving the data the transformation must be reversed (e.g. uncompression, decryption, etc.) before an application can act on the retrieved data Third, after retrieving the data and reversing the transform, if the data is then altered, the data must be re-transformed (e.g. compressed, encrypted, etc.) prior to writing the data back to some form of slow memory, such as a disk drive, tape, CD ROM, DVD or the like. Given the existing disparity between CPU speed and I/O bandwidth, it would be preferable when retrieving data not to have to reverse the transformation from the beginning of the file all the way to the point for which access is desired Further, when writing altered data back to slow memory, it would be preferable not to have to re-transform the entire file from the beginriing all the way up to the portion of the file that is being altered by the writing process. Rather, it would be more advantageous to be able to read and write access randomly to any point within the transformed file.
[0007] Some attempts have been made in the past to provide more random access to transformed data stored in slow memory. Typically, the file is partitioned into smaller components, and these components are individually transformed/untransformed (e.g. compressed/uncompressed, encrypted/decrypted, etc.) such that access can be made to a smaller component containing the requested data rather than having to transform and/or untransform the entire file up to the requested data Although these techniques have provided improved random access to a transformed file, they don't necessarily provide a means by which the segmentized components of the transformed file can be indexed and manipulated without significantly burdening the improved performance sought through random access.
[0008] One such technique as applied to compression of files partitions the original file into segments, then compresses each compressed segment individually and stores each compressed segment starting in the exact location in slow memory (usually disk memory) in which the original uncompressed segment was stored. Thus, while a more random access into the transformed file is facilitated without the need for additional indexing, the disk space is fragmented, disk space is wasted and access to disk is less than optimal. Another approach partitions the file into segments and then applies the transform (e.g. compression, encryption, etc.) to each segment. The resulting "chunks" (i.e. transformed segments) are then stored contiguously and packed tightly to avoid wasting space. However, if a particular segment is written to and data within that segment is thereby altered, its resulting chunk may increase in size as a result. In this case, the entire layout of the compressed file must be rearranged to accommodate the larger chunk. While it has been proposed to instead store a chunk that has grown larger than its original size at the end of the file (i.e. out-of-order), this solution will impact the efficiency of disk access where optimal access requires that files be in-order.
[0009] The foregoing techniques have been implemented as part of operating system (OS) filesystems. As a result, every file stored on the system is treated in the same manner, regardless of whether the data is truly benefited by the transform For example, random data does not compress well, and segmenting it for purposes of compression may actually degrade access time to these files. Because the segmenting process is inaccessible to the user of the computer system when it is performed as part of a file system, there is no way to easily disable the segmenting process as to files that do not benefit from the transform Nor is there any way to fine tune the segmenting process to optimize the performance advantages, with respect to the files on the system. The segmenting process is fixed and applied to all files in the same manner, and the parameters of the process are inaccessible by a user at the filesystem level.
SUMMARY
[0010] This disclosure describes processing methods and system structures that address one or more of the issues noted above. In at least one embodiment, a preload library transforms file data in segments, each independently of the other as part of the process of retrieving and writing data to the file. The preload library creates a meta-data structure for each file to be transformed in response to a system call to that file issued by a system application or some other system library program. The file to be transformed comprises meta-data including a map that identifies each of the transformed segments with their original untransformed counterparts. The file meta-data may further include trailer information describing the transform methodology, the original length of the file prior to transformation, length of the segments, and checksum data The map permits fast location of the segment(s) containing any arbitrary range of original data locations.
Thus, desired data can be retrieved from anywhere within the file by inverting the transform of only the compressed segments) of interest. Each of the transformed segments, referred to herein as "chunks" is initially stored contiguously in memory, but with some additional space built in for those cases in which the chunk grows as a result of its segment being altered through a memory write. The preload library permits operation within a system having files that are not transformed, as well as the additional flexibility to treat individual files differently with the respect to the parameters of the transformation process. Files may be transformed using different methodologies as well as different segment sizes for example.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] For a detailed description of embodiments of the invention, reference will now be made to the accompanying drawings in which:
[0012] Figure 1 is a block diagram representation of the relationships between the various functions operating in a computer system; [0013] Figure 2 is a block diagram representation of the functional operation of an embodiment of the invention;
[0014] Figure 3 a cuagrammatical representation of a format for storing transformed data in accordance with an embodiment of the invention
NOTATION AND NOMENCLATURE
[0015] Certain terms are used throughout the following description and in the claims to refer to particular process steps, process materials and structures resulting therefrom. As one skilled in the art will appreciate, those skilled in the art may refer to a process, material or resulting structure by different names. This document does not intend to distinguish between components, materials or processes that differ in name but not function- In the following discussion and in the claims, the terms "including" and "comprising" are used in an open-ended fashion, and thus should be interpreted to mean "includixig, but not limited to .... "
DETAILED DESCRIPTION
[O016] The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted as or otherwise used to limit the scope of the disclosure, including the claims, unless otherwise specified. In addition, one skilled in the art will understand that the following description has broad apphcation, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
[O017] In an embodiment of the invention, system calls specifying associated file descriptors originated by system applications or other library programs are intercepted by a preload library. Each system call handled by the preload library respects its standard semantics such that return values and expected side effects are preserved. Put another way, the preload Ubrary operates transparently with respect to an apphcation and the operating system. If the file(s) specified by the intercepted system call are determined to have been previously transformed by the preload library or are to be transformed once created, the library allocates a meta-data structure to maintain the relevant meta-data, which is initialized from the file on disk. Otherwise, no meta-data structure for the referenced file is created and the preload library simply passes the system calls directly to the OS for processing.
[O018] Subsequent I O calls to files identified by the preload library as being subject to the transformation are processed through the preload Ubrary, affecting meta-data where necessary, and ultimately tramforming / reverse fransforrning the file data as required during operations such as reads and writes to those files respectively. In addition to the meta-data, only transformed segments are stored to slow memory (e.g. such as to the system disk drive). Whether or not the library creates new files in its transformed format or in raw, untransformed format is parameterized. The library can thus work seamlessly with extant apphcations, and with any OS.
[0019] Fig. 1 illustrates the functional layers that exist in a typical computer system. The computer system could be a notebook or desk top computer, and could be as complex as a server with multiple CPUs. At the bottom of the functional stack are the physical devices of the computer system 19, including the disk drive/memory of the computer system. The operating system (OS) 17 communicates with the physical devices 19, typically through an interface of software routines sometimes known as drivers 18 for each device. The OS 17 performs functions that include maintaining internal data structures such as a file table to provide a record of all of those files that have been opened at the request of apphcation programs 10 or other libraries 14. The OS 17 further maintains pointers into those files so that it knows where in a particular file data has just been read from or written to (i.e. accessed) and the next location. Thus, the OS 17 will know from where to start reading, for example, if an application 10 requests the next 1000 bytes of the file. There are a few different OS programs available from a few different sources, including Linux, Microsoft and the like.
[0020] The applications 10 and other libraries 14 typically make requests of the OS 17 and receive responses to those requests from the OS 17 by way of apphcation program interfaces (APIs) 12. These APIs for a given apphcation may differ with respect to the
OS 17 used. Nevertheless, the system calls from a functional standpoint are quite similar, including basic system functions such as "open a file," "read from a file," "write to a file," "close a file," "create a file," etc.
[0021] The Ubrary layer 14 sits between the applications 10 and the OS 17. It is generaUy designed to perform functions that one may not wish to incorporate into the OS 17, at least until they've been proven, or to provide functions over which the user may want control. Typically, a library function 14 intercepts certain system calls from the appUcations to the OS 17. It then performs some sort of processing in response to the call and then passes on a call to the OS 17 by which to complete the processing.
[0022] Fig. 2 illustrates a functional flow diagram for an embodiment of the invention. The library of the invention 15 can be preloaded and sits at the bottom of all other library functions 14, Fig.l. It is designed to detect and intercept all system calls generated from appUcations 10, Fig. 1 and any of the other libraries 14, Fig. 1 (together sometimes referred to herein generally as system programs) to the OS 17, Fig. 1. Those of skill in the art wiU recognize that the preload Ubrary 15, Fig. 1 can be designed to recognize the semantics of system calls for any OS. When the preload Ubrary detects and intercepts a system call to the OS at 100, it determines the nature of the syste ccm caU. Thus, if it is determined to be an "open a file" function specifying an existing file at 102, the preload library determines whether the particular file referenced has been transformed in accordance with the library's transform at 116 (i.e. whether it is a transform system file). If it has been so transformed, the Ubrary builds a meta-data structure at 118 for that file, much like the OS does in response to system calls, which controls ensuing system calls to that file's descriptor. The preload library processes all subsequent system calls to that file, including reading transformed data, inverting or reversing the transform on the data and providing the processed data to the application or Ubrary that requested it, performing the transform on data to be written back to disk and providing the transformed data back to the OS to carry out the physical write process. The preload
Ubrary passes call commands to the OS at 122 that the OS needs to build its own internal structure such that the any processing performed by the preload library remains transparent to the OS as weU as the apphcation or library that initiated the call.
Processing then returns at 108 to block 100 to look for and intercept further system calls from applications or other Ubraries at 100.
[0023] If at 116 it is determined that the existing file specified by the call has not been previously transformed in accordance with the transformation process implemented by the preload Ubrary, the system caU is passed directly to the OS at 124 without further processing by the preload Ubrary, and processing returns at 108.
[0024] If the call is determined at 104 to be a "create a file" function, the library instantiates the file at 106 and then determines at 114 whether the files is one which it is to transform This decision is based on parametric information provided to the library when it is loaded and permits a user to cause the library to process only those files that a user desires to be transformed. If the file is one designated to be processed by the preload library (i.e. a transform system file), it builds its meta-data structure to govern further processing of the file at 118 and processing continues as previously described. If it is not, prcessing continues at 124 and the system call is passed directly through to the
OS. Processing returns at 108 to block 100. As previsouly discussed, the transformation process can be turned off by the user iff desired for all files or for particular types of files, for example if the transform does not provide performance enhancement on that type of file.
[0025] For all other system calls it is determined at 102, 104 that the system call is neither an "open" nor a "create" function. An embodiment of the invention determines at 110 if the caU is to a file that has already been opened and that it has been designated as one to be transformed by the Ubrary. This can be answered in the affirmative if it has already been opened and a meta-data structure previously has been created by the library at 118. If true, the call is processed by the library at 112 (including for example, reading transformed data and then performing the inverse transform on the data before supplying it to the requesting apphcation or Ubrary, or tiarisforming data from the application and then sending it to the OS to be written to slow memory). If it is determined at 110 that the system caU does not reference a file that has been identified to the preload library as one to be transformed , then the system call is passed directly to the OS at 114 and processing returns at 108 to intercepting the next caU at 100.
[0026] As previously discussed, the library can be appUed generally to any data files that have been transformed and for which improved random access to the transformed data is desired. In an embodiment, the preload Ubrary may be employed where compression is the transform imposed on the data The data is segmented and compressed (i.e. transformed) on a segment-by-segment basis to enhance random access to the compressed data
[0027] In an embodiment of the invention, a compression transform is performed at block 112 of Fig. 2 whenever the compression transform is enabled for the file being written. The original data is partitioned into n segments of size S each This is a parameter that may be tuned by the user through interaction with the preload library. The last segment in the file possibly may be smaller of course. An embodiment of a format for the files transformed using such a compression algorithm is iUustrated in Fig. 3. A file 200 compressed by the Ubrary can be implemented in two sections. The first section includes the compressed data for each segment of the untransformed data file. The second section of the compressed data file 200 is meta-data that includes a 28 map that identifies the relationship between each compressed data segment and each pre- compressed data segment Thus, a segment may have a size of 1000 bytes (with a certain address range associated therewith), and each compressed segment (referred to herein as a chunk) may range between 360 and 440 bytes, for example. Of course, the preload library must be able to know how the address ranges of the chunks correspond to the address ranges of the pre-compressed segments, as the applications/Ubraries, oblivious to the compression, will request bytes based on the pre-compressed addresses.
[0028] As can be seen from Fig. 3, the compressed data for each of the n segments is stored as chunks 22a, 22b through 22n, and each chunk is part of a bag 20a, 20b through 20n. Each bag further includes a gap 26a, 26b through 26n, which is simply unused contiguous memory that is there in case the chunk actuaUy grows larger as a result of modifications to its corresponding segment The size of the bag, which includes the chunk 22 and the gap 26 wiU be determined by the original size C of the chunk (that is the size of the chunk 22 for each segment when the compressed file 200 is initially created and processed at block 106 of Fig. 2) and a bag factor/ > 1. Thus, each bag can have a size of / * C bytes. The bag factor/determines essentially how much additional space to allocate for that chunk based on a percentage of the chunk's original size. This is another library parameter that can be adjusted by the user to optimize access speed for particular file types. In fact, these parar eters can be adjusted for different types of files through the meta data of each file so that the transformation can be performed differently for different files stored in the same system. This is an advantage that is not easily accomphshed using an OS file system
[0029] The gap 26a, 26b through 26n provides slack for the chunk to grow which may occur when amended data is written back to a particular compressed segment. This overcomes the need to re-layout the entire compressed file to accommodate the growth of a chunk because they are not tightly packed. At the same time, the gap 26a, 26b through 26n is only a smaU percentage of what memory space is saved through compression In an embodiment, should the chunk grow larger than the gap size, the bag is now too large for its original aUocation of space and may be appended at the end of the compressed data section of the compressed file 200- The bag is also aUocated a smaU amount of space for chunk specific mete-data 24a, 24b through 24n.
[0030] In an embodiment, the meta-data section of the compressed (transformed) file 200 can be stored immediately foUowing the last gap 26n of the last bag 20n. The metadata can start with a chunk map 28, which is an array containing for each bag 20 the offset 32 into the compressed file at which the bag 20 begins, the size 34 of the chunk 22 within it, the size 36 of any chunk-specific compression meta-data 24, and the size 38 of the bag 20 to which the meta-data is mapped. Following the chunk map 28 is a variable- length segment describing any compressor-specific meta-data 40 (for example, if a Lempel-Ziv algorithm is being employed, what level is being used). Finally there is a trailer 30 containing the size 42 of the original, uncompressed file, the segment size S 44, an index 46 identifying the compression method (e.g. Lempel-Ziv, Huffman Coding, Burrows-Wheeler, etc.), a checksum for the trailer itself 48, and a checksum for the chunk map 50. Those of skiU in the art will recognize that this meta-data provides an opportunity to vary the transformation (e.g. compression) process on a file-by-file basis.
[0031] When a compressed (transformed) file 200 is opened (the process represented by blocks 102, 116, 118, 122, FIG.2) the meta-data is read. The trailer 30 is of a fixed size, so it is read first. Each compressor program has a method that includes a startup routine, which is caUed to read its meta-data 40 (e.g., the compression level for Lempel-Ziv based compressors like zlib), which precedes the trailer 30. FinaUy, the chunk map 28 is read, using the uncompressed file size 42 and segment size 44 to deterπiine its length. The meta-data remains entirely in memory while the file 200 is open. Those of skill in the art will recognize that it is possible for the data section can shrink and grow, and therefore could possibly overwrite the original meta-data When the file 200 is closed, the revised meta-data is simply appended to the very end of the current data section, whatever size it has grown or slirunk to be. This layout has the benefit that the data can be read from, cached, and written to disk as needed, while the meta-data, which is small compared to the data, remains in memory. [0032] FinaUy, all physical disk I/Os are performed with respect to a block size, which is provided as a parameter to the library upon start-up. This aUows physical disk devices to be opened. Block sizes can be arbitrary, but the library assumes that any compressed file
200 is a multiple of the block size. Blocks and chunks are cached, in separate caches each with an LRU replacement strategy; the per-file cache sizes are also library start-up parameters.
[0033] Those of skill in the art will recognize that the foregoing format as applied to compression can be adapted to other types of transforms that may require random access to the transformed data, and for which segmenting and fransforming the segments may prove useful in providing such random access. Moreover, the format may provide performance benefits concerning the possibihty that the transformed chunks may grow or shrink and thus prove useful in accommodating this expansion and contraction without need to place chunks out-of-order or to have to rearrange the entire transformed file each time it is written to. Encryption is another example of such a transformation.
[0034] The following describes some of the system calls that an embodiment of the preload Ubrary is designed to intercept within the context of compression tiansforms, although they can be applied similarly to other types of transforms such as data encryption. The foUowing discussion details the actions that may be taken by the library in processing the intercepted system calls listed below, before permitting them to proceed to the OS as is standard when an embodiment of the invention is not active on a system:
[0035] {open, create} On an existing file, open() first determines if the requested file is compressed. In an embodiment of the invention, a file may be deemed compressed if all of the foUowing are true: (1) it is long enough to contain a trailer 30; (2) the trailer checksum 48 validates; (3) the segment size 44 is positive; (4) the compressor identifier
46 is valid; (5) the compression method successfully initializes its meta-data 40; (6) the file is long enough to contain a chunk map 28; (7) the chunk-map checksum vaUdates
50; and (8) the chunk map 28 is consistent (bags 20a, 20b through 20n) are disjoint and in valid address ranges). On large files, test (8) can be skipped. Of course, those of skill in the art wiU recognize that any combination of the foregoing tests may be used to determine if the file has been transformed by compression, but the more that are used the more likely the determination wiU be correct. If a file is deemed compressed, an internal structure is initialized, which controls ensuing system calls on the file descriptor identifying the file just opened. A start-up parameter can be implemented to determine whether newly created files are to be compressed, or even which types.
[0036] {close} Any dirty cached chunks are written, any dirty cached blocks are flushed to disk, and the meta-data is written to the end of the file.
[0037] {Iseek} An internal locator is set to the logical position of the uncompressed data
[0038] {read, pread} The appropriate chunks are located and brought into cache if necessary. Chunks are uncompressed when read from disk, and the underlying segments are preserved in the cache.
[0039] {write, pwrite} The appropriate chunks are located and brought into cache if necessary. New chunks and bags are created as necessary for writes beyond the current end-of-file, with zeros filling any holes. Segments are updated in the cache and only recompressed when flushed.
[0040] {dup, dup2} The internal structure is updated to reflect the duphcated file descriptor.
[0041] {stat, fstat, Istat} The underlying system calls are performed on the file, with the size information updated from the meta-data
[0042] {fcntl} Dup functionality and setting append mode affect the internal structures; other commands are passed through.
[0043] {fsync, fdatasync} Dirty cached chunks are written, and dirty cached blocks are flushed to disk Meta-data remains in memory.
[0044] {truncate, ftruncate} The size is updated internally. Length increases create zeros as needed. Decreases are reflected in the metadata; subsequently cp'ing the file eUminates any discarded data
[0045] {exit} All cached data and meta-data is flushed.

Claims

CLAIMSWhat is claimed is:
1. A method of providing transparent random access to transformed data stored as transformed system files on a slow memory of a computer system, said method comprising: intercepting system caUs from system programs to an operating system (OS) regarding the system files; determining which of the system files are transform system files; segmenting the transform system files and trarisforming each of the segments into a chunk for access from the slow memory; and accessing only those chunks corresponding to the segments of the transform system files requested by the system programs by way of the system calls.
2. The method of Claim 1 wherein said determining further comprises identifying system files as transform system files based on parametric information provided to the computer system.
3. The method of Claim 1 wherein said determining further comprises building a meta-data structure for each of the transform system files to facilitate said segmenting and said accessing.
4. The method of Claim 1 wherein said segmenting is performed during a write operation to the slow memory.
5. The method of Claim 1 wherein said segmenting further comprises storing metadata with each of the transform system files.
6. The method of Claim 5 wherein the meta-data stored with the transform system files comprises a chunk map describing the current size and physical location of each chunk as stored on the slow memory.
7. The method of Claim 6 wherein the meta-data further comprises a trailer including parametric data associated with said segmenting and said tiansforming.
8. The method of Claim 7 wherein the trailer includes data describing the current size of the system file prior to said segmenting and said transforming.
9. The method of Claim 7 wherein the trailer further includes checksum data for verifying validity of the chunk map.
10. The method of Claim 9 wherein the trailer further includes checksum data for verifying validity of the trailer.
11. The Claim 10 wherein the trailer is a fixed size and is stored at the end of the transform system file.
12. The metliod of Claim 11 wherein said determining further comprises verifying the trailer checksum and the chunk map checksum.
13. The method of Claim 1 wherein said transforming is data compression.
14. The method of Claim 1 wherein said frarisforming is data encryption.
15. The method of Claim 1 wherein said accessing further comprises : retrieving the corresponding chunks from slow memory; reversing said traroforming on the retrieved chunks and passing the result to the requesting system programs.
16. The method of Claim 1 wherein said segmenting further comprises placing each chunk into a bag, each bag comprising the chunk and a gap.
17. The method as recited in Claim 16 wherein each bag further comprises additional memory for meta-data specific to each chunk.
18. A method of storing transformed files of a computer system on a slow memory for random access to data comprising the transformed files, said method comprising: dividing each of the transform system files into data segments; converting each of the data segments into data chunks in accordance with a predetermined transformation; storing each of the chunks in a bag of slow memory space wherein each bag further comprises a gap of unused slow memory space to accommodate increases in chunk size when data written is written its conesponding segment ; and appending meta-data describing the transformed file to the end of the transformed file.
19. The method as recited in Claim 18 wherein the meta-data further comprises a chunk map to define the location of each chunk of the transformed file on the slow memory.
20. The method as recited in Claim 19 wherein the meta-data further comprises a trailer to define parameters of the transformed file.
21. The method of Claim 20 wherein the trailer includes data describing the current size of the system file prior to said dividing and said converting.
22. The method of Claim 20 wherein the trailer further includes checksum data for verifying validity of the chunk map.
23. The method of Claim 22 wherein the trailer further includes checksum data for verifying validity of the trailer.
24. The method as recited in Claim 20 wherein the trailer further comprises data defining the transformation.
25. The method as recited in Claim 18 wherein the transformation is data compression
26. The method as recited in Claim 18 wherein the transformation is data encryption
PCT/US2004/018478 2004-01-10 2004-06-08 Preload library for transparent file transformation WO2005071574A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP04754916A EP1702276A4 (en) 2004-01-10 2004-06-08 Preload library for transparent file transformation
CA002542162A CA2542162A1 (en) 2004-01-10 2004-06-08 Preload library for transparent file transformation
IL174897A IL174897A0 (en) 2004-01-10 2006-04-10 Preload library for transparent file transformation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/754,994 US7536418B2 (en) 2003-01-10 2004-01-10 Preload library for transparent file transformation
US10/754,994 2004-01-10

Publications (1)

Publication Number Publication Date
WO2005071574A1 true WO2005071574A1 (en) 2005-08-04

Family

ID=36585963

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/018478 WO2005071574A1 (en) 2004-01-10 2004-06-08 Preload library for transparent file transformation

Country Status (5)

Country Link
US (2) US7536418B2 (en)
EP (1) EP1702276A4 (en)
CA (1) CA2542162A1 (en)
IL (1) IL174897A0 (en)
WO (1) WO2005071574A1 (en)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483532B2 (en) * 2003-07-03 2009-01-27 Microsoft Corporation RTP payload format
US7424482B2 (en) * 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
WO2005103878A2 (en) * 2004-04-26 2005-11-03 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US8327050B2 (en) * 2005-04-21 2012-12-04 International Business Machines Corporation Systems and methods for compressing files for storage and operation on compressed files
US7684566B2 (en) 2005-05-27 2010-03-23 Microsoft Corporation Encryption scheme for streamed multimedia content protected by rights management system
US8521752B2 (en) 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
EP1891787B1 (en) * 2005-06-15 2010-03-24 Solarflare Communications Incorporated Data processing system
US7983301B2 (en) * 2005-06-24 2011-07-19 O2Micro International, Ltd. Method for extended transmission capabilities of short message service
US20070005625A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Storage architecture for embedded systems
US7769880B2 (en) * 2005-07-07 2010-08-03 Microsoft Corporation Carrying protected content using a control protocol for streaming and a transport protocol
US7634816B2 (en) * 2005-08-11 2009-12-15 Microsoft Corporation Revocation information management
US8321690B2 (en) * 2005-08-11 2012-11-27 Microsoft Corporation Protecting digital media of various content types
US7720096B2 (en) * 2005-10-13 2010-05-18 Microsoft Corporation RTP payload format for VC-1
CN101346883A (en) * 2005-10-26 2009-01-14 斯多维兹有限公司 Method and system for compression of data for block mode access storage
US8832043B2 (en) 2006-05-31 2014-09-09 International Business Machines Corporation Method and system for transformation of logical data objects for storage
US8769311B2 (en) 2006-05-31 2014-07-01 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8539228B1 (en) 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
US8082260B2 (en) * 2007-01-31 2011-12-20 International Business Machines Corporation Handling content of a read-only file in a computer's file system
US8024433B2 (en) * 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
KR20090017170A (en) * 2007-08-14 2009-02-18 삼성전자주식회사 Method and apparatus for managing media file
US7949693B1 (en) * 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
US7962452B2 (en) 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US8918374B1 (en) * 2009-02-13 2014-12-23 At&T Intellectual Property I, L.P. Compression of relational table data files
US7987162B2 (en) * 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
EP2460104A4 (en) * 2009-07-27 2016-10-05 Ibm Method and system for transformation of logical data objects for storage
US20110302224A1 (en) * 2010-06-08 2011-12-08 Rahav Yairi Data storage device with preloaded content
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
US9558198B2 (en) * 2012-03-28 2017-01-31 Google Inc. File map compression using run length encoding for active blocks
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
US11100108B2 (en) * 2017-04-12 2021-08-24 International Business Machines Corporation Inflationary segment approach to temporal data partitioning for optimized model scoring
CN108810011A (en) * 2018-06-29 2018-11-13 南京南瑞继保电气有限公司 A kind of universal network secure accessing sound zone system and message processing method suitable for power private network
US11947686B2 (en) * 2022-07-14 2024-04-02 William D. Schwaderer Dynamically encrypting and decrypting application data using dynamically linked interposer modules
CN117632278A (en) * 2022-08-29 2024-03-01 神基科技股份有限公司 Sharing method of environmental parameters of application program and system with multiple electronic devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064739A (en) * 1996-09-30 2000-05-16 Intel Corporation System and method for copy-protecting distributed video content
US20030128759A1 (en) * 1999-04-17 2003-07-10 Pulsent Corporation Segment-based encoding system including segment-specific metadata
US6665784B2 (en) * 1999-09-03 2003-12-16 Roxio, Inc. Method for writing and reading data to and from a compact disc media

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884093A (en) * 1994-09-02 1999-03-16 Rock Solid Systems, Inc. Hard disk cache for CD-ROM and other slow access time devices
US5623701A (en) * 1995-06-06 1997-04-22 International Business Machines Corporation Data compression method and structure for a direct access storage device
US6092163A (en) * 1998-12-04 2000-07-18 W. Quinn Associates, Inc. Pageable filter driver for prospective implementation of disk space quotas
US6405284B1 (en) * 1998-10-23 2002-06-11 Oracle Corporation Distributing data across multiple data storage devices in a data storage system
US6393517B1 (en) * 1999-08-31 2002-05-21 Sony Corporation SCSI port filter driver for enhanced audio data
JP4300669B2 (en) * 2000-02-29 2009-07-22 ソニー株式会社 Recording method and apparatus, and recording medium
US6571362B1 (en) * 2000-06-26 2003-05-27 Storage Technology Corporation Method and system of reformatting data blocks for storage as larger size data blocks
US7055038B2 (en) * 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
US6910116B2 (en) * 2002-05-23 2005-06-21 Microsoft Corporation Game disk layout
US6996695B2 (en) * 2002-07-17 2006-02-07 Masse Wayne P Method, system, and storage medium for optimizing disk space and information access
US6970969B2 (en) * 2002-08-29 2005-11-29 Micron Technology, Inc. Multiple segment data object management
US7370240B2 (en) * 2004-04-29 2008-05-06 International Business Machines Corporation Method and apparatus for preserving trace data in a logical partitioned data processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064739A (en) * 1996-09-30 2000-05-16 Intel Corporation System and method for copy-protecting distributed video content
US20030128759A1 (en) * 1999-04-17 2003-07-10 Pulsent Corporation Segment-based encoding system including segment-specific metadata
US6665784B2 (en) * 1999-09-03 2003-12-16 Roxio, Inc. Method for writing and reading data to and from a compact disc media

Also Published As

Publication number Publication date
US8065348B1 (en) 2011-11-22
EP1702276A4 (en) 2007-03-14
EP1702276A1 (en) 2006-09-20
IL174897A0 (en) 2006-08-20
US7536418B2 (en) 2009-05-19
US20060015535A1 (en) 2006-01-19
CA2542162A1 (en) 2005-08-04

Similar Documents

Publication Publication Date Title
US7536418B2 (en) Preload library for transparent file transformation
US9846700B2 (en) Compression and deduplication layered driver
US7818532B2 (en) Method and system for creating and restoring an image file
JP4755642B2 (en) Method and system for file compression and operation of compressed files for storage
US8327050B2 (en) Systems and methods for compressing files for storage and operation on compressed files
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
US20120089775A1 (en) Method and apparatus for selecting references to use in data compression
US7334099B2 (en) Method and system for managing image files
US20060230014A1 (en) Method and system for compression of files for storage and operation on compressed files
US7200603B1 (en) In a data storage server, for each subsets which does not contain compressed data after the compression, a predetermined value is stored in the corresponding entry of the corresponding compression group to indicate that corresponding data is compressed
US8095678B2 (en) Data processing
JP2007188485A (en) Method, system and product of managing archive file system, (management of archive file system)
US20080005524A1 (en) Data processing
US20140129529A1 (en) Storing Data Files in a File System
US8886656B2 (en) Data processing
US8290993B2 (en) Data processing
ZA200608760B (en) Method and system for compression of files for storage and operation on compressed files

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2542162

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 174897

Country of ref document: IL

DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2004754916

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2481/CHENP/2006

Country of ref document: IN

WWP Wipo information: published in national office

Ref document number: 2004754916

Country of ref document: EP