Conceptually, a computing system (e.g., a computing device, a personal computer, a laptop, a Smartphone, a mobile phone) can accept information (content or data) and manipulate it to obtain or determine a result based on a sequence of instructions (or a computer program) effectively describing how to process the information. Typically, the information is stored in a computer readable medium in a binary form. More complex computing systems can store content including the computer program itself. A computer program may be invariable and/or built into, for example, a computer (or computing) device as logic circuitry provided on microprocessors or computer chips. Today, general purpose computers can have both kinds of programming. Storing content (or information retention) is of one the core functions of computing devices. Today, numerous types of computing devices are available. These computing devices widely range with respect to size, cost, amount of storage and processing power. The computing devices that are available today include: expensive and powerful servers, relatively cheaper Personal Computers (PC's) and laptops, and yet less expensive microprocessors (or computer chips) provided in storage devices, automobiles, and household electronic appliances. Memory and storage devices have long been an important part of computing and computing devices. Memory and storage device technology have been markedly improved in recent years. Today, relatively large amounts of content can be stored in portable and easy to access devices such as USB flash drives (or USB flash devices). The content stored on USB flash drives can be easily carried and copied on to various computing devices. By way of example, data stored on a server computer can be copied on to a USB flash drive and taken home and loaded (or copied) on to a Personal Computer (PC).
In recent years, computing systems have become more portable and mobile. As a result, various mobile and handheld devices have been made available. By way of example, wireless phones, media players, Personal Digital Assistants (PDA's) are widely used today. Generally, a mobile or a handheld device (also known as a handheld computer or simply a handheld) can be a pocket-sized computing device, typically utilizing a small visual display screen for user output and a miniaturized keyboard for user input. In the case of a Personal Digital Assistant (PDA), the input and output can be combined into a touch-screen interface. In particular, mobile communication devices (e.g., mobile phones) and portable media players (e.g., the iPod® available from Apple Inc.) have become extremely popular. Some mobile devices (e.g., the iPhone® also from Apple Inc.) offer computing environments that are similar to that provided by a Personal Computer (PC). As such, a mobile device can effectively provide a complete standardized interface and platform for application developers.
As generally known in the art, a computing system can have a support system to manage various resources (e.g., memory, peripheral devices) and services (e.g., basic functions such as opening files) and allow the resources to be shared among multiple programs. One such support system is generally known as an Operating System (OS), which provides programmers with an interface used to access these resources and services. Most operating systems provide a file system as an integral part of a computing system. A file system (or a filesystem) can store and organize data as computer files making it easier to find and access the data. A file system may use a data storage device (or a storage device) such as, for example, a Hard Disk Drive (HDD), CD-ROM, or a Flash Drive (FD). File systems, such as, File Allocation Table (FAT) and Hieratical File Systems (HFS) are generally well known. Live File Systems (LFS) have been recently developed. LFS can effectively turn a less flexible storage medium (e.g., a Digital Video Disc (DVD), a Compact Disk (CD)) into a more flexible storage device (e.g., a Flash Drive). In other words, LFS allow writing to DVD's and CD's as if they were a Flash Drive.
In view of the foregoing, it is apparent that file systems are an important aspect of computing and are widely used in various computing systems and storage devices. However, some file systems provide limited or reduced capabilities. Limited or reduced file systems are generally more conventional file systems. As such, a limited or reduced file system may be more prevalent in more conventional systems and can be relatively less expensive and therefore more desirable to use, for example, in a portable mobile device or Consumer Electronic (CE) device. As an example, one limitation of a more conventional file system (e.g., a FAT file system) may be relatively slower system performance than a more modern file system especially when a relatively large amount of data is written to the file system. This is especially problematic, for example, in continuous recording of video requiring several reads of the file system organization information (e.g., reads of block allocation structures) thereby consuming processing time and possibly other resources (e.g., battery power of a mobile device). It should be noted that although caching may be available to reduce the number of reads, caching techniques may be complicated and/or less desirable to implement, especially for mobile devices or when a Live Operating System (LOS) or several clients may be using the file system. As another example, more conventional file systems may also be more susceptible to loss of data and/or data corruption. For example, in a portable device, drain of battery power may force an unexpected shutdown before the file system has been able to incorporate the data into the file system. This situation can be especially problematic when relatively large amounts of data are written, and can result in serious loss or corruption of data.
Also, in more conventional file systems, updating or modifying a file can require several modifications to the file system organization information. In a system with multiple writers operating over a rotating disk excessive delay may be cause when multiple files are simultaneously used. These and other considerations may suggest writing larger amounts of data more infrequently. However, as a result, larger buffer consumption may result, as well as the likelihood of losing more data in case of a system failure. This can be problematic especially in more memory constrained devices or when there is less tolerance for losing data or data corruption.
In view of the foregoing and the importance of file systems to computing and storage technologies, improved file system management techniques would be very useful.
This paper describes various embodiments relating to computing systems and computing environments. It can be appreciated that the embodiments described herein can augment or otherwise enhance a conventional file management system used for organizing data stored in a storage media. The storage media can take many forms such as, for example, a hard disk drive (HDD), a FLASH memory that can, in turn, include FLASH based mass storage device as well as a FLASH memory card.
In accordance with one embodiment, a method implemented by a computing system is described. The computing system includes at least a file system for storing data files and the file system is managed by a first file management system. The method can be performed by carrying out at least the following operations. A second file management system different from the first file management system writes data and metadata to a file system space of the file system. In the described embodiment, at least some of the metadata is used to incorporate the written data into the file system for management by the first file management system.
In accordance with another embodiment, a computing system is described. The computing system includes at least a data storage device arranged to store data files as a file system managed by a first file management system. The computing system also includes a processor coupled to the data storage device. In the described embodiment, the processor is configured to write data and metadata to a file system space of the file system using a second file management system different from the first file management system. The processor is also configured to use the second file management system to use at least some of the metadata to incorporate the written data into the file system for management by the first file management system.
In yet another embodiment, a computer readable storage medium storing at least executable computer code for managing a file system by a first file management system and a second file management system that are different from each other is described. The executable computer code includes at least executable computer code to write data and metadata to a file system space of the file system using the second file management system. In the described embodiment, at least some of the metadata is used to incorporate the written data into the file system for management by the first file management system. The computer readable storage medium also includes executable computer code for reserving a portion of the file system space as a reserved file system space into which only the second file management system is permitted to write the data and the metadata. It should be noted, however, that the first file management system is permitted to write the data and metadata to an unreserved remaining portion of the file system space. The computer readable storage medium further includes executable computer code for writing at least some of the data and metadata to the reserved file system space by the second file management system.
In still another embodiment, a consumer electronic product is described. The consumer electronic product includes at least a data storage device having a file system arranged to store a plurality of data files, the data files being managed by a first file management system and a processor coupled to the data storage device. In the described embodiment, the processor is configured to at least use a second file management system different from the first file management system to write data and metadata to a file system space of the file system. The processor uses at least some of the metadata to incorporate the written data into the file system for management by the first file management system. In one aspect of the described embodiment, the second file management system writes data received from an external data source to the file system while the first file management system is halted. Subsequently, the second file management system updates file system management information thereby enabling the first file management system to manage the data.
Other aspects and advantages of the techniques will become apparent from the following the detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of file system management techniques.
The described embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which:
Improved file system management techniques are disclosed. It will be appreciate that the disclosed file system management techniques, among other things, can augment and/or enhance a file management system (e.g., a conventional file system) provided for organizing (or logically organizing) data stored in computer readable storage medium (e.g., a HDD, a FD).
In accordance with one aspect of the techniques, data and metadata can be written to a file system space of a file system without using a file management system that is operable (or normally operable) to write the data into the file system space. The file management system (e.g., a conventional file system) can be generally operable to effectively manage the data written in its file system space as a part of the file system if the written data has been incorporated into the file system. Data written into the file system space can be incorporated into the file system, for example, by updating file system organization information (e.g., a FAT file system data structure of a FAT file system). Generally, metadata can be provided for the data and can include information not provided by the file management system.
In accordance with another aspect, data and metadata can be written to a file system space of a file system without incorporating the data into the file system and without using a file management system. However, the metadata can include information allowing the data to be incorporated into the file system (possibly without using the file management system) but for management by the file management system. Generally, the file management system can be operable (or normally operable or made operable) to effectively manage data in its file system space and perform file management activities, including incorporation of data into the file system, for example, by updating its file system organization information.
Data and/or metadata can, for example, be written to a reserved file system space where a file management system is inoperable (or has been rendered inoperable) to write data. By way of example, data and metadata can be written to a reserved file system space where a file system is inoperable to write but the file system can be operable to write data to unreserved file system space and effectively manage data in the unreserved file system space. In effect, two file management systems can be operable in the same file system space and can potentially write to the file system space at the same time. As noted above, data and metadata can, for example, be written without updating file system organization information of a conventional file system (e.g., file system data structures of a FAT file system). However, metadata written to a reserved file system space can provide the information needed to later update the file system organization information to effectively incorporate the data into the file system without using the file system. By way of example, another entity (e.g., a second file management system) can effectively halt or suspend a conventional file management system, and use metadata to incorporate the data already present in the file system space, into the file system (or make the data become part of the file system) managed by the conventional file management system. It should be noted that incorporation of data or its reconciliation with the file system can involve effectively returning at least a portion of the reserved file system space back to the file system (e.g., turn the reserved file system space into unreserved file system space). Generally, size and location of the reserved file system can vary and can be managed to accommodate various demands and applications, as will be appreciated by those skilled in the art.
It will be appreciated that without using a file management system, relatively large amounts of data can be written before the data is effectively incorporated into the file system managed by the file management system. The size of the data written in the file system space without incorporation of the data into the file system can be significantly larger that the size of data that can be written using the management system. In other words, data can be written to the file system space of a file system but incorporation of data into the file system can be effectively delayed in comparison to data written by the file management system. As a result, system performance can significantly improve at least partly by incorporating data in relatively larger quantities than a file management system would normally allow. It should also be noted that data can be efficiently incorporated into the file system partly because there is no need to copy the data into the file system as the data can be written directly to the file system space and in a form readily available for incorporation into the file system.
In addition, it will be appreciated that metadata written for data can allow error recovery (or better error recovery) as the metadata can be indicative of data written to and present in the file system space (e.g., a reserved file system space) but not part of the file system. As such, metadata can be used to effectively recover data in various situations including, for example, when there is a system failure (e.g., unexpected shutdown, inappropriate removal of a removable storage device). It should be noted that metadata can be provided in accordance with a desired degree of granularity. By way of example, metadata can be individually provided for each one of nominal storage units of a file system (e.g., each cluster or each block as may be recognized by a file system as a nominal unit to be used to store data as a file) thereby decreasing the likelihood of loss of data without dramatically degrading system performance.
It should be noted that metadata can include integrity verification data (or verification data) allowing verification of the integrity of data written to the file system space. More generally, metadata can include information not provided, information that cannot be provided at all, or information that cannot be effectively or efficiently provided by a file management system in accordance with another aspect. In addition, it will be appreciated that the file management techniques can effectively reduce the number of times file system organization information is updated, thereby decreasing the likelihood of data corruption in case of a system failure.
Embodiments of these aspects are discussed below with reference to
Referring to
Referring to
Moreover, it will be appreciated that a second File Management System (FMS) 110 can effectively supplement and/or augment the file management capabilities of the first FMS 102. Among other things, the second FMS 110 can enhance performance, data integrity and/or error recovery.
More particularly, to achieve better write performance than what can be achieved by using only the first FMS 102, the second FMS 110 can be operable to write input data (D) in a reserved space (e.g., one or more reserved portions) 112 of the file system space 104 as data 115. It should be noted that at a given time, the first FMS 102 may be inoperable to write to the reserved space 112, but it may be operable to write to unreserved space of the file system space 104. As such, the second FMS 110 can be operable to write the input data (D) in the reserved space 112 of the file system space 104 (shown as data 115) when the first FMS 102 is inoperable to write in or to the reserved space 112, but is operable to write in or to one or more other portions of the file system space 104 not reserved for the second FMS 110. The second FMS 110 can also be operable to update the file system organization information 106 to reflect the data 115 as one or more new files Fd in the file system. However, it should be noted that the second FMS 110 may be operable to effectively lock access to the organization information 106. By way of example, the second FMS 110 can be operable to update the file system organization information 106 when the first FMS 102 is inoperable to write to the file system organization 106 in order to avoid corrupting the file system organization information 106. This can, for example, be achieved by effectively halting or suspending the first FMS 102 while the second FMS 110 updates the file system organization information 106. As another example, the first FMS 102 may be instructed by the second FMS 110 not to update the file system organization information 106 until further notice is given. Generally, the second FMS 110 can be operable to communicate with the first FMS 102. As such, the second FMS 110 may, for example, be operable to send requests and/or commands to the first FMS 102, to suspend and resume general and/or specific operations of the first FMS 106, reserve and return space of the file system space 104, and so on.
It will be appreciated that the second FMS 110 can also be operable to effectively delay updating the file system organization information 106 in comparison to the first FMS 102, thereby allowing better write performance to be achieved. In other words, the second FMS 110 can also be operable to write, without updating the file system organization information 106, an amount of data to the file system space (i.e., the reserved space 112) that would cause the first FMS 102 to update the file system organization information 106. This means that in comparison to the first FMS 102, the second FMS 110 management system can be operable to perform multiple write operations before updating the file system organization information 106 of the first file management 102. A write operation can, for example, correspond to a stream of input data requiring writing to several nominal units of storage (e.g., clusters, block) of the file system. More generally, the second FMS 110 can be operable to effectively delay updating the file system organization information (or organization information) 106.
It should be noted that second FMS 110 can write data D in the reserved space 112 of the file system space 104 as data 115 without updating the file system organization information 106 but in a manner allowing the data 115 to be later incorporated into the file system. Referring to
It will also be appreciated that the metadata 117 can also allow recovery of data 115. Data recovery can, for example, occur when there is system crash before the file system organization information 106 has been updated to incorporate the data written to the reserved file system space 112 which in some conventional file systems could result in loss of data. As such, metadata 117 can be especially useful in cases when the first FMS 102 does not provide an effective mechanism for recovery of data in various situations, such as, for example, a system crash or removal of a removable storage device before the appropriate information (e.g., File system data structures of a FAT file system) has been updated. This means that that the second FMS 110 can also be operable to recognize that data 115 has been written to the reserved file space 112 but it has not been incorporated into the file system. By way of example, after a system crash, the second FMS 110 can check the reserved file space 112 for metadata 117 indicative of data 115 that has not been incorporated into the file system managed by the first FMS 102. The second FMS 110 can then use the information (e.g., log data) provided by the metadata 117 to effectively incorporate the data 115 into the file system, for example, by updating the file system organization information 106 to incorporate the data 115 into an existing file or a new file.
As noted above, the second FMS 110 may also be used to improve data integrity. More particularly, the second FMS 110 can also be operable to write integrity information (or integrity verification information) as a part of the metadata 117 written for data in the file system space 104. As is widely known in the art, integrity information can be provided in various forms including, for example, a hash value determined by or based a hashing algorithm (e.g., a Secure Hash Algorithm (SHA) hash function). Generally, integrity information can be used to verify the integrity of data D in order to avoid data corruption. As such, the second FMS 110 can be operable to write integrity information as a part of metadata 117 for the data 115. Integrity information allows verification of the integrity of the data 115. More particularly, at a given time, the integrity of data 115 can be verified by determining a correct integrity value for the data 115 and comparing it to a stored integrity value (e.g., a hash value).
In addition, file system organization information 106 can be used in conjunction with information needed to update the file system organization information (e.g., log data) to, among other things, reconstruct data and incorporate it into the file system after the integrity of the data has been successfully verified. As such, the second FMS 110 can, for example, be operable to write metadata 117 to include both integrity metadata (or integrity data) and log metadata (or log data). In case of a system failure, second FMS 110 can use integrity metadata to verify the integrity of data 115 and then use the log metadata to incorporate the data 115 into the file system if and when the integrity of the data has been successfully verified. Data verification can be especially useful after a system crash or failure in order to ensure that data has not been corrupted.
It should be noted that the computer readable storage medium 101 can be a removable storage device (e.g., a Flash Drive). As such, the computer readable storage medium 101 can, for example, be used by various computing systems, including computing devices 120 and 130 depicted in
On the other hand, a second FMS 110 operating in the computing device 120 can be operable to effectively search for metadata indicative of data that has not been incorporated into the file system for a variety of reasons and in different situations, including a system failure or crash, at every startup process. For example, those skilled in the art will know that metadata 117 can be in a form recognizable by the second FMS 110 as metadata. By way of example, second FMS 110 can be operable to write the metadata 117 using a header indicative of data in the reserved file system space 112 that has not been incorporated into the file system. It should also be noted that the second FMS 110 can be operable to delete or modify the metadata 117 after its corresponding data 115 has been incorporated into the file system. Data 115 can be incorporated into the file system by updating the file system organization information to reflect the presence of the data 115 in the file system. The second FMS 110 may also effectively return the control of sections of the reserved space 112 back to the first FMS 102 after data D has been incorporated to the file system. Generally, the second FMS 110 may be operable to dynamically expand or shrink the reserved space 112 of the file system space 104. The second FMS 110 may also be operable to effectively store information regarding the reserved space 112 as reserved space information 150 which can, for example, include the current size and location of the reserved space 112. Generally, an indication or an indicator can be stored in the file system space 104 to effectively indicate management of the file system by the second FMS 110. This indication can, for example, indicate that metadata may be present and there may be additional information including regarding the size and location of reserved space where metadata may still be present. By way of example, the FMS 110 may write this indicator and/or reserved space information 150 to a section of the space 104 where file system information or file system data structures including organization information 106 are kept (e.g., FAT data structures in a FAT file system).
In view of the foregoing, it will be appreciated that in accordance with one described embodiment, a file management system (e.g., FMS 110 depicted in
To further elaborate,
In any case, the management component (or module) 602a of the FMS 602 can obtain the data (D) and write it to a reserved space (or one or more portions) 612 of the file system space 610 normally managed by the Conventional File System 604. The reserved portion 610 of the file system space 612 (or reserved file system space) can be effectively reserved by the reservation module 602b, for example, at the start up time when the computing system 600 starts up or is started for its computing activities. Generally, reservation module 602b can be operable to reserve one or more portions 612 of the file system space 610. At a given time, the reservation module 602b can determine the space portion 612 to be reserved. It should be noted that normal operations of the conventional file system 604 can be effectively suspended or halted when the reservation module 602b is in the process of determining the file system space 610. The operations of the conventional file system 604 can, for example, be effectively suspended or halted by sending a command or request to one or more of its operating components, namely, the file system operating component(s) 614 (e.g., one or more file system drivers). A command or request can, for example, be issued by the reservation component 602b or the management component 602a and communicated to the file system operating component(s) 614 via a communication component 602c operable to interface with the one or more file system operating components 614. Generally, the communication component 602c can be operable to communicate directly or via an interface with one or more file system operating components 614. Those skilled in the art will readily know that a conventional file system driver may have to be modified to enable communication with the communication component 602c of the FMS 602. In addition, in accordance with the embodiment depicted in
When the file system operating component 614 has been notified that the file system space 610 has been reserved and the conventional file system 604 has been effectively rendered inoperable to write to the reserved file system space 612, data (D) can be written to the reserved file system space 612. More particularly, the management component 602a can be operable to write the data (D) in the reserved file system space 612. Typically, data (D) is written into multiple (likely several) nominal units of storage (or file system storage units) of a particular conventional file system 604 (e.g., clusters, blocks, clusters of blocks).
To further elaborate,
However, referring back to
Referring now to
Referring to
Referring back to
Referring now to
However, if it is determined (822) that the file system indicator is present, the command/request is sent to the operating system to effectively suspend or halt the operations (or normal operation) of the file system (824). It should be noted that the file system indicator or additional information can be stored in the file system to effectively identify the reserved file system space.
Next, the reserved file system space is identified and searched (826) for metadata indicative of data in the reserved file system space that has not been incorporated into the file system. Accordingly, the reserved section of the file system can be searched (826) and it can be determined (828) whether metadata indicative of data not incorporated into the file system is present. If it is determined (828) that no metadata is present, a command/request can be sent to the operating system to effectively resume the operations (or normal operations) of the file system before the method 820 ends. However, if it is determined (828) that metadata is present, the integrity of data responding to metadata can be verified (832) based on the integrity verification data provided as a part of the metadata for the data. Thereafter, it can be determined (834) whether a complete “chunk” (or an acceptable amount) of data has been successfully verified. By way of example, it can be determined (834) whether data responding to a complete file or a significant portion thereof has been successfully verified. Accordingly, a complete “chunk” of data can be incorporated into the file system (835). After incorporation of data (835) it can be determined (840) whether more metadata is present for processing (840) and the method 820 can proceed in a similar manner to verify the integrity of data (832). On the other hand, if it is determined (834) that a complete chunk of data has not been successfully verified, it can be determined (836) whether a partial chunk of data has been successfully verified (836). Accordingly, it can be determined (838) whether to incorporate the partial chunk of data into the file system and a partial chunk of the data may be incorporated (835) into the file system. Those skilled in the art will appreciate that the determination (836) can, for example, be made based on one or more pre-determined parameters and/or dynamically based on the type of data or application being considered. Method 820 can proceed to process metadata until it is determined (840) that no metadata can be processed. As a result, the command/request to resume the normal operations of the file system can be sent to the file system (830) before the method 820 ends.
When the computing operations of the computing device 954 is initiated (e.g., started at system start up) the FMS 950 can effectively suspend the normal operations of the conventional file system 952 by issuing a suspend command to the driver 954, thereby effectively suspending the normal operations of the conventional file system 952 so that data stored by the storage devices PD1-PDN cannot be altered by the conventional File System 952. The FMS 950 can then examine the file system space and reserve space in the file system space based on the free space available on the file system.
By way of example, in a conventional FAT32 file system, the FAT32 driver can be halted and a snapshot of the available clusters can be taken based on the information provided by the File Allocation Table (FAT) as will be appreciated by those skilled in the art. For example, a range with a start and an end value can be reserved. However, it should be noted that the range need not be continuous. As such, a number of clusters in the range already in use by the file system may not be (or be considered) part of the reserved range in the file system space. The reserved range can be extended until a sufficient number of clusters are reserved for use of FMS 950 which can then inform or notify one or more of the file system drivers 955 (e.g., a FAT32 driver) responsible of writing to the file system space of the reserved range. Accordingly, the file system driver(s) 954 will not use (e.g., allocate) the clusters identified in the reserved range but may modify free clusters that have not been reserved and may be already in use by the conventional file system 952 (e.g., a FAT32 operating system). It should be noted that the FAT32 file system data structures need not be modified to reflect the clusters reserved in one or more ranges in the file system space. It should be noted that FMS 950 can store the reserved file system space, for example, by writing a relatively small file in the file system space (e.g., in a FAT32 partition or FAT Allocation Table) to record the reserved space. Storing this information can be especially useful for recovery in case of a system failure. It should also be noted that FMS 950 can also cache a number of clusters into cache memory (not shown) to avoid read operations from the file system space in order to identify the next available reserved storage unit (e.g., next cluster or clusters). FMS 950 can then cause the conventional file system (952) to resume it operations by issuing a resume command to the one or more file system drivers 955 that have been suspended or halted.
When a write stream is opened via FMS 950, a stream descriptor can be made available to an application 910. Application 910 can provide sequential data as it becomes available to be written into the stream identified by the stream descriptor. FMS 950 can write this data with metadata into individual storage units reserved in the file system space for FMS 950. By way of example, a hash value for the data, its length and possibly other information can be written by the FMS 950 to a first available cluster, and subsequently to a second available cluster, and so on.
When the write stream is closed, an incorporation or reconciliation process can take place whereby the data of the stream written into the reserved file system space is effectively incorporated or reconsolidated with the file system. To do this, FMS 950 can again cause the conventional file system 952 to halt its operations by issuing a halt command to one or more of the file system drivers 955. Subsequently, FMS 950 can locate metadata written for the data of the stream and iterate through each metadata of each storage unit (e.g., metadata stored in a cluster) to effectively identify the corresponding one or more data portions stored in one or more other storage units (e.g., clusters of data or data clusters). FMS 950 can then incorporate the data into the file system. By way of example, FMS 950 can update the File Allocation Table of a FAT32 file system, link all the data clusters into a single file, create a new entry in a Directory Table of the FAT32 file system, set a new file name and point the file name to the linked data clusters. It should be noted that the clusters with metadata may be erased by the FMS 950 which can also extend or shrink its reserved range.
A recovery operation can occur when a conventional file system 952 is to become operational after a system failure (e.g., when a FAT32 is mounted). If a file indicative of a reserved range or space of the file system is present in the file system space of a physical storage device (PDi), the FMS 950 can then iterate through all clusters of the reserved range and check to determine if metadata in an expected form is present. If so, the corresponding hash value can be used to verify the integrity of data. Data that has been successfully verified can be recovered by incorporating it into the file system. By way of example, when a “chunk” of data (or an amount of data deemed appropriate) is successfully verified, it may be reconciled to the tail end of an existing file. It should be noted that an application 910 can provide data in atomic units (e.g., one or more complete MPEG frames) to allow for better data recovery as will be appreciated by those skilled in the art.
In view of the foregoing, it will readily be appreciated that the described file can be provided for various file system as described techniques impose no limitation on the file system. As such, the described file system management techniques can, for example be used to effectively manage one or more of the following file systems: a FAT file system, a HFS file system, a Live File system, a Disk file system, a Flash file system, a data base file system, a transactional file system, a network file system, a shared file system, a file system where files are arranged dynamically, a file system where files are arranged dynamically by executable computer program code at runtime, a file system operating under an operating system including one or more of the following: a Microsoft Windows operating system, a Mac operating system, a Solaris operating system, a Unix operating system, a Linux Operating system.
In addition, it will readily be appreciated that the described file system management techniques can be provided for a variety of computing systems and devices, as the described techniques impose no limitation on the computing systems and devices that may work with a file system. As such, the described techniques can, for example, be provided for and used by a portable device operable to store data in a file system, a portable media player operable to store media items as files in a file system, a device with computing capabilities including storing executable code into a file system, and/or a portable phone operable to store data as one or more files in the file system.
In view of the foregoing, it will readily be known that a file management system (e.g., FMS 110) can be provided for a portable device (e.g., a portable media player) with a conventional file system (e.g., a FAT file system). In addition, a removable storage device (e.g., a Flash Drive) can be inserted into the portable device. A conventional system (e.g., a conventional host computer) may not recognize data or metadata in the removable storage device written by the portable device as it may only provide a conventional file system (e.g., a FAT file system). As such, the conventional system may not be able to perform error recovery on the removable storage device when the removable storage device is removed from the portable device and inserted in the conventional the conventional. However, error recovery may still be performed by the portable device when the removable storage device is connected (or reconnected) to the portable device operating with the file management system (e.g., FMS 110).
The various aspects, features, embodiments or implementations of the techniques described above can be used alone or in various combinations. The many features and advantages of the described techniques are apparent from the written description and, thus, it is intended by the appended claims to cover all such features and advantages. Further, since numerous modifications and changes will readily occur to those skilled in the art, the described embodiments should not be limited to the exact construction and operation as illustrated and described. Hence, all suitable modifications and equivalents may be resorted to as falling within the scope of the embodiments.