IP Library Granted Patent US 7,908,276
Granted Patent B2
US 7,908,276 · App. 11/717,583 · Granted Mar 15, 2011

Filesystem having a filename cache

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,908,276
App. No.
11/717,583
Granted
Mar 15, 2011
Kind
B2
Abstract

A system comprising a processor, a data storage device that is accessible by the processor, and filesystem software that is executable by the processor to organize files on the data storage device are provided. The filesystem software is executable to maintain a filename cache having variable size filename entries. The filename entries may include a filename header section and a name section storing an entire filename of a corresponding file.

Claims (76)

1. A system comprising:

a processor;

a data storage device accessible by the processor; and

a filesystem software executable by the processor to organize a plurality of files on the data storage device, where the filesystem software is executable to maintain a filename cache comprising a plurality of entries, where each entry of the plurality of entries comprises a filename header section and a name section, where the name section stores an entire filename of a corresponding file,

where the filesystem software is further executable to identify a given entire filename to be stored in the name section of one of the plurality of entries, determine a number of bytes to allocate to the name section of the one of the plurality of entries based on the given entire filename to be stored and to allocate the determined number of bytes to the given name section of the one of the plurality of entries, thereby creating a variable size filename entry,

where the filesystem software is further executable to characterize each of the plurality of entries based on a namesum value of each of the plurality of entries where the namesum value of each of the plurality of entries is calculated based on the entire filename stored in the name section of each of the plurality of entries, further where the filename header section of each of the plurality of entries comprises an index to a next entry of the plurality of entries characterized by a same namesum value.

2. The system of claim 1 , where the filesystem software is further executable to receive a request for a file, calculate a namesum value of the requested file based on a filename of the requested file, identify a first entry of the plurality of entries characterized by the namesum value of the requested file, determine whether the first entry of the plurality of entries corresponds to the requested file, and access a second entry of the plurality of entries characterized by the namesum value of the requested file, based on the index stored in the name section of the first entry of the plurality of entries, if the first entry of the plurality of entries does not correspond to the requested file.

3. The system of claim 1 , where the filename header section comprises an information item uniquely identifying a file associated with the filename in the name section.

4. The system of claim 1 , where the filename header section comprises a first information item for indexing into a filename hash table.

5. The system of claim 4 , where the filename header section of at least one entry of the plurality of entries further comprises a second information item indicative of whether the at least one entry corresponds to a first entry in the filename hash table for a particular namesum value.

6. The system of claim 1 , where the filename header section of each entry of the plurality of entries comprises an information item indicative of whether the filename in the name section of each entry of the plurality of entries is not locatable on the system.

7. The system of claim 1 , where the filename header section comprises an index to a next entry of the plurality of entries in the filename cache having a same namesum value.

8. A system comprising:

a filename cache; and

a filesystem software organizing the filename cache into a plurality of variable size filename entries, where each variable size filename entry of the plurality of variable size filename entries comprises a filename header section and a name section, where the name section stores a filename of a corresponding file, identifying a given filename to be stored in the name section of one of the plurality of variable size filename entries, determining a number of bytes to allocate to the name section of the one of the plurality of variable size filename entries based on the given filename to be stored, allocating the determined number of bytes to the given name section of the one of the plurality of variable size filename entries, and characterizing each of the plurality of variable size filename entries based on a namesum value of each of the plurality of variable size filename entries,

where the namesum value of each of the plurality of variable size filename entries is determined based on the filename stored in the name section of each of the plurality of variable size filename entries,

where the filename header section of at least one of the plurality of variable size filename entries comprises an index to a next variable size filename entry of the plurality of variable size filename entries characterized by a common namesum value.

9. The system of claim 8 , where the filename cache comprises a ring-type buffer.

10. The system of claim 9 , where the filename cache further comprises a plurality of dummy filename entries to compensate for wrap -around writing of the plurality of variable size filename entries to the ring-type buffer.

11. The system of claim 8 , where the filesystem software calculates a namesum using a requested filename of a requested file.

12. The system of claim 11 , where the filesystem software uses the namesum to generate an index into a hash table.

13. The system of claim 12 , where the filesystem software uses the index into the hash table to obtain an initial pointer from the hash table that directs the filesystem software to a first variable size filename entry of the plurality of variable size filename entries in the filename cache having the calculated namesum.

14. The system of claim 13 , where the filesystem software compares the requested filename to the filename stored in the name section of the first variable size filename entry of the plurality of variable size filename entries for a match.

15. The system of claim 14 , where the filename header section of the first variable size filename entry of the plurality of variable size filename entries comprises an information item corresponding to a parent directory of the corresponding file.

16. The system of claim 15 , where the filesystem software compares a parent directory information item of the requested file to the information item of the filename header section of the first variable size filename entry to determine whether there is a match between the requested file and the file corresponding to the first variable size filename entry.

17. The system of claim 8 , where the filename header section comprises an information item corresponding to a length of the filename in the name section.

18. The system of claim 8 , where the filename header section comprises an information item uniquely identifying a file associated with the variable size filename entry.

19. The system of claim 8 , where the filename header section comprises a first information item for indexing into a filename hash table.

20. The system of claim 19 , where the filename header section further of at least one variable size filename entry of the plurality of variable size filename entries comprises a second information item indicative of whether the at least one variable size filename entry corresponds to a first entry in the filename hash table for a particular namesum.

21. The system of claim 8 , where the filename header section comprises an information item indicative of whether the filename in the name section is not locatable on the system.

22. The system of claim 8 , where the filename header section comprises an index to a next name in the filename cache buffer having a same namesum value.

23. The system of claim 8 , where the filesystem software generates a variable size filename entry in the filename cache for a requested file when the filename cache does not include the variable size filename entry for the requested file and the requested file is located by the filesystem software.

24. The system of claim 8 , where the filesystem software updates one or more bits of a variable size filename entry of the plurality of variable size filename entries to indicate that a filename stored in the name section of the variable size filename entry cannot be located by the filesystem software.

25. The system of claim 24 , where the filesystem software checks the one or more bits to discontinue further searching for a filename that has been previously searched and not found by the filesystem software.

26. The system of claim 24 , where the one or more bits are stored in the header section of the variable size filename entry of the plurality of variable size filename entries.

27. The system of claim 8 , where the filesystem software removes a variable size filename entry of the plurality of variable size filename entries for a corresponding file when the corresponding file is deleted from the system.

28. A method for operating a filesystem comprising:

allocating a storage space to a filename cache;

organizing the filename cache into a plurality of variable size filename entries, where each variable size filename entry of the plurality of variable size filename entries comprises a filename header section and a name section, where the name section stores a filename of a corresponding file;

identifying a given filename to be stored in the name section of one of the plurality of variable size filename entries;

determining a number of bytes to allocate to the name section of the one of the plurality of variable size filename entries based on the given filename to be stored;

allocating the determined number of bytes to the given name section of the one of the plurality of variable size filename entries; and

characterizing each of the plurality of variable size filename entries based on a namesum value of each of the plurality of variable size filename entries,

where the namesum value of each of the plurality of variable size filename entries is calculated based on the filename stored in the name section of each of the plurality of variable size filename entries,

where the filename header section of at least one of the plurality of variable size filename entries comprises an index to a next variable size filename entry of the plurality of variable size filename entries characterized by a common namesum value.

29. The method of claim 28 , where the storage space allocated for the filename cache comprises a ring-type buffer.

30. The method of claim 29 , further comprising adding a plurality of dummy filename entries to compensate for wrap-around writing of the plurality of variable size filename entries to the ring-type buffer.

31. The method of claim 28 , further comprising calculating a namesum using a requested filename of a requested file.

32. The method of claim 31 , further comprising using the calculated namesum to generate an index into a hash table.

33. The method of claim 32 , further comprising:

using the index into the hash table to obtain an initial pointer from the hash table; and

using the initial pointer to access a first variable size filename entry of the plurality of variable size filename entries in the filename cache having the calculated namesum.

34. The method of claim 33 , further comprising comparing the requested filename to the filename stored in the name section of the first variable size filename entry for a match.

35. The method of claim 34 , where the filename header section of the first variable size filename entry comprises an information item corresponding to a parent directory of the corresponding file.

36. The method of claim 35 , further comprising comparing a parent directory information item of the requested file to the information item of the filename header section of the first variable size filename entry to determine whether there is a match between the requested file and the file corresponding to the first variable size filename entry.

37. The method of claim 28 , further comprising generating a variable size filename entry in the filename cache for a requested file when the filename cache does not include the variable size file entry for the requested file and the requested file is located by the filesystem.

38. The method of claim 28 , further comprising updating one or more bits of a variable size filename entry of the plurality of variable size file entries to indicate that a filename stored in the name section of the variable size filename entry cannot be located by the filesystem.

39. The method of claim 38 , further comprising checking the one or more bits to discontinue further searching for a filename that has been previously searched and not found by the filesystem.

40. The method of claim 39 , where the one or more bits are stored in the header section of the variable size filename entry of the plurality of variable size filename entries.

41. The method of claim 28 , further comprising removing a variable size filename entry of the plurality of variable size filename entries when the corresponding file is deleted from the filesystem.

42. A storage medium comprising code adapted to execute a method for operating a filesystem comprising:

allocating a storage space to a filename cache;

organizing the filename cache into a plurality of variable size filename entries, where each variable size filename entry of the plurality of variable size filename entries comprises a filename header section and a name section, where the name section stores a filename of a corresponding file; and

characterizing each of the plurality of variable size filename entries based on a namesum value of each of the plurality of variable size filename entries,

where the namesum value of each of the plurality of variable size filename entries is calculated based on the filename stored in the name section of each of the plurality of variable size filename entries,

where at least one of the plurality of variable size filename entries comprises an index to a next variable size filename entry of the plurality of variable size filename entries characterized by a common namesum value.

43. The storage medium of claim 42 , where the storage space allocated for the filename cache by the method comprises a ring-type buffer.

44. The storage medium of claim 43 , where the method further comprises adding a plurality of dummy filename entries to compensate for wrap-around writing of the plurality of variable size filename entries to the ring-type buffer.

45. The storage medium of claim 42 , where the method further comprises calculating a namesum using a requested filename of a requested file.

46. The storage medium of claim 45 , where the method further comprises using the calculated namesum to generate an index into a hash table.

47. The storage medium of claim 46 , where the method further comprises:

using the index into the hash table to obtain an initial pointer from the hash table; and

using the initial pointer to access a first variable size filename entry in the filename cache having the calculated namesum.

48. The storage medium of claim 47 , where the method further comprises comparing the requested filename to the filename stored in the name section of the first variable size filename entry for a match.

49. The storage medium of claim 48 , where the filename header section of the first variable size filename entry employed by the method comprises an information item corresponding to a parent directory of the corresponding file.

50. The storage medium of claim 49 , where the method further comprises comparing a parent directory information item of the requested file to the information item of the filename header section of the first variable size filename entry to determine whether there is a match between the requested file and the file corresponding to the first variable size filename entry.

Assignments (13)
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064104/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: QNX SOFTWARE SYSTEMS LIMITED
To: 8758271 CANADA INC.
Reel/Frame 032607/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2014
From: 8758271 CANADA INC.
To: 2236008 ONTARIO INC.
Reel/Frame 032607/0674 →
CHANGE OF ADDRESS Recorded Feb 27, 2012
From: QNX SOFTWARE SYSTEMS LIMITED
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 027768/0961 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: 7801769 CANADA INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 026883/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: 7801769 CANADA INC.
Reel/Frame 026883/0544 →
REGISTRATION Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0398 →
CHANGE OF SEAT Recorded Feb 28, 2011
From: QNX SOFTWARE SYSTEMS GMBH & CO. KG
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 025863/0434 →
PARTIAL RELEASE OF SECURITY INTEREST Recorded Jun 3, 2010
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 024483/0045 →
SECURITY AGREEMENT Recorded May 8, 2009
From: HARMAN INTERNATIONAL INDUSTRIES, INCORPORATED; BECKER SERVICE-UND VERWALTUNG GMBH; CROWN AUDIO, INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS (MICHIGAN), INC.; HARMAN BECKER AUTOMOTIVE SYSTEMS HOLDING GMBH; HARMAN BECKER AUTOMOTIVE SYSTEMS, INC.; HARMAN CONSUMER GROUP, INC.; HARMAN DEUTSCHLAND GMBH; HARMAN FINANCIAL GROUP LLC; HARMAN HOLDING GMBH & CO. KG; HARMAN MUSIC GROUP, INCORPORATED; HARMAN SOFTWARE TECHNOLOGY INTERNATIONAL BETEILIGUNGS GMBH; HARMAN SOFTWARE TECHNOLOGY MANAGEMENT GMBH; HBAS INTERNATIONAL GMBH; HBAS MANUFACTURING, INC.; INNOVATIVE SYSTEMS GMBH NAVIGATION-MULTIMEDIA; JBL INCORPORATED; LEXICON, INCORPORATED; MARGI SYSTEMS, INC.; QNX SOFTWARE SYSTEMS (WAVEMAKERS), INC.; QNX SOFTWARE SYSTEMS CANADA CORPORATION; QNX SOFTWARE SYSTEMS CO.; QNX SOFTWARE SYSTEMS GMBH; QNX SOFTWARE SYSTEMS GMBH & CO. KG; QNX SOFTWARE SYSTEMS INTERNATIONAL CORPORATION; QNX SOFTWARE SYSTEMS, INC.; XS EMBEDDED GMBH (F/K/A HARMAN BECKER MEDIA DRIVE TECHNOLOGY GMBH)
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 022659/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2007
From: DODGE, DAN; VAN DER VEEN, PETER
To: QNX SOFTWARE SYSTEMS GMBH & CO. KG
Reel/Frame 019639/0944 →