Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA OBJECT STORAGE
Document Type and Number:
WIPO Patent Application WO/2015/023219
Kind Code:
A1
Abstract:
There is provided mechanisms for storing a data object in a storage medium. At least one memory block in the storage medium is identified. The at least one memory block is un-allocated by a first file system of an electronic device. The first file system maintains an allocation status of memory blocks in the storage medium. The data object is stored in at least one of the at least one identified memory block, wherein the at least one memory block used for storing the data object remains un-allocated by the first file system.

Inventors:
THOMSON ANDERS (SE)
Application Number:
PCT/SE2013/050974
Publication Date:
February 19, 2015
Filing Date:
August 16, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ERICSSON TELEFON AB L M (SE)
International Classes:
G06F17/30
Foreign References:
US20100293336A12010-11-18
US20120047331A12012-02-23
Other References:
None
Attorney, Agent or Firm:
EGRELIUS, Fredrik (Patent Unit Kista DSM, Stockholm, SE)
Download PDF:
Claims:
CLAIMS

1. A method for storing a data object in a storage medium (4a), the method being performed by an electronic device ( la), comprising the steps of: identifying (S 102) at least one memory block in the storage medium, which at least one memory block is un-allocated by a first file system (35a) of the electronic device, the first file system maintaining an allocation status of memory blocks (37) in the storage medium; and

storing (S 106) the data object in at least one of the at least one identified memory block, wherein the at least one memory block used for storing the data object remains un-allocated by the first file system.

2. The method according to claim 1, further comprising:

allocating (S 108 ), by the first file system, at least one memory block used for storing the data object, thereby causing the data object to be at least partly overwritten.

3. The method according to claim 1 or 2, further comprising:

associating (S 106a) said data object with an integrity check.

4. The method according to claim 3 , wherein the integrity check comprises calculating and verifying a checksum for at least one of the memory block used for storing the data object.

5. The method according to claim 3 or 4, further comprising:

performing (S 106b) the integrity check in response to the storage medium being prepared for access by an application being executed on the electronic device. 6. The method according to claim 5, wherein the data object has been stored by the application.

7. The method according to any one of claims 1 to 6, wherein the electronic device is associated with an identity, the method further comprising: in response to a request for accessing the stored data object by an application being executed on the electronic device, either granting (S 106c) or denying (S 106d) access to the stored data object depending on the identity of the electronic device. 8. The method according to claim 7, wherein access is granted if the requested data object was stored by said application being executed on the electronic device.

9. The method according to any one of claims 1 to 8 , further comprising: providing (S 104) an object storage, the object storage being defined by said identified at least one identified memory block and being handled by an object storage handler of the electronic device;

whereby said at least one memory block through the object storage handler remains un-allocated by the first file system.

10. The method according to any one of claims 1 to 9, wherein the stored data object is accessible by an application being executed by the electronic device through a second file system (35b), the second file system being functionally separate from the first file system.

11. The method according to claim 10 , wherein the stored data object is allocated by the second file system. 12. The method according to claim 10 or 11, wherein storing of data objects and access to data objects stored by the second file system of the storage medium by an application being executed by the electronic device is controlled by a virtual file system switch, VFS (34).

13. The method according to any one of claims 1 to 12, wherein the stored data object is accessible by an application (3 1, 32) being executed by the electronic device through an application programming interface, API.

14. The method according to any one of claims 1 to 13 , wherein the storage medium is a random access memory, RAM.

15. The method according to any one of claims 1 to 14, wherein the stored data object comprises cached data (33).

16. An electronic device ( la) for storing a data object in a storage medium (4a), the electronic device comprising a processing unit (3a) arranged to: identify at least one memory block in the storage medium, which at least one memory block is un-allocated by a first file system (35a) of the electronic device, the first file system maintaining an allocation status of memory blocks (37) in the storage medium; and

store the data object in at least one of the at least one identified memory block, wherein the at least one memory block used for storing the data object remains un-allocated by the first file system.

17. A vehicle (91) comprising an electronic device ( la) according to claim 16.

18. A computer program (52) comprising computer program code which, when run on an electronic device ( la), causes the electronic device to perform the method according to any one of claims 1 to 15.

19. A computer program product (51) comprising a computer program (52) according to claim 18 , and computer readable means (53) on which the computer program is stored.

Description:
DATA OBJECT STORAGE

TECHNICAL FIELD

Embodiments presented herein relate to data object storage, and particularly to a method, an electronic device, a computer program, and a computer program product, for storing a data object in a storage medium .

BACKGROUND

In electronic devices, there is a challenge to obtain good performance and capacity for a given communications protocol, its parameters and the physical environment in which the mobile communication network is deployed.

Current electronic devices have storages for storing user data (such as, but not limited to, image files, audio files, video files, document files, program files, etc). Mechanisms are provided for making the user of the electronic device aware of this storage and the current usage of it. The relatively large storage capabilities in such electronic devices can useed for caching data. For example, a content delivery network (CDN) could use such storage to pre-populate data on the electronic device in anticipation of its later usage.

One concern is how the data storage of the electronic device can be put to use for these purposes. The user of the electronic device may keep track of his current usage of it. One approach is for the electronic device to utilize files with cryptic filenames, or otherwise marked as hidden, and try to hide this fact to the user, e.g., by deducting such files when showing available storage space in the electronic device. This approach is, however, highly non-transparent to the user. The storage media of current electronic devices is often used outside the electronic devices, e.g., when an electronic device is put in a "Universal Serial Bus (USB) Mass storage mode", or similar, or when the storage medium, e.g., in the form of a Secure Digital (SD) card, is moved to and accessed by another device, e.g., a computer. In such situations, the storage space used as a holding area for cached data appears as allocated and there is currently no way to hide this fact. This inability to make system usage of the storage media transparent is an impediment to its use in, e.g., CDN, where storage capacity is an asset in the overall solution.

Hence, there is still a need for improved mechanisms for storing data objects.

SUMMARY

An object of embodiments herein is to provide improved mechanisms for storing data objects. The inventors of the enclosed embodiments have realized that storages in electronic devices may be put to use as a cache in a manner which is fully transparent to the user, if block allocation is carefully coordinated.

A particular object is therefore to provide improved mechanisms for storing data objects. According to a first aspect there is presented a method for storing a data object in a storage medium. The method is performed by an electronic device. The method comprises identifying at least one memory block in the storage medium, which at least one memory block is un-allocated by a first file system of the electronic device, the first file system maintaining an allocation status of memory blocks in the storage medium. The method comprises storing the data object in at least one of the at least one identified memory block, wherein the at least one memory block used for storing the data object remains un-allocated by the first file system.

Advantageously, the storage capabilities of the electronic device can thereby be put to use as caches for, e.g., Hypertext Transfer Protocol (HTTP) objects such as the ones used in CDNs. This allows the CDN to be extended to the electronic device itself and thereby to utilize the electronic device for storing HTTP objects as well as other data objects. The communications path between the electronic device and the CDN is thereby bridged, enabling the data provided by the CDN to be readily available in the electronic device, i.e., without any delay arising from the electronic device having to acquire the data from the CDN, and thus providing an improved Quality of Experience (QoE) without having to intrude on the end-user's experience of allocating storage space for their personal usage.

According to a second aspect there is presented an electronic device for storing a data object in a storage medium . The electronic device comprises a processing unit. The processing unit is arranged to identify at least one memory block in the storage medium, which at least one memory block is un- allocated by a first file system of the electronic device, the first file system maintaining an allocation status of memory blocks in the storage medium. The processing unit is arranged to store the data object in at least one of the at least one identified memory block, wherein the at least one memory block used for storing the data object remains un-allocated by the first file system. According to a third aspect there is presented a vehicle. The vehicle comprises an electronic device according to the second aspect.

According to a fourth aspect there is presented a computer program for storing a data object in a storage medium, the computer program comprising computer program code which, when run on an electronic device, causes the electronic device to perform a method according to the first aspect.

According to a fifth aspect there is presented a computer program product comprising a computer program according to the fourth aspect and a computer readable means on which the computer program is stored.

It is to be noted that any feature of the first, second, third, fourth, and fifth, aspects may be applied to any other aspect, wherever appropriate. Likewise, any advantage of the first aspect may equally apply to the second, third, fourth, and/ or fifth aspect, respectively, and vice versa. Other objectives, features and advantages of the enclosed embodiments will be apparent from the following detailed disclosure, from the attached dependent claims as well as from the drawings. Generally, all terms used in the claims are to be interpreted according to their ordinary meaning in the technical field, unless explicitly defined otherwise herein. All references to "a/ an/ the element, apparatus, component, means, step, etc." are to be interpreted openly as referring to at least one instance of the element, apparatus, component, means, step, etc., unless explicitly stated otherwise. The steps of any method disclosed herein do not have to be performed in the exact order disclosed, unless explicitly stated.

BRIEF DESCRIPTION OF THE DRAWINGS

The inventive concept is now described, by way of example, with reference to the accompanying drawings, in which:

Figs 1, 2, 3, 4, and 5 are schematic diagrams showing electronic devices according to embodiments of the invention ;

Fig 6 shows one example of a computer program product comprising computer readable means according to an embodiment of the invention ; Figs 7 and 8 are flowcharts of methods according to embodiments of the invention ; and

Fig 9 is a vehicle according to an embodiment of the invention. DETAILED DES CRIPTION

The inventive concept will now be described more fully hereinafter with reference to the accompanying drawings, in which certain embodiments of the invention are shown . The invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein ; rather, these embodiments are provided by way of example so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout the description .

The embodiments disclosed herein relate to storing a data object in a storage medium. For this purpose, there is provided an electronic device, a method performed by the electronic device, a computer program comprising code, for example in the form of a computer program product, that when run on an electronic device, causes the electronic device to perform the method.

Fig 1 schematically illustrates, in terms of a number of functional modules, the components of an electronic device la according to an embodiment. A processing unit 3a is provided using any combination of one or more of a suitable central processing unit (CPU), multiprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), field programmable gate arrays (FPGA) etc., capable of executing software instructions stored in a computer program product 61 (as in Fig 6), e.g., in the form of a storage medium 4a. Thus, the processing unit 3a is thereby arranged to execute methods as herein disclosed. The storage medium 4a may also comprise persistent storage, which, for example, can be any single one or combination of magnetic memory, optical memory, solid state memory or even remotely mounted memory. The electronic device la may further comprise communications interface 2a for receiving and providing information to a user and/ or another electronic device lb. The

communications interface 2a may thus comprise any combination of a user interface, one or more transmitters and receivers, comprising analogue and digital components and a suitable number of antennae for radio

communication. The processing unit 3a controls the general operation of the electronic device la, e.g., by sending control signals to the communications interface 2a, storing instructions and data in the storage medium 6a, receiving signals from the communications interface 2a, and retrieving instructions and data from the storage medium 4a. Other components, as well as the related functionality, of the electronic device la are omitted for the sake of clarity.

Fig 2 schematically illustrates, in terms of a number of functional units, the components of an electronic device la according to an embodiment. The electronic device la of Fig 3 comprises a number of functional units, in particular an identifying unit 21a and a storing unit 21b. The electronic device la of Fig 3 may further comprises a number of optional functional units, such as any of a providing unit 21c, an associating unit 2 Id, an integrity checking unit 21e, a granting unit 2 If, a denying unit 21g, and an allocating unit 21h . The functionality of each functional unit 21a-h will be further disclosed below in the context of which the functional units may be used. In general terms, each functional unit 21a-h may be implemented in hardware or in software. The processing unit 3a may thus be arranged to from the storage medium 4a and/ or the computer program product 62 fetch instructions as provided by a functional unit 21a-h and to execute these instructions, thereby performing any steps as will be disclosed hereinafter. The electronic device la may be provided as a standalone device or as a part of a further device. For example, the electronic device la may be provided in a vehicle 91. Fig 9 illustrates a vehicle 91 comprising at least one electronic device la as herein disclosed. The electronic device la may be provided as an integral part of the vehicle 91. That is, the components of the electronic device la may be integrated with other components of the vehicle 91; some components of the vehicle 91 and the electronic device la may be shared. For example, if the vehicle 91 as such comprises a processing unit, this processing unit may be arranged to perform the actions of the processing unit 3a associated with the electronic device la. Alternatively the electronic device la may be provided as a separate unit in the vehicle 91. The vehicle 91 may be a vehicle for land transportation, such as a car, a truck, a motorcycle, or the like, a vehicle for water transportation, such as a boat, a ship, a vessel, or a submarine, or the like, or a vehicle for aerial transportation, such as an aeroplane, a helicopter, or the like. Figs 7 and 8 are flow charts illustrating embodiments of methods for storing a data object in a storage medium. The methods may be performed by the electronic device la. The methods are advantageously provided as computer programs 62. Fig 6 shows one example of a computer program product 61 comprising computer readable means 63. On this computer readable means 63 , a computer program 62 can be stored, which computer program 62 can cause the processing unit 3a and thereto operatively coupled entities and devices, such as the communications interface 2a and/ or the storage medium 6ato execute methods according to embodiments described herein. The computer program 62 and/ or computer program product 61 may thus provide means for performing any steps as herein disclosed.

In the example of Fig 6, the computer program product 61 is illustrated as an optical disc, such as a CD (compact disc) or a DVD (digital versatile disc) or a Blu-Ray disc. The computer program product 61 could also be embodied as a memory, such as a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM), or an electrically erasable programmable read-only memory (EEPROM) and more particularly as a non-volatile storage medium of a device in an external memory such as a USB memory. Thus, while the computer program 62 is here schematically shown as a track on the depicted optical disk, the computer program 62 can be stored in any way which is suitable for the computer program product 61.

The disclosed embodiments are based on the fact that the default file system (hereinafter denoted "the first file system" 35a) of the electronic device la has an allocator means 36a configured to track allocated and un-allocated memory blocks 37 of the storage medium 4a. The first file system 35a thus maintains an allocation status of memory blocks 37, i.e., allocated or unallocated, in the storage medium 4a. Particularly, the processing unit 3a of the electronic device la is arranged to, in a step S 102, identify at least one memory block 37 in the storage medium which is un-allocated by the first file system 35a of the electronic device la. The identifying may be performed by executing functionality of the identifying unit 21a. The computer program 62 and/ or computer program product 61 may thus provide means for this identifying.

The at least one memory block that is un-allocated by the first file system 35a of the electronic device la will be put to use by placing data objects therein, without the use of the first file system 35a, and in particular, without changing the allocation status, as maintained by the first file system 35a, of that memory block. Particularly, the processing unit 3a of the electronic device la is arranged to, in a step S 106, store the data object in at least one of the at least one identified memory block. The storing may be performed by executing functionality of the storing unit 21b. The computer program 62 and/ or computer program product 61 may thus provide means for this storing. The at least one memory block used for storing the data object remains un-allocated by the first file system 35a. By only using memory blocks in the storage medium that are un-allocated by the first file system 35a, a fully consistent file system may be exposed.

Embodiments relating to further details of storing a data object in a storage medium will now be disclosed.

All memory blocks 37 in the storage medium 4a that are un-allocated by the first file system 35a form an area which can be put to use as a storage area for data objects. These data objects may vanish at any point in time, e.g., when the first file system 35a needs the storage space for regular files, or when an external file system driver allocates files on memory blocks 37, e.g., when the storage medium 4a is operatively connected to a PC. Particularly, according to an embodiment the processing 3a of the electronic device la is arranged to, in an optional step S 108 , allocate, by the first file system 35a, at least one memory block used for storing the data object. The allocation may be performed by executing functionality of the allocating unit 21h. The computer program 62 and/ or computer program product 61 may thus provide means for this allocating. The data object is thereby caused to be at least partly overwritten .

The stored data object may be accessible by an application 3 1, 32 being executed by the electronic device la through an application programming interface (API).

There may be different ways of handling the integrity of data objects stored in at least one of the at least one identified memory block. Different

embodiments relating thereto will now be described. According to an embodiment the processing 3a of the electronic device la is arranged to, in an optional step S 106a, associate the data object with an integrity check. The associating may be performed by executing functionality of the associating unit 2 Id. The computer program 62 and/ or computer program product 61 may thus provide means for this associating. For example, the data object stored in at least one of the at least one identified memory block may have a name associated with it, forming a <key, value> pair, where "key" may represent the filename and "value" may represent the data object content. According to an embodiment the integrity check comprises calculating and verifying a checksum for at least one of the memory block used for storing the data object. For example, to check whether or not the at least one of the at least one identified memory block storing the data object has been allocated by the first file system, or an external entity, e.g., computer, the <key, value> pairs may be provided with a checksum. According to an embodiment the processing 3a of the electronic device la is arranged to, in an optional step S 106b, perform the integrity check in response to the storage medium being prepared for access by an application being executed on the electronic device. The integrity check may be performed by executing functionality of the integrity checking unit 21e. The computer program 62 and/ or computer program product 61 may thus provide means for this integrity checking.

According to an embodiment the data object has been stored by the application. Whenever an object is requested from this part of the storage medium, the checksum is verified and if it fails, the object is deemed to be invalid and any application requesting the object is notified.

There may be different ways to access the stored data object. Different embodiments relating thereto will now be described. According to an embodiment the processing 3a of the electronic device la is arranged to in response to a request for accessing the stored data object by an application being executed on the electronic device and depending on the identity of the electronic device, in an optional step S 106c, grant access to the stored data object. The granting may be performed by executing functionality of the granting unit 2 If. The computer program 62 and/ or computer program product 61 may thus provide means for this granting. According to an embodiment the processing 3a of the electronic device la is arranged to in response to a request for accessing the stored data object by an application being executed on the electronic device and depending on the identity of the electronic device, in an optional step S 106d, deny access to the stored data object. In relation thereto, access may be granted if the requested data object was stored by the application being executed on the electronic device la. The denying may be performed by executing functionality of the denying unit 21g. The computer program 62 and/ or computer program product 61 may thus provide means for this denying. Further, access may be granted if the requested data object was stored by the same application but being executed on another electronic device lb.

There may be different ways to handle storage of the data object in the at least one of the at least one identified memory block. Different embodiments relating thereto will now be described. According to an embodiment the processing 3a of the electronic device la is arranged to, in an optional step S 104, provide an object storage. The providing may be performed by executing functionality of the providing unit 21c. The computer program 62 and/ or computer program product 61 may thus provide means for this providing. The object storage may be defined by the identified at least one identified memory block and may be handled by an object storage handler of the electronic device. Any data object stored in the at least one memory block through the object storage handler remains un-allocated by the first file system 35a. According to one embodiment the object storage handler is a second file system 35b. The second file system 35b is functionally separated from the first file system 35a.

There may be different ways to implement how to access the memory block in the storage medium. Different embodiments relating thereto will now be described. In general terms, depending on the implementation, the at least one identified memory block storing the data object may be exposed as a normal file system, via an optional virtual file system switch (VFS).

Additionally or alternatively an application may directly communicate with the file system. According to an embodiment the stored data object is accessible by an application being executed by the electronic device through a second file system 35b being functionally separate from the first file system 35a. According to an embodiment the stored data object is allocated by the second file system. According to an embodiment storing of data objects and access to data objects stored by the second file system of the storage medium by an application being executed by the electronic device is controlled by the VFS. Figure 3 schematically illustrates an electronic device la according to an embodiment. The electronic device la is arranged to host applications, two of which ("Application 1" and "Application n") are identified at reference numerals 31 and 32, respectively. The electronic device la further comprises a cache 33 , which, for example, may hold web content as received from a network 38. The applications 31, 32 and the cache are controlled by a VFS 34 providing file system (FS) abstraction. In turn, the VFS controls a first file system (denoted "FS 1") 35a and a second file system (denoted "FS 2") 35b. The first file system 35a comprises an allocator (denoted "x-allocator") 36a for handling the first file system's allocation status of memory blocks 37 in the storage medium 4a. The second file system 35b comprises an allocator (denoted "y- allocator") 36b for handling the second file system's allocation status of memory blocks 37 in the storage medium 4a. Memory block used for storing data objects by the second file system 35b remains un-allocated by the first file system 35a. Thus, all memory blocks denoted "y" are considered as un-allocated by the first file system 35a whilst all memory blocks denoted "x" are considered as allocated (or un-accessible) by the second file system 35a. The VFS 34 may be arranged to, based on a predetermined criterion, decide whether a data object to be stored should be handled by the first file system 35a or the second file system 35b. The predetermined criterion may be based on an importance factor of the data object to be stored, where data objects deemed more important are handled by the first file system 35a and data objects deemed less important are handled by the second file system 35b. Further, the first file system 35a and the second file system 35b may be associated with different operating systems of the electronic device la. There may be different ways to store the data object in the at least one of the at least one identified memory block. Different embodiments relating thereto will now be described. The method for storing a data object in a storage medium is suitable for applications using cached data, such as cached HTTP data received by the electronic device la. The electronic device la may thereby be configured to use the storage medium to keep cached web content in anticipation of its usage by local applications, and can easily handle the fact that data objects can be removed at any time, for example by the at least one memory block used for storing the data object being allocated by the first file system 35a. According to one embodiment the stored data object thus comprises cached data.

In general terms, the fact that the at least one data object stored in the at least one of the at least one identified memory block can vanish at any point in time, e.g., when being allocated by the first file system 35a, forms what can be defined as a transcendent part of the storage medium 4a. In practice though, when mounted in the electronic device la the VFS 34 of the electronic device la has ample opportunity to coordinate its file system level allocations, thus avoiding removing transcendent objects as long as possible. Two scenarios relating to this and other aspects will now be disclosed with references to Fig 4 and Fig 5, respectively.

According to the scenario of Fig 4 data in the storage medium 4a is accessed by a further electronic device lb. This may represent a scenario where the electronic device la is operatively coupled to the further electronic device lb. The further electronic device lb comprises a processing unit 3b, a

communications interface 2b, and a storage medium 4b. The first electronic device la may be a mobile phone, or the like, and the further electronic device lb may be a computer, or the like. According to the scenario of Fig 5 the storage medium 4a has been removed from the electronic device la and data in the storage medium 4a is accessed by a further electronic device lb. The further electronic device lb may be a mobile phone, a computer, or the like. Data objects stored in at least one of the at least one identified memory block and which remain un-allocated by the first file system of the electronic device la appear as un-allocated according to the file system of the further electronic device lb. Data objects stored in at least one of the at least one identified memory block and which are allocated by the first file system of the electronic device la appear as allocated according to the file system of the further electronic device lb.

The inventive concept has mainly been described above with reference to a few embodiments. However, as is readily appreciated by a person skilled in the art, other embodiments than the ones disclosed above are equally possible within the scope of the inventive concept, as defined by the appended patent claims.