throbber
United States Patent [19J
`Bodnar
`
`[54]
`
`BLOCK FILE SYSTEM FOR MINIMAL
`INCREMENTAL DATA TRANSFER
`BETWEEN COMPUTING DEVICES
`
`[75]
`
`Inventor: Eric 0. Bodnar, Capitola, Calif.
`
`[73]
`
`Assignee: Starfish Software, Inc., Scotts Valley,
`Calif.
`
`[21]
`
`Appl. No.: 09/034,644
`
`[22]
`
`Filed:
`
`Mar. 4, 1998
`
`[51]
`[52]
`
`[58]
`
`[56]
`
`Int. Cl? ...................................................... G06F 12/04
`U.S. Cl. .......................... 707/101; 707/100; 707/200;
`707/205; 711/153; 711!171; 711!209
`Field of Search ..................................... 707/100, 101,
`707/200, 205; 711!209, 171, 153
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,435,752
`4,653,112
`4,686,332
`4,774,655
`5,007,085
`5,121,396
`5,175,854
`5,179,701
`5,224,060
`5,309,564
`5,313,578
`5,329,619
`5,471,615
`5,479,656
`5,519,851
`5,561,446
`5,577,177
`5,579,481
`
`3/1984 Winkelman ............................. 707/205
`3/1987 Ouimette ................................... 382/69
`8/1987 Greanias et a!. .......................... 178/19
`9/1988 Kollin et a!. ... ... ... ... ... .... ... ... ... 364/200
`4/1991 Greanias et a!. .......................... 380/25
`6/1992 Irvin eta!. .............................. 714/807
`12/1992 Cheung et a!.
`... ... ... ... .... ... ... ... 395/650
`1!1993 Chisholm ................................ 707/104
`6/1993 Ma .......................................... 364/708
`5/1994 Bradley et a!. ......................... 395/200
`5/1994 Handorf ... ... ... .... ... ... ... ... ... .... .. 395/200
`7/1994 Page et a!. . .... ... ... ... ... .... ... ... ... 395/200
`11/1995 Amatsu eta!. ......................... 395/200
`12/1995 Rawlings, III ... ... ... ... ... ... .... ... . 707/200
`5/1996 Bender et a!. .......................... 395!500
`10/1996 Montlick ................................. 345/173
`11/1996 Collins et a!. .......................... 395/169
`11/1996 Drerup .. ... ... ... .... ... ... ... ... ... .... .. 395/200
`
`111111
`
`1111111111111111111111111111111111111111111111111111111111111
`US006012063A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,012,063
`Jan.4,2000
`
`5,583,978
`5,592,657
`5,592,665
`5,625,819
`5,630,168
`5,652,864
`5,832,310
`5,835,959
`5,845,282
`5,850,565
`5,864,867
`
`12/1996 Collins et a!. . ... .... ... ... ... ... ... ... 395/170
`1!1997 Johnson et a!. ... ... .... ... ... ... ... ... 395/200
`1!1997 Lahaije ........................................ 707/4
`4/1997 Hoffer, Jr. .. ... ... ... ... .... ... ... ... ... . 707/202
`5/1997 Rosebrugh et a!.
`. .... ... ... ... ... ... 395/825
`7/1997 Hine ........................................ 711!171
`11/1998 Morrissey et a!. ... .... ... ... ... ... ... .. 710/71
`11/1998 McCool et a!. ......................... 711!171
`12/1998 Alley et a!. ............................... 707/10
`12/1998 Wightman ............................... 315/821
`1!1999 Kruse he et a!.
`.. ... .... ... ... ... ... ... 707/104
`
`Primary Examiner-Jean R. Homere
`Attorney, Agent, or Firm-John A. Smart
`
`[57]
`
`ABSTRACT
`
`A portable computing device is described with a file system
`designed for providing improved data transfer methodology.
`The file system is implemented as a "Delta Block" File
`System (DBFS) comprising a file system designed specifi(cid:173)
`cally for the purpose of minimal delta calculation and
`minimum data transfer, particularly for portable storage
`devices which use solid state storage. The design of the
`DBFS minimizes the work required to compute changes to
`files and, hence, allows improved data transfer. Any new,
`removed, or modified blocks are transferred as changes. A
`simple checksum, CRC (cyclic redundancy checking), or
`similar comparison can be used to test a block for changes.
`Because block modifications are isolated to the proximity of
`the data change, only these blocks will be involved in a
`transfer. Furthermore, because the delta calculation is at the
`block level, it can be performed without knowledge of the
`data itself, thereby allowing any type of data to be compared
`and transferred. By supporting minimal transfer of data, the
`file system solves the problem of disproportionate data
`storage and communication speed situations, such as those
`encountered with portable computing devices.
`
`20 Claims, 5 Drawing Sheets
`
`(
`
`BEGIN
`
`)
`
`j
`
`,.--701
`
`ALLOCATE A FILE SYSTEM COMPRISING A
`PLURLITY OF BLOCKS LINKED TOGETHER TO
`FORM A CHAIN OF BLOCKS
`
`r'o'
`
`J
`RECEIVE A REQUEST TO STORE INFORMATION
`IN THE FILE SYSTEM
`J
`,.--703
`IN RESPONSE TO THE REQUEST, STORE VARIABLE
`AMOUNTS OF DATA IN THE BLOCKS SUCH THAT AT
`LEAST ONE BLOCK V\IHICH IS NOT AT THE END OF
`THE CHAIN RETAINS UNUSED STORAGE SPACE
`CAPABLE OF STORING ADDITIONAL INFORMATION
`
`J
`r704
`RECEIVE A REQUEST TO MODIFY INFORMATION
`STORED IN THE FILE SYSTEM
`
`,.--1os
`
`J
`IN RESPONSE TO THE REQUEST, STORE NEW
`DATA IN AT LEAST ONE BLOCK lfv'HICH IS NOT AT
`THE END OF THE CHAIN
`J
`,.--706
`RECEIVE A REQUEST TO UPDATE INFORMATION
`STORED ON ANOTHER DEVICE lfv'HICH
`CORRESPONDS TO INFORMATION STORED
`IN THE FILE SYSTEM
`
`l
`
`r'o1
`
`IN RESPONSE TO THE REQUEST, TRANSFER ONLY
`THOSE BLOCKS Vv'HICH HAVE CHANGED SINCE
`THE INFORMATION STORED ON THE OTHER
`DEVICE WAS lAST UPDATED
`I
`
`DONE
`
`)
`
`Samsung Exhibit 1005 Page 00001
`
`

`
`U.S. Patent
`
`Jan.4,2000
`
`Sheet 1 of 5
`
`6,012,063
`
`DISPLAY
`(e.g., LCD)
`
`r-101
`
`1---
`
`;--102
`
`INPUT
`(e.g., TERSE KEYPAD) 1---
`
`r-103
`
`1---
`
`PORT~)
`(e.g., SE
`IAL)
`
`100
`-
`
`;--105
`
`CENTRAL
`PROCESSING UNIT
`(e.g., MICROPROCESSOR)
`
`"' 140
`
`FIG. 1
`
`r
`
`110
`
`MEMORY
`
`PERSISTENT
`MEMORY
`SPOS (OS/BIOS)
`APPLICATION(S)
`
`VOLATILE
`MEMORY
`(e.g. RAM)
`
`/
`
`..-
`..-
`
`/
`
`f....-
`
`111
`
`1--
`,......
`
`112
`113
`
`120
`~
`
`NONVOLATILE
`MEMORY
`~At)BATTERY-BACKED
`
`/
`
`130
`~
`
`;--200
`
`MODULE
`SELECTOR
`
`FIG. 2
`
`Page 00002
`
`

`
`U.S. Patent
`
`Jan.4,2000
`
`Sheet 2 of 5
`
`6,012,063
`
`301
`
`300
`
`SIGNATURE
`
`310
`~
`
`PREVIOUS BLOCK
`
`320
`~
`
`NEXT BLOCK
`
`330
`~
`
`DATA SIZE
`
`DATA
`
`340
`~
`
`350
`~
`
`FIG. 3
`
`Page 00003
`
`

`
`.... = 0\
`.... = ~
`
`N
`
`0\
`
`~
`
`Ul
`0 ......,
`~
`
`~ .....
`'JJ. =(cid:173)~
`
`N
`~,J;;..
`?
`~
`~
`
`8 c
`
`~ = ......
`~ ......
`~
`•
`\Jl
`d •
`
`FIG. 5
`
`~
`
`513
`
`TRADITIONAL FILE SYSTEM
`
`~v ~~L~
`J 420
`TRADITIONAL FILE SYSTEM ~~ J 410
`
`DELTA BLOCK FILE SYSTEM
`
`411~~~~~~
`
`415
`
`413
`
`FIG. 4
`
`PRESENTLY
`I
`I
`
`UNUSED
`
`421
`
`J 520
`J 510
`
`•...... · .. R\S3 ~~ ~~
`
`DELTA BLOCK FILE SYSTEM
`
`521__;U .... ··
`511__;U~~~~
`
`Page 00004
`
`Page 00004
`
`

`
`U.S. Patent
`
`Jan.4,2000
`
`Sheet 4 of 5
`
`6,012,063
`
`0
`N co
`
`0 ...-
`co
`
`1.0
`...-
`co
`
`......
`("')
`co
`
`_j
`
`~ w
`I-
`Cf) >-Cf)
`w
`u..
`_j
`<(
`z
`0
`I-
`0
`<(
`0:::
`I-
`
`_j
`
`~ w
`I-
`Cf)
`>-Cf)
`w
`u..
`~ u
`0
`_j co
`~ _j w
`
`0
`
`......
`......
`co
`
`......
`N co
`
`Page 00005
`
`

`
`6,012,063
`
`700
`
`U.S. Patent
`
`Jan.4,2000
`
`Sheet 5 of 5
`
`BEGIN )
`
`r- 701
`
`ALLOCATE A FILE SYSTEM COMPRISING A
`PLURLITY OF BLOCKS LINKED TOGETHER TO
`FORM A CHAIN OF BLOCKS
`
`RECEIVE A REQUEST TO STORE INFORMATION
`IN THE FILE SYSTEM
`
`r--702
`
`r--703
`
`IN RESPONSE TO THE REQUEST, STORE VARIABLE
`AMOUNTS OF DATA IN THE BLOCKS SUCH THAT AT
`LEAST ONE BLOCK VVHICH IS NOT AT THE END OF
`THE CHAIN RETAINS UNUSED STORAGE SPACE
`CAPABLE OF STORING ADDITIONAL INFORMATION
`
`r- 704
`
`RECEIVE A REQUEST TO MODIFY INFORMATION
`STORED IN THE FILE SYSTEM
`
`IN RESPONSE TO THE REQUEST, STORE NEW
`DATA IN AT LEAST ONE BLOCK VVHICH IS NOT AT
`THE END OF THE CHAIN
`
`r--705
`
`r--706
`
`RECEIVE A REQUEST TO UPDATE INFORMATION
`STORED ON ANOTHER DEVICE VVHICH
`CORRESPONDS TO INFORMATION STORED
`IN THE FILE SYSTEM
`
`r--707
`
`IN RESPONSE TO THE REQUEST, TRANSFER ONLY
`THOSE BLOCKS VVHICH HAVE CHANGED SINCE
`THE INFORMATION STORED ON THE OTHER
`DEVICE WAS LAST UPDATED
`
`DONE )
`
`FIG. 7
`
`Page 00006
`
`

`
`6,012,063
`
`1
`BLOCK FILE SYSTEM FOR MINIMAL
`INCREMENTAL DATA TRANSFER
`BETWEEN COMPUTING DEVICES
`
`COPYRIGHT NOTICE
`A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`The copyright owner has no objection to the facsimile
`reproduction by anyone of the patent document or the patent
`disclosure as it appears in the Patent and Trademark Office
`patent file or records, but otherwise reserves all copyright
`rights whatsoever.
`
`5
`
`2
`to other computing devices. The portable computing device
`comprises a central processing unit (e.g., microprocessor)
`connected via a system bus to a display, an input, ports, and
`memory. The display is a screen device for displaying
`information, such as a liquid crystal display (LCD) screen.
`The input comprises a keypad, either physical or logical
`(e.g., on screen buttons), but is typically limited to a terse set
`numbering about three to ten buttons. The memory com(cid:173)
`prises persistent memory, volatile memory, and non-volatile
`10 RAM memory. The persistent memory is typically imple(cid:173)
`mented as a ROM or read-only memory. It stores a single(cid:173)
`purpose operating system (SPOS) and application(s). The
`volatile memory is a "scratch" memory, for storing tempo-
`rary computation results. It typically is implemented as a
`RAM (random-access memory), for providing a work space
`for the operating system and applications. The non-volatile
`RAM memory represents battery-backed RAM memory or
`flash memory, for storing context information from one
`session to another. When the device is powered down, the
`memory stores user data for the last session.
`The data transfer methodology of the device employs an
`improved file system supporting minimal transfer of data,
`thereby solving the problem of disproportionate data storage
`and communication speed situations, such as those encoun-
`25 tered with portable computing devices. The file system is
`implemented as a "Delta Block" File System (DBFS) com(cid:173)
`prising a file system designed specifically for the purpose of
`minimal delta calculation and transfer for portable storage
`devices which use solid state storage. The design of the
`DBFS minimizes the work required to compute changes to
`files and, hence, allows improved data transfer. In the
`traditional file system, an insert may affect many blocks of
`the file, thus requiring the entire file to be transferred or
`requiring a complicated difference calculation to find how
`the file has been changed.
`In accordance with the present invention, change or delta
`calculations are simplified in the DBFS as follows. Any new,
`removed, or modified blocks are transferred as changes. A
`simple checksum, CRC (cyclic redundancy checking), or
`similar comparison can be used to test a block for changes.
`Because block modifications are isolated to the proximity of
`the data change, only these blocks will be involved in a
`transfer. Furthermore, because the delta calculation is at the
`block level, it can be performed without knowledge of the
`45 data itself, thereby allowing any type of data to be compared
`and transferred.
`In this manner, the Delta Block File System (DBFS) of the
`present invention provides an improved file system archi(cid:173)
`tecture for portable computing devices. By isolating typical
`file changes to a small area of the storage media or memory
`and by providing a highly-efficient, yet generic, method of
`detecting modifications, the present invention provides a
`greatly improved mechanism of transferring data between
`computing devices, such as when updating differences
`between data on a portable device and corresponding data on
`a host device.
`
`BACKGROUND OF THE INVENTION
`The present invention relates generally to the area of 15
`information processing and, specifically, to system and
`methods for storing information in one device, particularly
`a portable (e.g., hand-held) computing device, and transfer(cid:173)
`ring that information to another computing device.
`With compact, portable computing devices becoming 20
`ever more popular because of advances in manufacturing
`and power consumption, there is an increasing desire to
`carry more and more personal information on such devices.
`Storage of increasing amounts of data on such devices is
`easily handled by increasing solid state storage capacity.
`Because of form factor constraints, portable devices are
`often designed with minimal input capabilities, often mak(cid:173)
`ing data entry cumbersome or even impossible. For this
`reason, portable computing devices are most effective as a
`component of a solution involving connectivity with larger, 30
`more input capable devices such as desktop computers,
`laptop computers and information servers.
`The increase in data volume on portable devices, com(cid:173)
`bined with the need to transfer data to and from other larger
`devices, presents a connectivity problem. In particular, con- 35
`nection speeds rarely match storage capacity and data size
`requirements. One method to assist data flow is data com(cid:173)
`pression. Another, more effective method, which can be
`combined with compression, is to achieve minimal data
`transfer through "deltas" or differences between two data 40
`sets.
`Typical file systems are designed for storage and retrieval
`of data, focusing on storing and retrieving large amounts of
`data on slow electro-mechanical devices. Such file systems
`typically store information in block chains represented in a
`specific storage area. The popular "FAT" storage system
`represents block chains in a designated area called the File
`Allocation Table. This mechanism is well suited for large
`capacity, mechanical storage devices because the allocation
`table, a table in constant use, can be cached in computer
`memory and accessed without typical mechanical penalties
`such as seek time and transfer time. This type of file system,
`however, is not suited for minimal data transfer. In
`particular, storage on a portable device is usually solid state
`(e.g., RAM or random-access memory), not mechanical.
`The issues with seek time and data transfer time are
`minimized-practically non-existent-with solid state stor(cid:173)
`age technology. The issue of minimal data transfer remains,
`however.
`What is needed is a file system structure designed for 60
`minimizing data transfer, rather than one designed for mini(cid:173)
`mizing the access constraints of mechanical storage devices.
`The present invention fulfills this and other needs.
`
`50
`
`55
`
`SUMMARY OF THE INVENTION
`A portable computing device or "information appliance"
`is provided with a file system designed for transferring data
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram illustrating the general archi(cid:173)
`tecture of a portable computing device or "information
`appliance" in which the present invention may be embodied.
`FIG. 2 is a block diagram illustrating implementation of
`the application programs as modules under the control of a
`65 module selector.
`FIG. 3 illustrates a basic block structure employed by the
`file system of the present invention.
`
`Page 00007
`
`

`
`6,012,063
`
`3
`FIG. 4 is a block diagram illustrating the difference
`between a file in a traditional file system with that of a file
`in the file system of the present invention, with respect to
`how storage is allocated for allowing for growth.
`FIG. 5 is a block diagram illustrating the impact of a table
`insert into a file in a traditional file system and into a file in
`the file system of the present invention.
`FIG. 6 is a block diagram illustrating a similar insert into
`a file in a traditional file system and into a file in the file
`system of the present invention, but with a larger amount of 10
`data.
`FIG. 7 is a flow chart summarizing methodology for
`storing and transferring information in accordance with the
`present invention.
`
`DETAILED DESCRIPTION OF A PREFERRED
`EMBODIMENT
`The following description will focus on the presently(cid:173)
`preferred embodiment of the present invention, which is
`typically operative in a portable computing environment
`comprising hand-held devices with connectivity to larger
`devices (e.g., desktop computers). The present invention,
`however, is not limited to any particular one application or
`any particular environment. Instead, those skilled in the art
`will find that the system and methods of the present inven(cid:173)
`tion may be advantageously applied to a variety of systems
`and applications. Moreover, the present invention may be
`embodied on a variety of different platforms, including
`non-portable ones such as Windows, Macintosh, UNIX,
`NextStep, and the like. Therefore, the description of the
`exemplary embodiments which follows is for purposes of
`illustration and not limitation.
`General System
`A. Device hardware
`FIG. 1 is a block diagram illustrating the general archi(cid:173)
`tecture of a portable computing device or "information
`appliance" in which the present invention may be embodied.
`As shown, computing device 100 comprises a central pro(cid:173)
`cessing unit 105 (e.g., microprocessor) connected via a
`system bus 140 to a display 101, an input 102, ports 103, and
`memory 110. Display 101 is a screen device for displaying
`information, such as a liquid crystal display (LCD) screen.
`Input 102 comprises a keypad, either physical or logical
`(e.g., on screen buttons), but limited to a terse set numbering
`about three to ten buttons and more preferably about five
`buttons. Memory 10 comprises persistent memory 111,
`volatile memory 120, and non-volatile RAM memory 130.
`Persistent memory 111 is typically implemented as a ROM
`or read-only memory. As shown, it stores a single-purpose
`operating system (SPOS) 112 and application(s) 113, which 50
`are described in further detail below. Volatile memory 120 is
`a "scratch" memory, for storing temporary computation
`results. It typically is implemented as a RAM (random(cid:173)
`access memory), for providing a work space for the oper(cid:173)
`ating system and applications. Non-volatile RAM memory 55
`130 represents battery-backed RAM memory or flash
`memory, for storing context information from one session to
`another. When the device 100 is powered down, the memory
`130 stores user data from that session.
`B. Device Software
`The single purpose operating system (SPOS) functions to
`provide a consistent mechanism by which applications 113
`can communicate with the device 100. In this manner,
`applications 113 are shielded from hardware complexity,
`such as hardware interrupts and ports. In other words, it 65
`serves to abstract hardware complexity to a high-level
`application programming interface (API).
`
`4
`Applications 113 are software application programs or
`modules provided for user operation of the device. As shown
`in FIG. 2, for instance, the application programs can be
`implemented as modules 201-206, which are controlled by
`5 a module selector 200. The module selector 200 serves as a
`user interface or shell representing the top-level or "home"
`display presented to a user. In the currently-preferred
`embodiment, the module selector 200 presents the user with
`selection icons for navigating to different applications or
`modules of functionality. In an exemplary embodiment, for
`instance, other modules include a calendar module, a to do
`module, and an address book module.
`In an exemplary embodiment, device 100 comprises a
`REX™ portable device, such as Model REX-3 available
`15 from Franklin Electronic Publishers of Burlington, N.J.
`Further description of the design and operation of the device
`100 is provided in commonly-owned U.S. patent application
`Ser. No. 08/905,463, filed Aug. 4, 1997, and entitled, USER
`INTERFACE METHODOLOGY FOR MICROPROCES-
`20 SOR DEVICE HAVING LIMITED USER INPUT, the
`disclosure of which is hereby incorporated by reference.
`In typical use, the device 100 is used in tandem with a
`desktop computer or PC. The desktop PC is used by the user
`when "at the office," and the portable computing device 100
`25 is employed when the user is "on the road" (i.e., out of the
`office). Thus during typical use, large repositories of data
`reside on the desktop PC which are periodically transferred
`or synchronized with data residing on the portable comput(cid:173)
`ing device 100. Multiple techniques exist for getting data
`30 from the desktop PC to the portable computing device,
`through device port(s) 103. Using a device input/output
`(110) protocol or standard, such as the PC card standard
`(formerly PCMCIA standard), the user can easily transfer
`data to the device 100 via a direct memory transfer.
`35 Alternatively, data can be streamed from the desktop PC to
`the portable computing device via a direct cable (or infrared)
`connection, such as using a serial port-to-serial port con(cid:173)
`nection. Since the data transferred is that of an application
`operating on the desktop PC, potentially thousands of data
`40 items or records might be downloaded into the portable
`computing device 100. This potentially large data volume,
`coupled with the need to transfer data to and from other
`larger devices, poses a connectivity challenge, as connection
`speeds rarely match storage capacity and data size require-
`45 ments. Therefore, improved data transfer methodology is
`desired.
`"Delta Block" File System
`A General
`In the most-preferred embodiment, the data transfer meth(cid:173)
`odology of the present invention adopts an improved file
`system supporting minimal transfer of data, thereby solving
`the problem of disproportionate data storage and commu(cid:173)
`nication speed situations, such as those encountered with
`portable computing devices. A minimal transfer approach
`entails additional difficulties, however. The work required to
`calculate the differences or "deltas" is a primary concern.
`Delta calculation becomes increasingly challenging if the
`file system of the underlying computing device is designed
`to store varied types of data. Ideally, the file system should
`60 be designed for minimal transfer, thus allowing for simple
`delta calculation for any type of data.
`B. File structure
`The present invention provides a "Delta Block" File
`System (DBFS) comprising a file system designed specifi(cid:173)
`cally for the purpose of minimal delta calculation and
`transfer for portable storage devices which use solid state
`storage. The system employs block chains of variably sized
`
`Page 00008
`
`

`
`6,012,063
`
`10
`
`5
`records. The block chains themselves link together to build
`a continuous stream which can be manipulated with data
`access or file operations, including reads, writes, appends,
`inserts and deletes.
`As illustrated in FIG. 3, a basic block structure 300 5
`employed by the file system includes a header 301 compris(cid:173)
`ing a signature section 310, a previous block section 320, a
`next block section 330, and a data size section 340. A data
`(storage) section 350 follows the header. These sections
`function as follows.
`SIGNATURE-signature and flag bits representing the
`validity and state of the block (i.e., used, free, bad).
`PREVIOUS BLOCK-index (i.e., pointer) to previous
`block in chain (special value indicates NONE).
`NEXT BLOCK-index (i.e., pointer) to next block in chain
`(special value indicates NONE).
`DATA SIZE-size of block data area (must be ~size of
`block-size of header).
`DATA-the data itself.
`Thus as shown, the signature section 310 stores identifica(cid:173)
`tion information or "signature," for identifying the validity
`of the block. The previous and next block sections 320, 330
`specify the position of the block in a chain of blocks. The
`data size section 340 specifies the size of the data area of the
`block. In the currently-preferred embodiment, the size of
`each block on the media is physically equal. However, the 25
`actual data area within a block, stored at section 350, can
`vary from block to block.
`FIG. 4 is a block diagram illustrating the difference
`between a file 410 in a traditional file system with that of a
`file 420 in the DBFS file system of the present invention. In
`a traditional file system, each block (e.g., block 411) is filled
`to capacity with data. Additional blocks (e.g., blocks 413,
`415) are added as necessary, allowing for growth at the end
`of the file stream. In the delta block file system, in contrast,
`blocks may or may not be filled to capacity, as shown for
`instance by block 421, thus allowing room for growth within
`the file stream as well as at the end.
`C. Minimizing File System Changes
`The approach adopted by the DBFS is to m1mm1ze
`changes to the block chains in the file system which occur 40
`in response to typical file operations. Fewer changes to the
`file system result in less data begin transferred to another
`system. Table insert operations are a common operation on
`portable computing devices, because of the need to maintain
`sorted lists.
`FIG. 5 is a block diagram illustrating the impact of a table
`insert into a file 510 in a traditional file system and into a file
`520 in the DBFS of the present invention. An insert near the
`top (e.g., block 511) of the file 510 in the traditional file
`system forces data to be moved (i.e., "moved up"), thus 50
`causing updates to blocks in the file after the insert point
`(e.g., block 513). An insert near the top of a DBFS file (e.g.,
`block 521) only grows the size of the data area within the
`affected block, thus leaving all following blocks untouched.
`FIG. 6 is a block diagram illustrating a similar insert but 55
`with a larger amount of data. As shown, the insert into block
`611 again causes data in the file 610 of the traditional file
`system to move up through all blocks after the insert point
`(i.e., blocks 613, 615). The insert into the file 620 of the
`DBFS cannot fit within the space of the target block 621 so 60
`a new block 623 is introduced or allocated to take up the
`overflow. The result is impact to only two blocks in the
`chain.
`D. Improved Data Transfer by Simplifying Delta Calcu(cid:173)
`lations
`The design of the DBFS minimizes the work required to
`compute changes to files and, hence, allows improved data
`
`6
`transfer. In the traditional file system, an insert may affect
`many blocks of the file, thus requiring the entire file to be
`transferred or requiring a complicated difference calculation
`to find how the file has been changed.
`In accordance with the present invention, change or delta
`calculations are simplified in the DBFS as follows. Any new,
`removed, or modified blocks are transferred as changes. A
`simple checksum, CRC (cyclic redundancy checking), or
`similar comparison can be used to test a block for changes
`(e.g., by comparing against a prior checksum for that block).
`A simple checksum, for instance, can be constructed by
`simply adding all the units together which comprise the
`content of interest, such as adding together all of the byte
`values for the block. The approach allows the summation
`process to overflow or wrap around as necessary, thus
`15 yielding an end result or sum that is typically a machine
`word (or other convenient unit). If desired, the checksum or
`CRC value itself can be stored as an element of the block
`header for convenience. Because block modifications are
`isolated to the proximity of the data change, only these
`20 blocks will be involved in a transfer. Furthermore, because
`the delta calculation is at the block level, it can be performed
`without knowledge of the data itself, thereby allowing any
`type of data to be compared and transferred.
`E. Summary of Overall Methodology
`FIG. 7 is a flow chart summarizing methodology 700 for
`storing and transferring information in accordance with the
`present invention. At step 701, the device allocates a file
`system comprising a plurality of blocks linked together to
`form a chain of blocks for storing information. At step 702,
`30 a request is received by the device to store information in the
`file system. In response to this request to store information,
`the device stores variable amounts of data in the blocks, at
`step 703, such that at least one block which is not at the end
`of the chain retains unused storage space capable of storing
`35 additional information. Next, at step 704, the device receives
`a request to modify information stored in the file system. In
`response to this request to modify information, the device
`stores new data in at least one block which is not at the end
`of the chain, at step 705. At step 706, the device receives a
`request to update information stored on another device
`which corresponds to information stored in the file system.
`In response to this request to update information stored on
`another device, the device transfers, at step 707, only those
`blocks which have changed since the information stored on
`45 the other device was last updated. As previously described,
`such a step would typically include a calculation of a
`checksum for determining which blocks have changed (e.g.,
`as compared against a prior checksum stored in the header).
`Thereafter, the method is done (or continues processing
`other requests).
`F. Advantages
`The Delta Block File System or DBFS of the present
`invention provides an improved file system architecture for
`portable computing devices. By isolating typical file
`changes to a small area of the storage media or memory and
`by providing a highly-efficient, yet generic, method of
`detecting modifications, the present invention provides a
`greatly improved mechanism of transferring data between
`computing devices, such as when updating differences
`between data on a portable device and corresponding data on
`a host device. As an additional advantage, since a minimal
`number of blocks are affected by modifications, a device
`would need to perform fewer flash erase cycles, thus yield(cid:173)
`ing potentially longer part life and better performance for the
`65 device.
`While the invention is described in some detail with
`specific reference to a single-preferred embodiment and
`
`Page 00009
`
`

`
`6,012,063
`
`5
`
`10
`
`7
`certain alternatives, there is no intent to limit the invention
`to that particular embodiment or those specific alternatives.
`Thus, the true scope of the present invention is not limited
`to any one of the foregoing exemplary embodiments but is
`instead defined by the appended claims.
`What is claimed is:
`1. In a computing device, a method for a storing and
`transferring data, the method comprising:
`allocating a file system comprising a plurality of blocks
`linked together to form a chain of blocks;
`receiving a request to store information in the file system;
`in response to the request to store information, storing
`variable amounts of data in the blocks such that at least
`one block which is not at the end of the chain retains 15
`unused storage space capable of storing additional
`information;
`receiving a request to modify information stored in the file
`system;
`in response to the request to modify information, storing 20
`new data in at least one block which is not at the end
`of the chain;
`receiving a request to update information stored on
`another device which corresponds to information
`stored in the file system; and
`in response to the request to update information stored on
`another device, transferring only those blocks which
`have changed since the information stored on the other
`device was last updated.
`2. The method of claim 1, wherein said allocating step
`comprises:
`specifying that each block comprises a header portion and
`a storage portion.
`3. The method of claim 2, wherein said header portion of
`a particular block includes a signature section specifying
`validity for that particular block.
`4. The method of claim 2, wherein said header portion of
`a particular block includes pointer information indicating a
`previous block in the chain relative to the particular block.
`5. The method of claim 2, wherein said header portion of
`a particular block includes pointer information indicating a
`next block in the chain relative to the particular block.
`6. The method of claim 2, wherein said header portion of
`a particular block includes data size information indicating 45
`how much information is actually stored by the particular
`block.
`7. The method of claim 2, wherein said storage portion of
`a particular block stores a variable amount of information.
`8. The method of claim 1, wherein all blocks have a 50
`uniform size.
`9. The method of claim 1, said transferring step includes:
`determining whether a particular block has changed by
`comparing a checksum for the particular block against
`a checksum previously computed for that particular 55
`block when the information stored on the other device
`was last updated.
`10. The method of claim 1, further comprising:
`receiving a reques

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket