US20060112113A1 - Static file system differencing and updating - Google Patents

Static file system differencing and updating Download PDF

Info

Publication number
US20060112113A1
US20060112113A1 US11/269,274 US26927405A US2006112113A1 US 20060112113 A1 US20060112113 A1 US 20060112113A1 US 26927405 A US26927405 A US 26927405A US 2006112113 A1 US2006112113 A1 US 2006112113A1
Authority
US
United States
Prior art keywords
new
original
delta
image
images
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US11/269,274
Inventor
Jinsheng Gu
Premjith Manapetty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Innopath Software Inc
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 Innopath Software Inc filed Critical Innopath Software Inc
Priority to US11/269,274 priority Critical patent/US20060112113A1/en
Assigned to INNOPATH SOFTWARE, INC. reassignment INNOPATH SOFTWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MANAPETTY, PREMJITH, GU, JINSHENG
Publication of US20060112113A1 publication Critical patent/US20060112113A1/en
Assigned to QUALCOMM TECHNOLOGIES, INC. reassignment QUALCOMM TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INNOPATH SOFTWARE, INC.
Assigned to QUALCOMM INCORPORATED reassignment QUALCOMM INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: QUALCOMM TECHNOLOGIES, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/97Determining parameters from multiple pictures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Definitions

  • the disclosed embodiments relate to updating static file system images using difference files.
  • Software running on a processor, microprocessor, and/or processing unit to provide certain functionality often changes over time and also increases in complexity. The changes can result from the need to correct bugs, or errors, in the software files, adapt to evolving technologies, or add new features, to name a few.
  • software hosted on mobile processing devices for example mobile wireless devices, often includes numerous software bugs that require correction.
  • Software includes one or more computer programs, algorithms, files, and/or code pertaining to operation of the host device. Software can be divided into smaller units that are referred to as modules or components.
  • Portable processor-based devices like mobile processing devices typically include a real-time operating system (RTOS) in which all software components of the device are linked as a single large executable image.
  • RTOS real-time operating system
  • file system support has become common recently due to the availability of compact storage and more demanding functionalities in these mobile wireless devices.
  • the single large image needs to be preloaded, or embedded, into the device using a slow communication link like a radio, infrared, or serial link.
  • Obstacles to updating the software of mobile processing devices include the time, bandwidth, and cost associated with delivering the updated file to the device, as well as limited resources of the device available for use in updating new files once received.
  • static file system images are required to be updated in-place (e.g., in read-only memory (ROM)) because of resource limitations (e.g., limitations relating to RAM, ROM, time for downloading the image, power consumption, etc) of the host device. Consequently, there is a need for generating difference files that are sized appropriately for efficient transfer to host devices and for use in updating software of resource-limited devices.
  • FIG. 1 is a block diagram of a static file system (SFS) differencing system, under an embodiment.
  • FSS static file system
  • FIG. 2 is a flow diagram for SFS differencing, under an embodiment.
  • FIG. 3 is a flow diagram for SFS differencing, under another embodiment.
  • FIG. 4 is an example SFS image following splitting of the image blocks into portions, under an embodiment.
  • FIG. 5 is a block diagram of an SFS differencing and updating system, under an embodiment.
  • FIG. 6 is a flow diagram for SFS updating, under an embodiment.
  • FIG. 7 is a flow diagram for in-place updating of SFS images in devices, under an embodiment.
  • SFS differencing and updating include portion-level differencing and block-level updating of update units of an original image (referred to as device blocks or blocks) as described below.
  • the differencing and updating of an embodiment splits SFS images into a series of portions based on block information and the SFS image structure.
  • a delta file is generated for each portion (portion-level differencing) of the new SFS image, and the delta file includes information of differences between the portion of the new SFS image and the portion(s) of the original SFS image to which the new SFS image portion corresponds (a new portion can depend on more than one original portion, and in addition, the original portion(s) might not be in the same location as the new portion).
  • the delta files are transferred to a device for use in updating images of the device to the new SFS image.
  • the target SFS image of the device is updated block-by-block using information of the delta files.
  • the block-by-block update of an embodiment reconstructs all portions of the new SFS image in a device block in random access memory (RAM) of the host device and then writes the reconstructed block into ROM of the host device.
  • RAM random access memory
  • a SFS also referred to as a read-only file system
  • SFSs include but are not limited to the Symbian Z drive (also referred to as the “ROM drive”), the Linux compressed ROM file system (CRAMFS), the encrypted file systems, and file systems that might store operating system executables, built-in applications, essential multimedia information, and default language files, to name a few.
  • Symbian Z drive also referred to as the “ROM drive”
  • CRAMFS Linux compressed ROM file system
  • the encrypted file systems and file systems that might store operating system executables, built-in applications, essential multimedia information, and default language files, to name a few.
  • the SFS differencing and updating of embodiments described below receives images of a static file system.
  • the images which include an original image and a new image, each include a number of blocks, for example super blocks, data blocks, etc.
  • the SFS differencing splits the images by using information of the blocks to split the images into multiple portions. Differences are determined between content of the images by determining differences between the portions of the original image and the new image, where the differences are generated for each portion of the new image.
  • the differences include byte-level differences between the portions, but are not so limited.
  • a delta file is generated that includes the differences for each portion of the new image.
  • the SFS differencing and updating of embodiments includes updating by which the SFS of an image hosted on a portable device is updated in-place on the portable device.
  • the updating receives the delta file at a portable device via at least one coupling.
  • Dependent ones of the original portions hosted on the portable device are assembled, and at least one of the is identified that corresponds to the delta file received, where the new portion location in ROM is encoded in the SFS delta package associated with its corresponding delta file in an embodiment.
  • the updating reconstructs at least one new portion on the portable device that corresponds to the delta file identified.
  • the reconstructed new portions of the new image are written to the read-only memory (ROM) of the portable device.
  • ROM read-only memory
  • FIG. 1 is a block diagram of a SFS differencing system 100 , under an embodiment.
  • the SFS differencing system includes an image processing module 102 , a dependency generation module 104 , a difference engine or module 106 , and a packaging engine or module 108 , but is not so limited.
  • the dependency generation module 104 of an embodiment is coupled to the image processing module 102 .
  • the difference engine 106 of an embodiment is coupled to the dependency generation module 104 .
  • the packaging engine 108 of an embodiment is coupled to the difference engine 106 .
  • the SFS differencing system 100 of an embodiment couples among components of a host computer system (not shown), where the components can include at least one of a processor, a controller, a memory device, and/or a bus, but are not so limited.
  • the components can include at least one of a processor, a controller, a memory device, and/or a bus, but are not so limited.
  • One or more of the components or modules 102 - 108 of the SFS differencing system 100 run under control of at least one algorithm, program, or routine.
  • a host computer system processor couples among the components of the host computer system and the components 102 - 108 of the SFS differencing system 100 under program control.
  • image processing module 102 dependency generation module 104 , difference engine 106 , and packaging engine 108 are shown as separate blocks, some or all of these blocks 102 - 108 can be monolithically integrated onto a single chip, distributed among a number of chips or components of a host system, and/or provided by one or some combination of programs or algorithms.
  • the programs or algorithms when present can be implemented in software algorithm(s), firmware, hardware, and any combination of software, firmware, and hardware.
  • module refers to a logically separable part of a program, and is interchangeable with one or more terms including software, algorithm, program, component, and unit.
  • component refers to one or more of the parts that make up a system; a component may be software and/or hardware and may be subdivided into other components.
  • module refers to any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), application-specific integrated circuits (ASIC), etc.
  • CPUs central processing units
  • DSPs digital signal processors
  • ASIC application-specific integrated circuits
  • the SFS differencing system 100 receives at least one original SFS image 112 and at least one new SFS image 114 and performs portion-level differencing to generate one or more delta files as described below.
  • the delta files are assembled into a delta package 122 for transfer to a portable or mobile device, also referred to as a client device. These differences include byte-level differences between one or more portions of blocks of the compared images, but are not so limited.
  • the SFS differencing system 100 generates the delta file in a processor-based or computer system or running under a processor-based or computer system.
  • the computer system on which or under which the SFS differencing system runs includes any collection of computing components and devices operating together, as is known in the art.
  • the computer system can also be a component or subsystem within a larger computer system or network.
  • the delta file can include meta-data along with actual data of replacement and/or insertion operations that represent the differences between the new or current version of the associated file and previous versions of the file, as described in the U.S. Pat. No. 6,925,467 issued to InnoPath Software, Inc. of Sunnyvale, Calif. on Aug. 2, 2005.
  • the SFS differencing system 100 provides any differences between the original image 112 and the new image 114 in delta files of the delta package 122 using a minimum number of bytes and a pre-defined format or protocol, thereby providing a delta file optimized in space.
  • the SFS differencing system 100 performs portion-level differencing
  • FIG. 2 is a flow diagram for SFS differencing 200 , under an embodiment.
  • the SFS differencing is performed, for example, using the SFS differencing system 100 described above and elsewhere herein.
  • the SFS differencing 200 receives 202 images of a static file system.
  • the images include an original image and a new image, but are not so limited.
  • Each image also includes a number of blocks, for example super blocks, data blocks, etc.
  • the blocks are of a pre-specified size (e.g., 64 KB, 128 KB, etc.) but are not so limited.
  • the blocks of the received images are split 204 into a number of portions using information of the blocks for example.
  • the SFS differencing 200 determines 206 differences between content of the images by determining differences between the portions of each of the original image and the new image.
  • a delta file is generated 208 that includes information of the differences in content or data between each portion of the new image and one or more aligned portions of the original image.
  • FIG. 3 is a flow diagram for SFS differencing 300 , under an embodiment.
  • the SFS differencing 300 receives 302 images of a static file system, as described above with reference to FIG. 2 .
  • the received original image is divided 304 into one or more original sections or portions, and the received new image is divided 304 into one or more new sections or portions.
  • the SFS differencing identifies 306 dependency alignments between the original sections and the new sections.
  • a delta file is generated 308 for at least one of the new sections.
  • the delta file includes but is not limited to differences between a new section and one or more original section(s), where the new section depends on the original section(s).
  • the delta files of alternative embodiments may include differences between at least one new section and at least one original section on which the new sections depend.
  • the image processing module 102 receives each of an original SFS image 112 and a new SFS image 114 .
  • the image processing module 102 of an embodiment operates to begin the portion-level differencing of the received images by parsing the specific image area and extracting information of the images.
  • the information extracted about the images is used in differencing and updating operations. This parsing includes decoding the information of the static file system structure and internal format to get related information for use in performing SFS image differencing and updating.
  • the information resulting from the parsing includes, but is not limited to, the locations and sizes of blocks of the image (e.g., super blocks, data blocks, etc.), the compression library used (if compressed), the type of encryption used to encrypt the image (e.g., encryption algorithm, encryption key, etc.) (if encrypted), to name a few.
  • FIG. 4 is an example SFS image 400 following splitting into portions 402 by the image processing module 102 , under an embodiment.
  • the portions 402 include portions or parts of a block (e.g., “Block 4 ”) of the image but are not so limited.
  • Block 4 includes portions 402 - 4 a and 402 - 4 b .
  • a block may contain any number of portions as appropriate to the data content of the block and/or the specific structure of the SFS image.
  • the portions include for example a super block/header portion, a control meta-data portion, a file portion, etc.
  • the SFS image processing module 102 may perform decompression (when the image is compressed), decryption (when the image is encrypted) and/or any other processing needed in order for the image processing module 102 to extract data from the received image.
  • the image processing module 102 of an embodiment also outputs a file which includes mapping information like the SFS image/file name and one or more locations of the SFS image/file name, for example.
  • This file is referred to herein as a hint file but is not so limited.
  • the dependency generation module 104 determines or generates a mapping or alignment between the original images and the new images.
  • the alignment includes information as to portions of the new image that depend on portions of the original image.
  • the alignment of an embodiment also can include information as to the sequence by which the portions of the new image are to be updated during the in-place update of the original image hosted in the processor-based portable device.
  • the dependency generation module 104 uses information of the specific structure of the SFS as domain knowledge (e.g., information from the hint file) in performing the alignment, and the alignment is determined relative to the block boundaries of the images, but is not so limited.
  • the difference engine 106 generally determines or computes the portion-level differences between data of each new portion of the new image and data of the original portion of the original image. More specifically, the difference engine 106 uses information from the dependency generation module 104 to read or gather one or more portions of the old image on which each portion of the new image depends. The difference engine 106 of an embodiment computes the differences between content of the new portion and content of the original portion upon which the new portion depends.
  • the identified differences in data between the original and new portions are encoded into a file that is referred to herein as a delta file.
  • the delta file can include control information like dependency information of dependencies between new portions and original portions.
  • the delta file can include verification information (e.g., checksum values, cyclic redundancy codes (CRCs), etc.) of the delta body, the original portion of an image to be updated, and the corresponding dependency information
  • the difference engine 106 described above determines differences between original and new images at the portion-level
  • the difference engine of alternative embodiments may determine differences using a different granularity (e.g., multiple portions, etc.).
  • the difference engine 106 described above generates a delta file for each portion of a new image that is different from the portion of the original image on which it depends
  • alternative embodiments may generate more than one delta file for each portion or may include difference information of multiple portions in one delta file.
  • the packaging engine 108 receives the delta files generated by the difference engine 106 and assembles the delta files into a delta package or difference package.
  • the packaging engine 108 of an embodiment assembles the delta files into the delta package according to an update order or sequence, but is not so limited.
  • the packaging engine 108 can also perform additional operations on the delta file and/or delta package, for example encrypting the delta package.
  • SFS differencing system 100 described above is described as including the image processing module 102 , dependency generation module 104 , difference engine 106 , and packaging engine 108 as separate modules or components, the embodiment is not so limited. Alternative embodiments for example can include functionality of the modules 102 - 108 in one or more modules and/or distribute the functionality of modules 102 - 108 among any number of modules or system components.
  • the SFS differencing and updating of embodiments include updating by which SFS images hosted on a device like a portable electronic device are updated in-place on the device, as described above.
  • the updating receives the delta file at a portable device via at least one coupling.
  • Dependent ones of the original portions hosted on the portable device are assembled, and at least one of the dependent original sections is identified that corresponds to the delta file received.
  • the updating reconstructs at least one new portion on the portable device that corresponds to the delta file identified.
  • the reconstructed new portions of the new image are written to the ROM of the portable device.
  • FIG. 5 is a block diagram of an SFS differencing and updating system 500 , under an embodiment.
  • the system 500 includes an SFS differencing system 100 and an SFS updating system 550 .
  • the SFS differencing system 100 includes an image processing module 102 , a dependency generation module 104 , a difference engine 106 , and a packaging engine 108 , as described above with reference to FIG. 1 , but is not so limited.
  • the SFS differencing system 100 receives at least one original SFS image 112 and at least one new SFS image 114 and performs portion-level differencing to generate a delta package 122 that includes one or more delta files as described herein.
  • the SFS differencing system 100 generates the delta file in a processor-based or computer system or running under a processor-based or computer system.
  • the computer system on which or under which the SFS differencing system 100 runs includes any collection of computing components and devices operating together, as is known in the art.
  • the computer system can also be a component or subsystem within a larger computer system or network.
  • the SFS updating system 550 is hosted on a processor-based device, and receives the delta file and performs updates to original images hosed on the portable device.
  • the processor-based device or system on which or under which the SFS updating system 550 runs includes any collection of computing components and devices operating together, as is known in the art.
  • the computer system can also be a component or subsystem within a larger computer system or network.
  • the processor-based device or system can include mobile devices, for example, cellular telephones, personal computers, portable computing devices, portable telephones, portable communication devices, subscriber devices or units, and personal digital assistants (PDAs).
  • PDAs personal digital assistants
  • the mobile devices also referred to as “mobile communication devices,” “portable communication devices” and “communication devices,” can include all such devices and equivalents, and are not limited to communication devices that are wireless.
  • the communication path 506 includes any medium by which files are communicated or transferred between processor-based devices or systems. Therefore, the communication path 506 includes wireless couplings or connections, wired couplings or connections, and hybrid wireless/wired couplings or connections.
  • the communication path 506 also includes couplings or connections to and/or through networks or network components including local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), proprietary networks, interoffice or backend networks, and the Internet.
  • the communication path 506 can include various network components (not shown) of a communication service provider or carrier, but is not so limited.
  • the communication path 506 includes removable fixed mediums like floppy disks, hard disk drives, and CD-ROM disks, as well as telephone lines, buses, and electronic mail messages.
  • the delta package 122 is transferred or transmitted to the SFS updating system 550 via the communication path 506 .
  • the SFS updating system 550 includes an update module 552 that uses information of the delta package 122 to perform an in-place update 554 of the SFS image 112 P hosted on the portable device.
  • the update module 552 generally reconstructs the new image 114 P at the portable device by applying contents of the delta package 122 to portions of the original SFS image 112 P hosted on the portable device.
  • the reconstructed portions of the new image 114 P are written to the ROM of the portable device, for example, by writing the new image 114 P over the hosted original image 112 P.
  • the SFS image now hosted on the portable device is substantially identical to the new SFS image 114 received in the first SFS differencing system 100 .
  • FIG. 6 is a flow diagram for SFS updating 600 , under an embodiment.
  • the SFS updating 600 of an embodiment is used in resource-limited computing devices for example.
  • the SFS updating receives 602 the delta file at a portable device via at least one coupling.
  • Dependent original portions of the SFS image hosted on the portable device are assembled 604 .
  • the updating 600 identifies 606 at least one of the dependent original sections that correspond to the received delta file.
  • the updating 600 reconstructs 608 at least one new portion on the portable device that corresponds to the delta file identified.
  • the reconstructed new portions of the new image are subsequently written to the memory (e.g., ROM) of the portable device, for example, simultaneous with or subsequent to processing of all delta files received in a delta package.
  • the memory e.g., ROM
  • FIG. 7 is a flow diagram for in-place updating 700 of SFS images in devices, under an embodiment.
  • the updating 700 can be performed for example by an update module 552 as described above with reference to FIG. 5 .
  • the updating 700 uses the control information encoded in the received delta package to determine 702 that data of the delta package is not corrupt, thereby verifying the integrity of the delta package contents. The integrity of each SFS image portion to be updated can also be verified. If any data of the delta package is corrupt, the error is reported 704 .
  • the updating 700 sets 706 a pointer to the start of the delta package in order to begin the update.
  • the portion update order and device block update order is implicitly encoded in the delta package of an embodiment. It is determined 708 that a delta file is present at the start of the update and the update proceeds.
  • the delta file could be encrypted for security purposes and, in that case, the delta file is decrypted (using appropriate keys) before or simultaneous with the start of the update process.
  • the updating 700 uses information of the delta file contents (e.g., control information) to decode 712 dependency formation information, read 712 related portions of the original image (if necessary), unzip and/or decrypt 712 dependent portions of the original image (if necessary), and assemble 712 dependent content of original portions of the original image hosted on the portable device.
  • information of the delta file contents e.g., control information
  • the updating 700 generates or reconstructs the new portion of the image being updated by applying 714 the contents of the delta file to the dependent content of the original portion of the original image.
  • the new portion once reconstructed is written to an area of RAM in the host device, and is zipped and/or encrypted 714 as appropriate to the SFS image.
  • the new portion is placed 714 into a specific location in the block of the original image so as to replace the original portion to which it corresponds.
  • that particular block is written to the ROM; alternative embodiments may write the reconstructed blocks to the ROM at other points in the update process.
  • the update process then proceeds with processing the delta file for the next block.
  • the updating 712 and 714 described above continues until the end of the delta package is reached and all delta files of the delta package have been processed. In so doing, a determination 716 is made as to whether the delta package includes further delta files for use in updating additional portions of the original image. When the delta package includes unprocessed delta files corresponding to additional portions of the original image to be updated, operation returns to read and apply these unprocessed delta files. When it is determined 716 that all delta files of the delta package have been processed and applied to the original image, the updating 700 writes 718 the new SFS image to the ROM of the portable device.
  • the updating of an embodiment overwrites the original SFS image with the new SFS image, but alternative embodiments can write the new SFS image to one or more other areas of ROM or other device memory areas.
  • the algorithm or routine operating according to these flow diagrams is stored as program code in machine-readable or computer-readable memory areas or devices of a computer system (e.g., non-volatile memory) that forms part of the associated processors, in the associated memory areas, in removable media, such as disks, or hardwired or preprogrammed in chips, such as electronically erasable programmable ROM (“EEPROM”) semiconductor chips, or in any combination of these components, but is not so limited.
  • EEPROM electronically erasable programmable ROM
  • the SFS differencing and updating of an embodiment includes a device for differencing static file system images.
  • the device of an embodiment comprises a receiver that receives images of a static file system, the images including an original image and a new image.
  • the device of an embodiment also comprises a pre-processor that divides the original image into numerous original sections and divides the new image into numerous new sections.
  • the device of an embodiment comprises a dependency generator that identifies dependency alignments between the plurality of original sections and the plurality of new sections.
  • the device of an embodiment comprises a difference engine that generates a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
  • the device of an embodiment further comprises a packaging engine that assembles the delta file for the at least one of the new sections according to an update sequence.
  • the SFS differencing and updating of an embodiment includes a method comprising splitting blocks of SFS images into portions based on block information and image structure information, wherein the SFS images include original images and new images.
  • the method of an embodiment comprises performing portion-level differencing by generating a delta file for a new portion of the new image, wherein the delta file includes information of differences between the new portion and one of more corresponding original portions of the original image.
  • the method of an embodiment comprises transferring the delta file to a client device.
  • the method of an embodiment comprises updating a target SFS image of the client device using information of the delta file by reconstructing all portions of the new image in a device block in random access memory of the host device and writing the device block into read-only memory of the host device.
  • the SFS differencing and updating of an embodiment includes a method comprising receiving images of a static file system, the images including an original image and a new image.
  • the method of an embodiment comprises dividing the original image into a plurality of original sections and divides the new image into a plurality of new sections.
  • the method of an embodiment comprises identifying dependency alignments between the plurality of original sections and the plurality of new sections.
  • the method of an embodiment comprises generating a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
  • the SFS differencing and updating of an embodiment includes a system comprising a receiver that receives images of a static file system, the images including an original image and a new image.
  • the system of an embodiment comprises a pre-processor coupled to the receiver that divides the original image into a plurality of original sections and divides the new image into a plurality of new sections.
  • the system of an embodiment comprises a dependency generator coupled to the pre-processor that identifies dependency alignments between the plurality of original sections and the plurality of new sections.
  • the system of an embodiment comprises a difference engine coupled to the dependency generator that generates a delta file for at least one of the plurality of new sections that is different from at least one of the plurality of original sections on which the at least one new section depends, the delta file including coded differences between a new section and one or more original sections.
  • the system of an embodiment comprises a packaging engine coupled to the difference engine that assembles the delta files into a delta package.
  • the system of an embodiment comprises an update engine in a portable device, wherein the portable device receives the delta package via at least one coupling, wherein the update engine assembles dependent original sections of the plurality of original sections hosted on the portable device, identifies at least one delta file of the delta package that corresponds to at least one of the dependent original sections, and reconstructs at least one new section that corresponds to the at least one delta file identified.
  • the update engine of an embodiment receives the delta package and verifies integrity of contents of at least one delta file of the delta package.
  • the update engine of an embodiment reconstructs the at least one new section in a first memory area of the portable device.
  • the first memory area of an embodiment is in random access memory (RAM).
  • RAM random access memory
  • the update engine of an embodiment continues identifying delta files of the delta package that correspond to at least one of the dependent original sections and reconstructing new sections that correspond to the delta files identified.
  • the update engine of an embodiment determines that all delta files of the delta package have been applied to the original sections hosted on the portable device and in response to the determination writes the reconstructed new sections to a second memory area of the portable device.
  • the update engine of an embodiment writes each block of the reconstructed new sections to a second memory area.
  • the second memory area of an embodiment is in read-only memory (ROM).
  • the SFS differencing and updating of an embodiment includes a method comprising receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks.
  • the method of an embodiment comprises splitting the images by using information of the plurality of blocks to split the images into a plurality of portions.
  • the method of an embodiment comprises determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image.
  • the method of an embodiment comprises generating a delta file that includes the differences for at least one portion.
  • the method of an embodiment comprises transferring the delta file to a portable wireless device that hosts the original image.
  • the method of an embodiment comprises receiving the delta file at a portable device via at least one coupling.
  • the method of an embodiment comprises assembling dependent original portions of the plurality of original portions hosted on the portable device.
  • the method of an embodiment comprises identifying at least one of the dependent original portions that corresponds to the delta file received.
  • the method of an embodiment comprises reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • the method of an embodiment comprises assembling a plurality of the delta files into a delta package.
  • the method of an embodiment comprises transferring the delta package to a portable wireless device that hosts the original image.
  • the method of an embodiment comprises receiving the delta package at the portable device via at least one coupling.
  • the method of an embodiment comprises assembling dependent original portions of the plurality of original portions hosted on the portable device.
  • the method of an embodiment comprises identifying at least one delta file of the delta package that corresponds to at least one of the dependent original portions.
  • the method of an embodiment comprises reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • the SFS differencing and updating of an embodiment includes computer readable media including executable instructions which, when executed in a processing system, determine differences between images by receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks.
  • the media further determines differences between images by splitting the images by using information of the plurality of blocks to split the images into a plurality of portions.
  • the media further determines differences between images by determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image.
  • the media further determines differences between images by generating a delta file that includes the differences for at least one portion.
  • the media further determines differences between images by transferring the delta file to a portable wireless device that hosts the original image.
  • the media further determines differences between images by receiving the delta file at a portable device via at least one coupling.
  • the media further determines differences between images by assembling dependent original portions of the plurality of original portions hosted on the portable device.
  • the media further determines differences between images by identifying at least one of the dependent original portions that corresponds to the delta file received.
  • the media further determines differences between images by reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • the media further determines differences between images by assembling a plurality of the delta files into a delta package.
  • the media of an embodiment may transfer the delta package to a portable wireless device that hosts the original image.
  • the media of an embodiment receives the delta package at the portable device via at least one coupling.
  • the media of an embodiment assembles dependent original portions of the plurality of original portions hosted on the portable device.
  • the media of an embodiment identifies at least one delta file of the delta package that corresponds to at least one of the dependent original portions.
  • the media of an embodiment reconstructs at least one new portion that corresponds to the at least one delta file identified.
  • aspects of the SFS differencing and updating described above may be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), programmable array logic (PAL) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits (ASICs).
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • PAL programmable array logic
  • ASICs application specific integrated circuits
  • microcontrollers with memory such as electronically erasable programmable read only memory (EEPROM)
  • embedded microprocessors firmware, software, etc.
  • aspects of the SFS differencing and updating may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types.
  • the underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (MOSFET) technologies like complementary metal-oxide semiconductor (CMOS), bipolar technologies like emitter-coupled logic (ECL), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, etc.
  • MOSFET metal-oxide semiconductor field-effect transistor
  • CMOS complementary metal-oxide semiconductor
  • ECL emitter-coupled logic
  • polymer technologies e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures
  • mixed analog and digital etc.
  • the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
  • the terms used should not be construed to limit the SFS differencing and updating to the specific embodiments disclosed in the specification and the claims, but should be construed to include all processing systems that operate under the claims to provide file differencing and updating. Accordingly, the SFS differencing and updating is not limited by the disclosure, but instead the scope of the SFS differencing and updating is to be determined entirely by the claims.

Abstract

Systems and methods are provided for static file system (SFS) differencing and updating. The differencing and updating includes portion-level differencing and block-level updating of units of an original image (referred to as blocks). The differencing and updating splits SFS images into portions based on block information and the image structure. A delta file is generated for each portion (portion-level differencing) of the new SFS image; the delta file includes information of differences between the portion of the new SFS image and the portion of the original SFS image to which the new SFS image portion corresponds. The delta files are transferred to a device where the target SFS image of the device is updated block-by-block using information of the delta files. The block-by-block update reconstructs all portions of the new SFS image in a device block in host device RAM and writes the reconstructed block into host device ROM.

Description

    RELATED APPLICATION
  • This application claims the benefit of U.S. Patent Application Nos. 60/626,252, 60/626,292, and 60/626,293, all filed Nov. 8, 2004. This application is related to U.S. Patent Application Nos. (number not yet assigned; attorney docket number DOGO.P020; entitled “Updating Compressed Read-Only Memory File System (CRAMFS) Images”) and (number not yet assigned; attorney docket number DOGO.P021; entitled “Reorganizing Images in Static File System Differencing and Updating”), both filed Nov. 8, 2005.
  • TECHNICAL FIELD
  • The disclosed embodiments relate to updating static file system images using difference files.
  • BACKGROUND
  • Software running on a processor, microprocessor, and/or processing unit to provide certain functionality often changes over time and also increases in complexity. The changes can result from the need to correct bugs, or errors, in the software files, adapt to evolving technologies, or add new features, to name a few. In particular, software hosted on mobile processing devices, for example mobile wireless devices, often includes numerous software bugs that require correction. Software includes one or more computer programs, algorithms, files, and/or code pertaining to operation of the host device. Software can be divided into smaller units that are referred to as modules or components.
  • Portable processor-based devices like mobile processing devices typically include a real-time operating system (RTOS) in which all software components of the device are linked as a single large executable image. Further, file system support has become common recently due to the availability of compact storage and more demanding functionalities in these mobile wireless devices. In addition, the single large image needs to be preloaded, or embedded, into the device using a slow communication link like a radio, infrared, or serial link.
  • Obstacles to updating the software of mobile processing devices include the time, bandwidth, and cost associated with delivering the updated file to the device, as well as limited resources of the device available for use in updating new files once received. As one example, static file system images are required to be updated in-place (e.g., in read-only memory (ROM)) because of resource limitations (e.g., limitations relating to RAM, ROM, time for downloading the image, power consumption, etc) of the host device. Consequently, there is a need for generating difference files that are sized appropriately for efficient transfer to host devices and for use in updating software of resource-limited devices.
  • INCORPORATION BY REFERENCE
  • Each publication, patent, and/or patent application mentioned in this specification is herein incorporated by reference in its entirety to the same extent as if each individual publication and/or patent application was specifically and individually indicated to be incorporated by reference.
  • BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 is a block diagram of a static file system (SFS) differencing system, under an embodiment.
  • FIG. 2 is a flow diagram for SFS differencing, under an embodiment.
  • FIG. 3 is a flow diagram for SFS differencing, under another embodiment.
  • FIG. 4 is an example SFS image following splitting of the image blocks into portions, under an embodiment.
  • FIG. 5 is a block diagram of an SFS differencing and updating system, under an embodiment.
  • FIG. 6 is a flow diagram for SFS updating, under an embodiment.
  • FIG. 7 is a flow diagram for in-place updating of SFS images in devices, under an embodiment.
  • In the drawings, the same reference numbers identify identical or substantially similar elements or acts. To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the Figure number in which that element is first introduced (e.g., element 100 is first introduced and discussed with respect to FIG. 1).
  • DETAILED DESCRIPTION
  • Systems and methods are provided for static file system (SFS) differencing and updating. The systems and methods for SFS differencing and updating include portion-level differencing and block-level updating of update units of an original image (referred to as device blocks or blocks) as described below. The differencing and updating of an embodiment splits SFS images into a series of portions based on block information and the SFS image structure. A delta file is generated for each portion (portion-level differencing) of the new SFS image, and the delta file includes information of differences between the portion of the new SFS image and the portion(s) of the original SFS image to which the new SFS image portion corresponds (a new portion can depend on more than one original portion, and in addition, the original portion(s) might not be in the same location as the new portion). The delta files are transferred to a device for use in updating images of the device to the new SFS image. The target SFS image of the device is updated block-by-block using information of the delta files. The block-by-block update of an embodiment reconstructs all portions of the new SFS image in a device block in random access memory (RAM) of the host device and then writes the reconstructed block into ROM of the host device.
  • A SFS, also referred to as a read-only file system, is a file system that can not be modified during run time. Examples of SFSs include but are not limited to the Symbian Z drive (also referred to as the “ROM drive”), the Linux compressed ROM file system (CRAMFS), the encrypted file systems, and file systems that might store operating system executables, built-in applications, essential multimedia information, and default language files, to name a few.
  • The SFS differencing and updating of embodiments described below receives images of a static file system. The images, which include an original image and a new image, each include a number of blocks, for example super blocks, data blocks, etc. The SFS differencing splits the images by using information of the blocks to split the images into multiple portions. Differences are determined between content of the images by determining differences between the portions of the original image and the new image, where the differences are generated for each portion of the new image. The differences include byte-level differences between the portions, but are not so limited. A delta file is generated that includes the differences for each portion of the new image.
  • The SFS differencing and updating of embodiments includes updating by which the SFS of an image hosted on a portable device is updated in-place on the portable device. The updating receives the delta file at a portable device via at least one coupling. Dependent ones of the original portions hosted on the portable device are assembled, and at least one of the is identified that corresponds to the delta file received, where the new portion location in ROM is encoded in the SFS delta package associated with its corresponding delta file in an embodiment. The updating reconstructs at least one new portion on the portable device that corresponds to the delta file identified. The reconstructed new portions of the new image are written to the read-only memory (ROM) of the portable device.
  • In the following description, numerous specific details are introduced to provide a thorough understanding of, and enabling description for, embodiments of the SFS differencing and updating. One skilled in the relevant art, however, will recognize that the SFS differencing and updating can be practiced without one or more of the specific details, or with other components, systems, etc. In other instances, well-known structures or operations are not shown, or are not described in detail, to avoid obscuring aspects of the SFS differencing and updating.
  • FIG. 1 is a block diagram of a SFS differencing system 100, under an embodiment. The SFS differencing system includes an image processing module 102, a dependency generation module 104, a difference engine or module 106, and a packaging engine or module 108, but is not so limited. The dependency generation module 104 of an embodiment is coupled to the image processing module 102. The difference engine 106 of an embodiment is coupled to the dependency generation module 104. The packaging engine 108 of an embodiment is coupled to the difference engine 106.
  • The SFS differencing system 100 of an embodiment couples among components of a host computer system (not shown), where the components can include at least one of a processor, a controller, a memory device, and/or a bus, but are not so limited. One or more of the components or modules 102-108 of the SFS differencing system 100 run under control of at least one algorithm, program, or routine. A host computer system processor couples among the components of the host computer system and the components 102-108 of the SFS differencing system 100 under program control. While the image processing module 102, dependency generation module 104, difference engine 106, and packaging engine 108 are shown as separate blocks, some or all of these blocks 102-108 can be monolithically integrated onto a single chip, distributed among a number of chips or components of a host system, and/or provided by one or some combination of programs or algorithms. The programs or algorithms when present can be implemented in software algorithm(s), firmware, hardware, and any combination of software, firmware, and hardware.
  • The term “module” as generally used herein refers to a logically separable part of a program, and is interchangeable with one or more terms including software, algorithm, program, component, and unit. The term “component” as generally used herein refers to one or more of the parts that make up a system; a component may be software and/or hardware and may be subdivided into other components. The terms “module”, “component”, and “unit” may be used interchangeably or defined to be subelements of one another in different ways depending on the context. The term “processor” as generally used herein refers to any logic processing unit, such as one or more central processing units (CPUs), digital signal processors (DSPs), application-specific integrated circuits (ASIC), etc.
  • In operation the SFS differencing system 100 receives at least one original SFS image 112 and at least one new SFS image 114 and performs portion-level differencing to generate one or more delta files as described below. The delta files are assembled into a delta package 122 for transfer to a portable or mobile device, also referred to as a client device. These differences include byte-level differences between one or more portions of blocks of the compared images, but are not so limited. The SFS differencing system 100 generates the delta file in a processor-based or computer system or running under a processor-based or computer system. The computer system on which or under which the SFS differencing system runs includes any collection of computing components and devices operating together, as is known in the art. The computer system can also be a component or subsystem within a larger computer system or network.
  • Contents of the delta file provide an efficient representation of the differences between the original image 112 and the new image 114. The delta file can include meta-data along with actual data of replacement and/or insertion operations that represent the differences between the new or current version of the associated file and previous versions of the file, as described in the U.S. Pat. No. 6,925,467 issued to InnoPath Software, Inc. of Sunnyvale, Calif. on Aug. 2, 2005. The SFS differencing system 100 provides any differences between the original image 112 and the new image 114 in delta files of the delta package 122 using a minimum number of bytes and a pre-defined format or protocol, thereby providing a delta file optimized in space.
  • The SFS differencing system 100 performs portion-level differencing, and FIG. 2 is a flow diagram for SFS differencing 200, under an embodiment. The SFS differencing is performed, for example, using the SFS differencing system 100 described above and elsewhere herein. The SFS differencing 200 receives 202 images of a static file system. The images include an original image and a new image, but are not so limited. Each image also includes a number of blocks, for example super blocks, data blocks, etc. The blocks are of a pre-specified size (e.g., 64 KB, 128 KB, etc.) but are not so limited. The blocks of the received images are split 204 into a number of portions using information of the blocks for example. The SFS differencing 200 determines 206 differences between content of the images by determining differences between the portions of each of the original image and the new image. A delta file is generated 208 that includes information of the differences in content or data between each portion of the new image and one or more aligned portions of the original image.
  • As another example, FIG. 3 is a flow diagram for SFS differencing 300, under an embodiment. The SFS differencing 300 receives 302 images of a static file system, as described above with reference to FIG. 2. The received original image is divided 304 into one or more original sections or portions, and the received new image is divided 304 into one or more new sections or portions. The SFS differencing identifies 306 dependency alignments between the original sections and the new sections. A delta file is generated 308 for at least one of the new sections. The delta file includes but is not limited to differences between a new section and one or more original section(s), where the new section depends on the original section(s). The delta files of alternative embodiments may include differences between at least one new section and at least one original section on which the new sections depend.
  • The image processing module 102, as described above with reference to FIG. 1, receives each of an original SFS image 112 and a new SFS image 114. The image processing module 102 of an embodiment operates to begin the portion-level differencing of the received images by parsing the specific image area and extracting information of the images. The information extracted about the images is used in differencing and updating operations. This parsing includes decoding the information of the static file system structure and internal format to get related information for use in performing SFS image differencing and updating. The information resulting from the parsing includes, but is not limited to, the locations and sizes of blocks of the image (e.g., super blocks, data blocks, etc.), the compression library used (if compressed), the type of encryption used to encrypt the image (e.g., encryption algorithm, encryption key, etc.) (if encrypted), to name a few.
  • Based on the target device block information, the image processing module 102 divides or splits the SFS image into a number or series of portions. FIG. 4 is an example SFS image 400 following splitting into portions 402 by the image processing module 102, under an embodiment. The portions 402 include portions or parts of a block (e.g., “Block 4”) of the image but are not so limited. For example, following splitting of an embodiment Block 2 includes portions 402-2 a, 402-2 b, and 402-2 c, and Block 4 includes portions 402-4 a and 402-4 b. Following the splitting operation a block may contain any number of portions as appropriate to the data content of the block and/or the specific structure of the SFS image. The portions include for example a super block/header portion, a control meta-data portion, a file portion, etc. The SFS image processing module 102 may perform decompression (when the image is compressed), decryption (when the image is encrypted) and/or any other processing needed in order for the image processing module 102 to extract data from the received image.
  • The image processing module 102 of an embodiment also outputs a file which includes mapping information like the SFS image/file name and one or more locations of the SFS image/file name, for example. This file is referred to herein as a hint file but is not so limited.
  • The dependency generation module 104, also referred to herein as a dependency analysis module or dependency generator, determines or generates a mapping or alignment between the original images and the new images. The alignment includes information as to portions of the new image that depend on portions of the original image. The alignment of an embodiment also can include information as to the sequence by which the portions of the new image are to be updated during the in-place update of the original image hosted in the processor-based portable device. The dependency generation module 104 uses information of the specific structure of the SFS as domain knowledge (e.g., information from the hint file) in performing the alignment, and the alignment is determined relative to the block boundaries of the images, but is not so limited.
  • The difference engine 106 generally determines or computes the portion-level differences between data of each new portion of the new image and data of the original portion of the original image. More specifically, the difference engine 106 uses information from the dependency generation module 104 to read or gather one or more portions of the old image on which each portion of the new image depends. The difference engine 106 of an embodiment computes the differences between content of the new portion and content of the original portion upon which the new portion depends. The identified differences in data between the original and new portions are encoded into a file that is referred to herein as a delta file. In addition to the encoded differences in data between original and new portions, the delta file can include control information like dependency information of dependencies between new portions and original portions. Furthermore, the delta file can include verification information (e.g., checksum values, cyclic redundancy codes (CRCs), etc.) of the delta body, the original portion of an image to be updated, and the corresponding dependency information
  • While the difference engine 106 described above determines differences between original and new images at the portion-level, the difference engine of alternative embodiments may determine differences using a different granularity (e.g., multiple portions, etc.). Furthermore, while the difference engine 106 described above generates a delta file for each portion of a new image that is different from the portion of the original image on which it depends, alternative embodiments may generate more than one delta file for each portion or may include difference information of multiple portions in one delta file.
  • The packaging engine 108 receives the delta files generated by the difference engine 106 and assembles the delta files into a delta package or difference package. The packaging engine 108 of an embodiment assembles the delta files into the delta package according to an update order or sequence, but is not so limited. The packaging engine 108 can also perform additional operations on the delta file and/or delta package, for example encrypting the delta package.
  • While the SFS differencing system 100 described above is described as including the image processing module 102, dependency generation module 104, difference engine 106, and packaging engine 108 as separate modules or components, the embodiment is not so limited. Alternative embodiments for example can include functionality of the modules 102-108 in one or more modules and/or distribute the functionality of modules 102-108 among any number of modules or system components.
  • The SFS differencing and updating of embodiments include updating by which SFS images hosted on a device like a portable electronic device are updated in-place on the device, as described above. The updating receives the delta file at a portable device via at least one coupling. Dependent ones of the original portions hosted on the portable device are assembled, and at least one of the dependent original sections is identified that corresponds to the delta file received. The updating reconstructs at least one new portion on the portable device that corresponds to the delta file identified. The reconstructed new portions of the new image are written to the ROM of the portable device.
  • FIG. 5 is a block diagram of an SFS differencing and updating system 500, under an embodiment. The system 500 includes an SFS differencing system 100 and an SFS updating system 550. The SFS differencing system 100 includes an image processing module 102, a dependency generation module 104, a difference engine 106, and a packaging engine 108, as described above with reference to FIG. 1, but is not so limited. In operation the SFS differencing system 100 receives at least one original SFS image 112 and at least one new SFS image 114 and performs portion-level differencing to generate a delta package 122 that includes one or more delta files as described herein.
  • The SFS differencing system 100 generates the delta file in a processor-based or computer system or running under a processor-based or computer system. The computer system on which or under which the SFS differencing system 100 runs includes any collection of computing components and devices operating together, as is known in the art. The computer system can also be a component or subsystem within a larger computer system or network.
  • The SFS updating system 550 is hosted on a processor-based device, and receives the delta file and performs updates to original images hosed on the portable device. The processor-based device or system on which or under which the SFS updating system 550 runs includes any collection of computing components and devices operating together, as is known in the art. The computer system can also be a component or subsystem within a larger computer system or network. The processor-based device or system can include mobile devices, for example, cellular telephones, personal computers, portable computing devices, portable telephones, portable communication devices, subscriber devices or units, and personal digital assistants (PDAs). The mobile devices, also referred to as “mobile communication devices,” “portable communication devices” and “communication devices,” can include all such devices and equivalents, and are not limited to communication devices that are wireless.
  • The SFS differencing system 100 and SFS updating system 550 communicate via a communication path 506. The communication path 506 includes any medium by which files are communicated or transferred between processor-based devices or systems. Therefore, the communication path 506 includes wireless couplings or connections, wired couplings or connections, and hybrid wireless/wired couplings or connections. The communication path 506 also includes couplings or connections to and/or through networks or network components including local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), proprietary networks, interoffice or backend networks, and the Internet. The communication path 506 can include various network components (not shown) of a communication service provider or carrier, but is not so limited. Furthermore, the communication path 506 includes removable fixed mediums like floppy disks, hard disk drives, and CD-ROM disks, as well as telephone lines, buses, and electronic mail messages.
  • The delta package 122 is transferred or transmitted to the SFS updating system 550 via the communication path 506. The SFS updating system 550 includes an update module 552 that uses information of the delta package 122 to perform an in-place update 554 of the SFS image 112P hosted on the portable device. The update module 552 generally reconstructs the new image 114P at the portable device by applying contents of the delta package 122 to portions of the original SFS image 112P hosted on the portable device. The reconstructed portions of the new image 114P are written to the ROM of the portable device, for example, by writing the new image 114P over the hosted original image 112P. Upon completion of this SFS update process, the SFS image now hosted on the portable device is substantially identical to the new SFS image 114 received in the first SFS differencing system 100.
  • FIG. 6 is a flow diagram for SFS updating 600, under an embodiment. The SFS updating 600 of an embodiment is used in resource-limited computing devices for example. The SFS updating receives 602 the delta file at a portable device via at least one coupling. Dependent original portions of the SFS image hosted on the portable device are assembled 604. The updating 600 identifies 606 at least one of the dependent original sections that correspond to the received delta file. The updating 600 reconstructs 608 at least one new portion on the portable device that corresponds to the delta file identified. The reconstructed new portions of the new image are subsequently written to the memory (e.g., ROM) of the portable device, for example, simultaneous with or subsequent to processing of all delta files received in a delta package.
  • FIG. 7 is a flow diagram for in-place updating 700 of SFS images in devices, under an embodiment. The updating 700 can be performed for example by an update module 552 as described above with reference to FIG. 5. The updating 700 uses the control information encoded in the received delta package to determine 702 that data of the delta package is not corrupt, thereby verifying the integrity of the delta package contents. The integrity of each SFS image portion to be updated can also be verified. If any data of the delta package is corrupt, the error is reported 704.
  • When it is determined 702 that the data of the delta package is not corrupt, the updating 700 sets 706 a pointer to the start of the delta package in order to begin the update. The portion update order and device block update order is implicitly encoded in the delta package of an embodiment. It is determined 708 that a delta file is present at the start of the update and the update proceeds. The delta file could be encrypted for security purposes and, in that case, the delta file is decrypted (using appropriate keys) before or simultaneous with the start of the update process. The updating 700 uses information of the delta file contents (e.g., control information) to decode 712 dependency formation information, read 712 related portions of the original image (if necessary), unzip and/or decrypt 712 dependent portions of the original image (if necessary), and assemble 712 dependent content of original portions of the original image hosted on the portable device.
  • The updating 700 generates or reconstructs the new portion of the image being updated by applying 714 the contents of the delta file to the dependent content of the original portion of the original image. The new portion once reconstructed is written to an area of RAM in the host device, and is zipped and/or encrypted 714 as appropriate to the SFS image. The new portion is placed 714 into a specific location in the block of the original image so as to replace the original portion to which it corresponds. After each block of the new image is created or reconstructed, that particular block is written to the ROM; alternative embodiments may write the reconstructed blocks to the ROM at other points in the update process. The update process then proceeds with processing the delta file for the next block.
  • The updating 712 and 714 described above continues until the end of the delta package is reached and all delta files of the delta package have been processed. In so doing, a determination 716 is made as to whether the delta package includes further delta files for use in updating additional portions of the original image. When the delta package includes unprocessed delta files corresponding to additional portions of the original image to be updated, operation returns to read and apply these unprocessed delta files. When it is determined 716 that all delta files of the delta package have been processed and applied to the original image, the updating 700 writes 718 the new SFS image to the ROM of the portable device. The updating of an embodiment overwrites the original SFS image with the new SFS image, but alternative embodiments can write the new SFS image to one or more other areas of ROM or other device memory areas.
  • Referring to FIGS. 1, 2, 3, 5, 6, and 7, the operations of the processes are under control of at least one processor, but are not so limited. Those skilled in the relevant art can create source code, microcode, program logic arrays or otherwise implement the SFS differencing and/or SFS updating of an embodiment based on these flow diagrams and the detailed description provided herein. The algorithm or routine operating according to these flow diagrams is stored as program code in machine-readable or computer-readable memory areas or devices of a computer system (e.g., non-volatile memory) that forms part of the associated processors, in the associated memory areas, in removable media, such as disks, or hardwired or preprogrammed in chips, such as electronically erasable programmable ROM (“EEPROM”) semiconductor chips, or in any combination of these components, but is not so limited.
  • The SFS differencing and updating of an embodiment includes a device for differencing static file system images. The device of an embodiment comprises a receiver that receives images of a static file system, the images including an original image and a new image. The device of an embodiment also comprises a pre-processor that divides the original image into numerous original sections and divides the new image into numerous new sections. The device of an embodiment comprises a dependency generator that identifies dependency alignments between the plurality of original sections and the plurality of new sections. The device of an embodiment comprises a difference engine that generates a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
  • The device of an embodiment further comprises a packaging engine that assembles the delta file for the at least one of the new sections according to an update sequence.
  • The SFS differencing and updating of an embodiment includes a method comprising splitting blocks of SFS images into portions based on block information and image structure information, wherein the SFS images include original images and new images. The method of an embodiment comprises performing portion-level differencing by generating a delta file for a new portion of the new image, wherein the delta file includes information of differences between the new portion and one of more corresponding original portions of the original image. The method of an embodiment comprises transferring the delta file to a client device. The method of an embodiment comprises updating a target SFS image of the client device using information of the delta file by reconstructing all portions of the new image in a device block in random access memory of the host device and writing the device block into read-only memory of the host device.
  • The SFS differencing and updating of an embodiment includes a method comprising receiving images of a static file system, the images including an original image and a new image. The method of an embodiment comprises dividing the original image into a plurality of original sections and divides the new image into a plurality of new sections. The method of an embodiment comprises identifying dependency alignments between the plurality of original sections and the plurality of new sections. The method of an embodiment comprises generating a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
  • The SFS differencing and updating of an embodiment includes a system comprising a receiver that receives images of a static file system, the images including an original image and a new image. The system of an embodiment comprises a pre-processor coupled to the receiver that divides the original image into a plurality of original sections and divides the new image into a plurality of new sections. The system of an embodiment comprises a dependency generator coupled to the pre-processor that identifies dependency alignments between the plurality of original sections and the plurality of new sections. The system of an embodiment comprises a difference engine coupled to the dependency generator that generates a delta file for at least one of the plurality of new sections that is different from at least one of the plurality of original sections on which the at least one new section depends, the delta file including coded differences between a new section and one or more original sections. The system of an embodiment comprises a packaging engine coupled to the difference engine that assembles the delta files into a delta package.
  • The system of an embodiment comprises an update engine in a portable device, wherein the portable device receives the delta package via at least one coupling, wherein the update engine assembles dependent original sections of the plurality of original sections hosted on the portable device, identifies at least one delta file of the delta package that corresponds to at least one of the dependent original sections, and reconstructs at least one new section that corresponds to the at least one delta file identified.
  • The update engine of an embodiment receives the delta package and verifies integrity of contents of at least one delta file of the delta package.
  • The update engine of an embodiment reconstructs the at least one new section in a first memory area of the portable device.
  • The first memory area of an embodiment is in random access memory (RAM).
  • The update engine of an embodiment continues identifying delta files of the delta package that correspond to at least one of the dependent original sections and reconstructing new sections that correspond to the delta files identified.
  • The update engine of an embodiment determines that all delta files of the delta package have been applied to the original sections hosted on the portable device and in response to the determination writes the reconstructed new sections to a second memory area of the portable device.
  • The update engine of an embodiment writes each block of the reconstructed new sections to a second memory area.
  • The second memory area of an embodiment is in read-only memory (ROM).
  • The SFS differencing and updating of an embodiment includes a method comprising receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks. The method of an embodiment comprises splitting the images by using information of the plurality of blocks to split the images into a plurality of portions. The method of an embodiment comprises determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image. The method of an embodiment comprises generating a delta file that includes the differences for at least one portion.
  • The method of an embodiment comprises transferring the delta file to a portable wireless device that hosts the original image.
  • The method of an embodiment comprises receiving the delta file at a portable device via at least one coupling. The method of an embodiment comprises assembling dependent original portions of the plurality of original portions hosted on the portable device. The method of an embodiment comprises identifying at least one of the dependent original portions that corresponds to the delta file received. The method of an embodiment comprises reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • The method of an embodiment comprises assembling a plurality of the delta files into a delta package.
  • The method of an embodiment comprises transferring the delta package to a portable wireless device that hosts the original image.
  • The method of an embodiment comprises receiving the delta package at the portable device via at least one coupling. The method of an embodiment comprises assembling dependent original portions of the plurality of original portions hosted on the portable device. The method of an embodiment comprises identifying at least one delta file of the delta package that corresponds to at least one of the dependent original portions. The method of an embodiment comprises reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • The SFS differencing and updating of an embodiment includes computer readable media including executable instructions which, when executed in a processing system, determine differences between images by receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks. The media further determines differences between images by splitting the images by using information of the plurality of blocks to split the images into a plurality of portions. The media further determines differences between images by determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image. The media further determines differences between images by generating a delta file that includes the differences for at least one portion.
  • The media further determines differences between images by transferring the delta file to a portable wireless device that hosts the original image.
  • The media further determines differences between images by receiving the delta file at a portable device via at least one coupling. The media further determines differences between images by assembling dependent original portions of the plurality of original portions hosted on the portable device. The media further determines differences between images by identifying at least one of the dependent original portions that corresponds to the delta file received. The media further determines differences between images by reconstructing at least one new portion that corresponds to the at least one delta file identified.
  • The media further determines differences between images by assembling a plurality of the delta files into a delta package.
  • The media of an embodiment may transfer the delta package to a portable wireless device that hosts the original image.
  • The media of an embodiment receives the delta package at the portable device via at least one coupling. The media of an embodiment assembles dependent original portions of the plurality of original portions hosted on the portable device. The media of an embodiment identifies at least one delta file of the delta package that corresponds to at least one of the dependent original portions. The media of an embodiment reconstructs at least one new portion that corresponds to the at least one delta file identified.
  • Aspects of the SFS differencing and updating described above may be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), programmable array logic (PAL) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits (ASICs). Some other possibilities for implementing aspects of the SFS differencing and updating include: microcontrollers with memory (such as electronically erasable programmable read only memory (EEPROM)), embedded microprocessors, firmware, software, etc. Furthermore, aspects of the SFS differencing and updating may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types. Of course the underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (MOSFET) technologies like complementary metal-oxide semiconductor (CMOS), bipolar technologies like emitter-coupled logic (ECL), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, etc.
  • Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
  • The above description of illustrated embodiments of the SFS differencing and updating is not intended to be exhaustive or to limit the invention to the precise form disclosed. While specific embodiments of, and examples for, the SFS differencing and updating are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the SFS differencing and updating, as those skilled in the relevant art will recognize. The teachings of the SFS differencing and updating provided herein can be applied to other processing systems and communication systems, not only for the SFS differencing and updating systems described above.
  • The elements and acts of the various embodiments described above can be combined to provide further embodiments. These and other changes can be made to the SFS differencing and updating in light of the above detailed description. Furthermore, aspects of the SFS differencing and updating can be modified, if necessary, to employ the systems, functions and concepts of the various patents and applications described above to provide yet further embodiments of the SFS differencing and updating.
  • In general, in the following claims, the terms used should not be construed to limit the SFS differencing and updating to the specific embodiments disclosed in the specification and the claims, but should be construed to include all processing systems that operate under the claims to provide file differencing and updating. Accordingly, the SFS differencing and updating is not limited by the disclosure, but instead the scope of the SFS differencing and updating is to be determined entirely by the claims.
  • While certain aspects of the SFS differencing and updating are presented below in certain claim forms, the inventors contemplate the various aspects of the SFS differencing and updating in any number of claim forms. For example, while only one aspect of the SFS differencing and updating is recited as embodied in computer-readable medium, other aspects may likewise be embodied in computer-readable medium. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the SFS differencing and updating.

Claims (25)

1. A device for differencing static file system images, comprising:
a receiver that receives images of a static file system, the images including an original image and a new image;
a pre-processor that divides the original image into a plurality of original sections and divides the new image into a plurality of new sections;
a dependency generator that identifies dependency alignments between the plurality of original sections and the plurality of new sections; and
a difference engine that generates a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
2. The device of claim 1, further comprising a packaging engine that assembles the delta file for the at least one of the new sections according to an update sequence.
3. A method comprising:
splitting blocks of SFS images into portions based on block information and image structure information, wherein the SFS images include original images and new images;
performing portion-level differencing by generating a delta file for a new portion of the new image, wherein the delta file includes information of differences between the new portion and one of more corresponding original portions of the original image;
transferring the delta file to a client device; and
updating a target SFS image of the client device using information of the delta file by reconstructing all portions of the new image in a device block in random access memory of the host device and writing the device block into read-only memory of the host device.
4. A method comprising:
receiving images of a static file system, the images including an original image and a new image;
dividing the original image into a plurality of original sections and divides the new image into a plurality of new sections;
identifying dependency alignments between the plurality of original sections and the plurality of new sections; and
generating a delta file for at least one of the new sections, wherein the delta file includes differences between the at least one new sections and at least one of the original sections on which the at least one new sections depends.
5. A system comprising:
a receiver that receives images of a static file system, the images including an original image and a new image;
a pre-processor coupled to the receiver that divides the original image into a plurality of original sections and divides the new image into a plurality of new sections;
a dependency generator coupled to the pre-processor that identifies dependency alignments between the plurality of original sections and the plurality of new sections;
a difference engine coupled to the dependency generator that generates a delta file for at least one of the plurality of new sections that is different from at least one of the plurality of original sections on which the at least one new section depends, the delta file including coded differences between a new section and one or more original sections; and
a packaging engine coupled to the difference engine that assembles the delta files into a delta package.
6. The system of claim 5, further comprising an update engine in a portable device, wherein the portable device receives the delta package via at least one coupling, wherein the update engine assembles dependent original sections of the plurality of original sections hosted on the portable device, identifies at least one delta file of the delta package that corresponds to at least one of the dependent original sections, and reconstructs at least one new section that corresponds to the at least one delta file identified.
7. The system of claim 6, wherein the update engine receives the delta package and verifies integrity of contents of at least one delta file of the delta package.
8. The system of claim 6, wherein the update engine reconstructs the at least one new section in a first memory area of the portable device.
9. The system of claim 8, wherein the first memory area is in random access memory (RAM).
10. The system of claim 8, wherein the update engine continues identifying delta files of the delta package that correspond to at least one of the dependent original sections and reconstructing new sections that correspond to the delta files identified.
11. The system of claim 10, wherein the update engine determines that all delta files of the delta package have been applied to the original sections hosted on the portable device and in response to the determination writes the reconstructed new sections to a second memory area of the portable device.
12. The system of claim 11, wherein the update engine writes each block of the reconstructed new sections to a second memory area.
13. The system of claim 11, wherein the second memory area is in read-only memory (ROM).
14. A method comprising:
receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks;
splitting the images by using information of the plurality of blocks to split the images into a plurality of portions;
determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image;
generating a delta file that includes the differences for at least one portion.
15. The method of claim 14, further comprising transferring the delta file to a portable wireless device that hosts the original image.
16. The method of claim 14, further comprising:
receiving the delta file at a portable device via at least one coupling;
assembling dependent original portions of the plurality of original portions hosted on the portable device;
identifying at least one of the dependent original portions that corresponds to the delta file received; and
reconstructing at least one new portion that corresponds to the at least one delta file identified.
17. The method of claim 14, further comprising assembling a plurality of the delta files into a delta package.
18. The method of claim 17, further comprising transferring the delta package to a portable wireless device that hosts the original image.
19. The method of claim 18, further comprising:
receiving the delta package at the portable device via at least one coupling;
assembling dependent original portions of the plurality of original portions hosted on the portable device;
identifying at least one delta file of the delta package that corresponds to at least one of the dependent original portions; and
reconstructing at least one new portion that corresponds to the at least one delta file identified.
20. Computer readable media including executable instructions which, when executed in a processing system, determine differences between images by:
receiving images of a static file system, the images including an original image and a new image, wherein the images include a plurality of blocks;
splitting the images by using information of the plurality of blocks to split the images into a plurality of portions;
determining differences between content of the images by determining differences between the plurality of portions of the original image and the new image;
generating a delta file that includes the differences for at least one portion.
21. The media of claim 20, wherein the media further determines differences between images by transferring the delta file to a portable wireless device that hosts the original image.
22. The media of claim 20, wherein the media further determines differences between images by:
receiving the delta file at a portable device via at least one coupling;
assembling dependent original portions of the plurality of original portions hosted on the portable device;
identifying at least one of the dependent original portions that corresponds to the delta file received; and
reconstructing at least one new portion that corresponds to the at least one delta file identified.
23. The media of claim 20, wherein the media further determines differences between images by assembling a plurality of the delta files into a delta package.
24. The media of claim 23, further comprising transferring the delta package to a portable wireless device that hosts the original image.
25. The media of claim 24, further comprising:
receiving the delta package at the portable device via at least one coupling;
assembling dependent original portions of the plurality of original portions hosted on the portable device;
identifying at least one delta file of the delta package that corresponds to at least one of the dependent original portions; and
reconstructing at least one new portion that corresponds to the at least one delta file identified.
US11/269,274 2004-11-08 2005-11-08 Static file system differencing and updating Abandoned US20060112113A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/269,274 US20060112113A1 (en) 2004-11-08 2005-11-08 Static file system differencing and updating

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US62625204P 2004-11-08 2004-11-08
US62629304P 2004-11-08 2004-11-08
US62629204P 2004-11-08 2004-11-08
US11/269,274 US20060112113A1 (en) 2004-11-08 2005-11-08 Static file system differencing and updating

Publications (1)

Publication Number Publication Date
US20060112113A1 true US20060112113A1 (en) 2006-05-25

Family

ID=36337104

Family Applications (3)

Application Number Title Priority Date Filing Date
US11/269,277 Expired - Fee Related US7711706B2 (en) 2004-11-08 2005-11-08 Reorganizing images in static file system differencing and updating
US11/269,463 Expired - Fee Related US7865479B2 (en) 2004-11-08 2005-11-08 Updating compressed read-only memory file system (CRAMFS) images
US11/269,274 Abandoned US20060112113A1 (en) 2004-11-08 2005-11-08 Static file system differencing and updating

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US11/269,277 Expired - Fee Related US7711706B2 (en) 2004-11-08 2005-11-08 Reorganizing images in static file system differencing and updating
US11/269,463 Expired - Fee Related US7865479B2 (en) 2004-11-08 2005-11-08 Updating compressed read-only memory file system (CRAMFS) images

Country Status (4)

Country Link
US (3) US7711706B2 (en)
JP (3) JP5173427B2 (en)
KR (2) KR100917064B1 (en)
WO (3) WO2006052904A2 (en)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235043A1 (en) * 2004-04-15 2005-10-20 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US20060155735A1 (en) * 2005-01-07 2006-07-13 Microsoft Corporation Image server
US20060155674A1 (en) * 2005-01-07 2006-07-13 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US20080096614A1 (en) * 2006-10-17 2008-04-24 Intel Corporation Device, system, and method for fast network entry for wireless devices in idle mode
US20090172338A1 (en) * 2005-08-18 2009-07-02 Johan Eker Feedback linker for increased delta performance
US20090271528A1 (en) * 2004-04-15 2009-10-29 Microsoft Corporation Efficient chunking algorithm
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20090276698A1 (en) * 2008-05-02 2009-11-05 Microsoft Corporation Document Synchronization Over Stateless Protocols
US20100312758A1 (en) * 2009-06-05 2010-12-09 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US20110113418A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Cross-Updating Of Software Between Self-Service Financial Transaction Machines
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US20110113416A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US20110113414A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Software Updates Using Delta Patching
US20110113070A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Software Stack Building Using Logically Protected Region Of Computer-Readable Medium
US20110113419A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
EP2472414A1 (en) * 2010-12-28 2012-07-04 Gemalto SA Method for updating a file system storage from a remote update server
US8972974B2 (en) 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US9075693B2 (en) 2012-06-27 2015-07-07 Google Inc. Methods for updating applications
US20160139911A1 (en) * 2013-07-25 2016-05-19 Oracle International Corporation External platform extensions in a multi-tenant environment
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US10579358B2 (en) * 2016-11-10 2020-03-03 Cisco Technology, Inc. Space-optimized software installation using in-place extractable archive image
JP2022529031A (en) * 2019-04-17 2022-06-16 華為技術有限公司 Patching methods, related equipment and systems

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
JP4854973B2 (en) * 2005-03-09 2012-01-18 富士通株式会社 Storage control program, storage control method, storage control device, and storage control system
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US7756826B2 (en) * 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
EP1934729B1 (en) * 2005-10-06 2021-06-23 Red Bend Ltd. Methods and systems for updating content including a compressed version
US7567994B2 (en) * 2006-01-18 2009-07-28 International Business Machines Corporation Method and apparatus to proactively capture and transmit dense diagnostic data of a file system
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
JP2009536395A (en) * 2006-06-19 2009-10-08 サムスン エレクトロニクス カンパニー リミテッド Information upgrade system and method of OTA-capable terminal {INFORMATIONUPGRADESYSTEMSYSTEMMETHODFORMATA-CAPABLEDEVICE}
CN101578587B (en) * 2006-11-24 2015-02-25 Lsi公司 Operation for delaying the reduction of lifetime of memory
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
GB0712640D0 (en) * 2007-06-28 2007-08-08 Symbian Software Ltd Domputing device having a merged directory hierarchy from multiple filesystems
US8065671B1 (en) * 2007-08-20 2011-11-22 United States Automobile Association (USAA) Systems and methods for product updates with provisioning of data items
US8311058B2 (en) 2008-05-10 2012-11-13 Vantrix Corporation Modular transcoding pipeline
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US8630981B1 (en) * 2007-12-21 2014-01-14 Symantec Corporation Techniques for differencing binary installation packages
US8561108B2 (en) * 2008-03-25 2013-10-15 International Business Machines Corporation Video episode order adherence
US8689266B2 (en) * 2008-03-25 2014-04-01 International Business Machines Corporation Dynamic rebroadcast scheduling of videos
US8676809B1 (en) * 2008-06-30 2014-03-18 Symantec Corporation Method and apparatus for mapping virtual machine incremental images
WO2010016058A2 (en) * 2008-08-04 2010-02-11 Red Bend Ltd. Performing an in-place update of an operating storage device
US8332839B2 (en) * 2008-08-15 2012-12-11 Lsi Corporation Method and system for modifying firmware image settings within data storage device controllers
JP5113699B2 (en) * 2008-09-24 2013-01-09 株式会社日立ソリューションズ Firmware update system and update image generation / distribution server device
US8612961B2 (en) * 2008-12-31 2013-12-17 Motorola Mobility Llc System and method for downloading software upgrades
US8762348B2 (en) * 2009-06-09 2014-06-24 Emc Corporation Segment deduplication system with compression of segments
US8731190B2 (en) * 2009-06-09 2014-05-20 Emc Corporation Segment deduplication system with encryption and compression of segments
US8401181B2 (en) * 2009-06-09 2013-03-19 Emc Corporation Segment deduplication system with encryption of segments
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US10038902B2 (en) 2009-11-06 2018-07-31 Adobe Systems Incorporated Compression of a collection of images using pattern separation and re-organization
WO2011066644A1 (en) * 2009-12-01 2011-06-09 Vantrix Corporation System and methods for efficient media delivery using cache
JP2013517565A (en) * 2010-01-12 2013-05-16 グーグル インコーポレイテッド Operating system automatic update procedure
WO2012033498A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. Systems and methods for data compression
KR20120041582A (en) * 2010-10-21 2012-05-02 삼성전자주식회사 Snapshot image segmentation apparatus and snapshot image segmentation method
US8473504B2 (en) * 2011-05-12 2013-06-25 Samsung Electronics Co., Ltd. Stabilized binary differencing
US9112922B2 (en) 2012-08-28 2015-08-18 Vantrix Corporation Method and system for self-tuning cache management
GB2507751A (en) 2012-11-07 2014-05-14 Ibm Storing data files in a file system which provides reference data files
CN104714811A (en) * 2013-12-13 2015-06-17 中兴通讯股份有限公司 Method and device for manufacturing difference upgrade package and system difference upgrade method and device
CN105335181A (en) * 2014-08-06 2016-02-17 中兴通讯股份有限公司 OTA upgrade realization method and terminal
CN107077396B (en) * 2015-01-26 2020-12-04 日立汽车系统株式会社 In-vehicle control device, program writing device, program generating device, and method
US9792109B2 (en) * 2015-09-30 2017-10-17 Apple Inc. Software updating
WO2019070687A1 (en) * 2017-10-03 2019-04-11 Lyconos, Inc. Systems and methods for document automation
US10853495B2 (en) * 2019-03-29 2020-12-01 Microsoft Technology Licensing, Llc Method for patching and updating encrypted disk images in a reliable and secure fashion
KR102088170B1 (en) * 2019-08-27 2020-03-12 루나 주식회사 Method of data structuring for difference between old and new data and device thereof
US11334364B2 (en) 2019-12-16 2022-05-17 Microsoft Technology Licensing, Llc Layered composite boot device and file system for operating system booting in file system virtualization environments

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274805A (en) * 1990-01-19 1993-12-28 Amalgamated Software Of North America, Inc. Method of sorting and compressing data
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US20020065799A1 (en) * 2000-11-30 2002-05-30 Storage Technology Corporation Method and system of storing a main data file and deltas in a storage device for determining new data files from the main data file and the deltas
US20030023964A1 (en) * 2001-07-26 2003-01-30 Gowri Rajaram System and method for compacting field upgradeable wireless communication device software code sections
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US20030212712A1 (en) * 2002-05-13 2003-11-13 Jinsheng Gu Byte-level file differencing and updating algorithms
US6671703B2 (en) * 2000-06-22 2003-12-30 Synchrologic, Inc. System and method for file transmission using file differentiation
US20040062130A1 (en) * 2002-09-30 2004-04-01 Chiang Ying-Hsin Robert Updating electronic files using byte-level file differencing and updating algorithms
US20040098420A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Generating difference files using module information of embedded software components
US20040098427A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Device memory management during electronic file updating
US20040243992A1 (en) * 2003-01-21 2004-12-02 Gustafson James P. Update system capable of updating software across multiple FLASH chips
US20040250245A1 (en) * 2003-06-04 2004-12-09 Rao Bindu Rama Network having customizable generators and electronic device having customizable updating software
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US20050021572A1 (en) * 2003-07-21 2005-01-27 Liwei Ren Algorithms for block-level code alignment of software binary files
US20050132179A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20060075284A1 (en) * 2004-09-30 2006-04-06 Skan Peter L Method for over-the-air firmware update of NAND flash memory based mobile devices
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
US20060190939A1 (en) * 2000-11-17 2006-08-24 Shao-Chun Chen Updatable mobile handset based on linux with compression and decompression techniques
US7287068B1 (en) * 2002-12-13 2007-10-23 Bmc Software, Inc. System and method for updating devices that execute an operating system or application program directly from nonvolatile storage
US20070299886A1 (en) * 2006-06-22 2007-12-27 Microsoft Corporation Media difference files for compressed catalog files
US7343443B1 (en) * 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US7529779B2 (en) * 2004-06-10 2009-05-05 Samsung Electronics Co., Ltd. Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274384A (en) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk Extracting/updating device of execution file difference and extracting method for execution file difference
JPH0981427A (en) * 1995-09-18 1997-03-28 Nippon Telegr & Teleph Corp <Ntt> Method for generating update difference data extraction program and device therefor
CA2357382A1 (en) 2001-09-17 2003-03-17 Soma Networks, Inc. Software update method, apparatus and system
JP2003108397A (en) * 2001-09-27 2003-04-11 Nec Eng Ltd Firmware rewriting method
US6988182B2 (en) * 2002-02-13 2006-01-17 Power Measurement Ltd. Method for upgrading firmware in an electronic device
JP4285679B2 (en) * 2002-03-11 2009-06-24 富士通株式会社 Differential transfer method, program and system
US7461373B2 (en) * 2002-12-05 2008-12-02 Samsung Electronics Co., Ltd. Apparatus and method for upgrading software of a wireless mobile station
JP3864337B2 (en) * 2002-12-27 2006-12-27 富士通株式会社 How to upgrade
JP2004227520A (en) * 2003-01-27 2004-08-12 Mitsubishi Electric Corp Device, method and program for generating old and new program rewriting information, and computer readable recording medium recording the program
US7117204B2 (en) * 2003-12-03 2006-10-03 International Business Machines Corporation Transparent content addressable data storage and compression for a file system
US7079051B2 (en) * 2004-03-18 2006-07-18 James Andrew Storer In-place differential compression
US7492953B2 (en) * 2004-06-17 2009-02-17 Smith Micro Software, Inc. Efficient method and system for reducing update requirements for a compressed binary image
US7389505B2 (en) * 2004-07-30 2008-06-17 Extreme Networks, Inc. Method and apparatus for modifying software

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274805A (en) * 1990-01-19 1993-12-28 Amalgamated Software Of North America, Inc. Method of sorting and compressing data
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6671703B2 (en) * 2000-06-22 2003-12-30 Synchrologic, Inc. System and method for file transmission using file differentiation
US20060190939A1 (en) * 2000-11-17 2006-08-24 Shao-Chun Chen Updatable mobile handset based on linux with compression and decompression techniques
US20020065799A1 (en) * 2000-11-30 2002-05-30 Storage Technology Corporation Method and system of storing a main data file and deltas in a storage device for determining new data files from the main data file and the deltas
US20030023964A1 (en) * 2001-07-26 2003-01-30 Gowri Rajaram System and method for compacting field upgradeable wireless communication device software code sections
US20030212712A1 (en) * 2002-05-13 2003-11-13 Jinsheng Gu Byte-level file differencing and updating algorithms
US20040062130A1 (en) * 2002-09-30 2004-04-01 Chiang Ying-Hsin Robert Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US20040098420A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Generating difference files using module information of embedded software components
US20040098427A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Device memory management during electronic file updating
US7287068B1 (en) * 2002-12-13 2007-10-23 Bmc Software, Inc. System and method for updating devices that execute an operating system or application program directly from nonvolatile storage
US20040243992A1 (en) * 2003-01-21 2004-12-02 Gustafson James P. Update system capable of updating software across multiple FLASH chips
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US20040250245A1 (en) * 2003-06-04 2004-12-09 Rao Bindu Rama Network having customizable generators and electronic device having customizable updating software
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
US7343443B1 (en) * 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US20050021572A1 (en) * 2003-07-21 2005-01-27 Liwei Ren Algorithms for block-level code alignment of software binary files
US20050132179A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7529779B2 (en) * 2004-06-10 2009-05-05 Samsung Electronics Co., Ltd. Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network
US20060075284A1 (en) * 2004-09-30 2006-04-06 Skan Peter L Method for over-the-air firmware update of NAND flash memory based mobile devices
US20070299886A1 (en) * 2006-06-22 2007-12-27 Microsoft Corporation Media difference files for compressed catalog files

Cited By (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235043A1 (en) * 2004-04-15 2005-10-20 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20090271528A1 (en) * 2004-04-15 2009-10-29 Microsoft Corporation Efficient chunking algorithm
US8117173B2 (en) 2004-04-15 2012-02-14 Microsoft Corporation Efficient chunking algorithm
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20100064141A1 (en) * 2004-09-24 2010-03-11 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US8112496B2 (en) 2004-09-24 2012-02-07 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20060155735A1 (en) * 2005-01-07 2006-07-13 Microsoft Corporation Image server
US7849462B2 (en) 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US8073926B2 (en) 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US20060155674A1 (en) * 2005-01-07 2006-07-13 Microsoft Corporation Image server
US20090172338A1 (en) * 2005-08-18 2009-07-02 Johan Eker Feedback linker for increased delta performance
US9066348B2 (en) * 2006-10-17 2015-06-23 Intel Coporation Device, system, and method for fast network entry for wireless devices in idle mode
US20080096614A1 (en) * 2006-10-17 2008-04-24 Intel Corporation Device, system, and method for fast network entry for wireless devices in idle mode
US8984392B2 (en) 2008-05-02 2015-03-17 Microsoft Corporation Document synchronization over stateless protocols
US20090276698A1 (en) * 2008-05-02 2009-11-05 Microsoft Corporation Document Synchronization Over Stateless Protocols
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US8572030B2 (en) 2009-06-05 2013-10-29 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US20100312758A1 (en) * 2009-06-05 2010-12-09 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US20110113422A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US9176898B2 (en) 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US20110113421A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US9128799B2 (en) 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US20110113417A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US20110113419A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US20110113420A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US20110113070A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Software Stack Building Using Logically Protected Region Of Computer-Readable Medium
US20110113413A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Software Updates Using Delta Patching
US9122558B2 (en) * 2009-11-09 2015-09-01 Bank Of America Corporation Software updates using delta patching
US20110113414A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Software Updates Using Delta Patching
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US20110113416A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US8584113B2 (en) 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US8671402B2 (en) 2009-11-09 2014-03-11 Bank Of America Corporation Network-enhanced control of software updates received via removable computer-readable medium
US8972974B2 (en) 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US20110113418A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Cross-Updating Of Software Between Self-Service Financial Transaction Machines
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
EP2472414A1 (en) * 2010-12-28 2012-07-04 Gemalto SA Method for updating a file system storage from a remote update server
WO2012089490A1 (en) * 2010-12-28 2012-07-05 Gemalto Sa Method for updating a file system storage from a remote update server
US9075693B2 (en) 2012-06-27 2015-07-07 Google Inc. Methods for updating applications
US20160139911A1 (en) * 2013-07-25 2016-05-19 Oracle International Corporation External platform extensions in a multi-tenant environment
US10038698B2 (en) * 2013-07-25 2018-07-31 Oracle International Corporation External platform extensions in a multi-tenant environment
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US10579358B2 (en) * 2016-11-10 2020-03-03 Cisco Technology, Inc. Space-optimized software installation using in-place extractable archive image
JP2022529031A (en) * 2019-04-17 2022-06-16 華為技術有限公司 Patching methods, related equipment and systems
JP7174866B2 (en) 2019-04-17 2022-11-17 華為技術有限公司 Patching method, related device and system
US11797288B2 (en) 2019-04-17 2023-10-24 Huawei Technologies Co., Ltd. Patching method, related apparatus, and system

Also Published As

Publication number Publication date
KR100917064B1 (en) 2009-09-15
US20060174300A1 (en) 2006-08-03
JP2008519360A (en) 2008-06-05
WO2006052897A2 (en) 2006-05-18
WO2006052946A3 (en) 2009-04-09
WO2006052904A3 (en) 2009-04-09
JP5173427B2 (en) 2013-04-03
WO2006052904A2 (en) 2006-05-18
WO2006052946A2 (en) 2006-05-18
KR20070100708A (en) 2007-10-11
US20060123032A1 (en) 2006-06-08
KR100949855B1 (en) 2010-03-25
JP2012234563A (en) 2012-11-29
US7711706B2 (en) 2010-05-04
KR20070100709A (en) 2007-10-11
WO2006052897A3 (en) 2008-10-02
JP2008522254A (en) 2008-06-26
US7865479B2 (en) 2011-01-04

Similar Documents

Publication Publication Date Title
US20060112113A1 (en) Static file system differencing and updating
US7350205B2 (en) Upgrading electronic files of a mobile device upgrade client
KR100506785B1 (en) System and method for updating and distributing information
US7669195B1 (en) Electronic device network supporting compression and decompression in electronic devices and update generator
US7089270B2 (en) Processing software images for use in generating difference files
US8429643B2 (en) Secure upgrade of firmware update in constrained memory
US20050010576A1 (en) File differencing and updating engines
US20060130046A1 (en) System and method for updating and distributing information
WO2017095565A1 (en) Methods and apparatus to provide for efficient and secure software updates
US20040215755A1 (en) System and method for updating and distributing information
US20050055684A1 (en) Mobile handset with update agent implemented in hardware
WO2019062015A1 (en) Source code protection method, application server, and computer-readable storage medium
CN112947981A (en) Application program resource updating method and device, terminal equipment and server
CN115080088A (en) Software upgrading method, system and medium based on OTA technology
CN111818087B (en) Block chain node access method, device, equipment and readable storage medium
CN112052432A (en) Terminal device authorization method and device
CN116522368A (en) Firmware decryption analysis method for Internet of things equipment, electronic equipment and medium
WO2020134536A1 (en) Method and apparatus for customized development for payment application, computer device, and storage medium
CN111046389A (en) Method for securely updating firmware components and portable computer station for implementation
WO2019183806A1 (en) Resource permission processing method and apparatus, and storage medium and chip
CN108664796B (en) So file protection method and device
CN114547653A (en) Encryption method, decryption method, device, equipment and medium for development environment
CN114143197A (en) OTA (over the air) upgrading method, device and equipment of Internet of things equipment and readable storage medium
CN114327657B (en) Large mirror image division downloading and signature verification method based on Fastboot and storage medium thereof
WO2005039161A1 (en) Upgrading electronic files of a mobile device upgrade client

Legal Events

Date Code Title Description
AS Assignment

Owner name: INNOPATH SOFTWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GU, JINSHENG;MANAPETTY, PREMJITH;REEL/FRAME:017218/0446;SIGNING DATES FROM 20060117 TO 20060124

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION

AS Assignment

Owner name: QUALCOMM TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INNOPATH SOFTWARE, INC.;REEL/FRAME:038943/0852

Effective date: 20160607

AS Assignment

Owner name: QUALCOMM INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUALCOMM TECHNOLOGIES, INC.;REEL/FRAME:039900/0760

Effective date: 20160901