IP Library Granted Patent US 7,606,812
Granted Patent B2
US 7,606,812 · App. 11/513,768 · Granted Oct 20, 2009

Dynamic intent log

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,606,812
App. No.
11/513,768
Granted
Oct 20, 2009
Kind
B2
Abstract

A method for dynamic intent logging in a file system. The method including pre-allocating a first log block, receiving a request to write a first set of deltas into a dynamic intent log, determining whether a size of the first set of deltas is larger than a size of the first log block, if the size of the first set of deltas is not larger than the size of the first log block, storing the first set of deltas in the first log block and pre-allocating a second log block.

Claims (72)

1. A method for dynamic intent logging in a file system, comprising:

pre-allocating a first log block, wherein the first log block is part of a chain of log blocks and a size of the first log block corresponds to a size of the largest block previously allocated in the chain of log blocks;

receiving a request to write a first set of deltas into a dynamic intent log, wherein the first set of deltas is stored in memory;

determining, using a processor, whether a size of the first set of deltas is larger than the size of the first log block;

if the size of the first set of deltas is not larger than the size of the first log block:

storing the first set of deltas in the first log block;

pre-allocating a second log block;

if the size of the first set of deltas is larger than the size of the first log block:

storing a first subset of the first set of deltas in the first log block, wherein a size of the first subset is less than or equal to the size of the first log block;

for remaining deltas in the first set of deltas:

determining whether a size of the remaining deltas is larger than a maximum log block size;

allocating a third log block and storing the remaining deltas in the third log block, if the size of the remaining deltas is not larger than the maximum log block size and wherein a size of the third log block is less than or equal to the maximum log block size;

allocating a fourth log block and storing a second subset of the remaining deltas in the forth log block, if the size of the remaining deltas is larger than the maximum log block size, and wherein a size of the fourth log block is the maximum size log block,

wherein a size of the second log block is one selected from a group consisting of (a) the size of the first log block if the size of the first set of deltas is not larger than the first log block and (b) a size of one of a second set of deltas waiting in a queue.

2. The method of claim 1 , further comprising:

storing the size of the first set of deltas in the first log block, if the size of the first set of deltas is not larger than the first log block, and

storing the size of the first subset of deltas in the first log block, if the size of the first set of deltas is larger than the first log block.

3. The method of claim 1 , further comprising:

replaying the first log block.

4. The method of claim 3 , wherein replaying the first log block comprises:

calculating a checksum of the first log block;

determining whether the first log block is legitimate, if the checksum of the first log block is valid; and

replaying the first log block if the first log block is legitimate.

5. A computer readable medium comprising executable instructions for dynamic intent logging in a file system by:

pre-allocating a first log block, wherein the first log block is part of a chain of log blocks and a size of the first log block corresponds to a size of the largest block previously allocated in the chain of log blocks;

receiving a request to write a first set of deltas into a dynamic intent log;

determining whether a size of the first set of deltas is larger than the size of the first log block;

if the size of the first set of deltas is not larger than the size of the first log block:

storing the first set of deltas in the first log block;

pre-allocating a second log block;

if the size of the first set of deltas is larger than the size of the first log block:

storing a first subset of the first set of deltas in the first log block, wherein a size of the first subset is less than or equal to the size of the first log block;

for remaining deltas in the first set of delta:

determining whether a size of the remaining deltas is larger than a maximum log block size;

allocating a third log block and storing the remaining deltas in the third log block, if the size of the remaining deltas is not larger than the maximum log block size and wherein a size of the third log block is less than or equal to the maximum log block size;

allocating a fourth log block and storing a second subset of the remaining deltas in the forth log block, if the size of the remaining deltas is larger than the maximum log block size, and wherein a size of the fourth log block is the maximum size log block,

wherein a size of the second log block is one selected from a group consisting of (a) the size of the first log block if the size of the first set of deltas is not larger than the first log block and (b) a size of one of a second set of deltas waiting in a queue.

6. The computer readable medium of claim 5 , further comprising executable instructions for dynamic intent logging in the file system by:

storing the size of the first set of deltas in the first log block, if the size of the first set of deltas is not larger than the first log block, and

storing the size of the first subset of deltas in the first log block, if the size of the first set of deltas is larger than the first log block.

7. The computer readable medium of claim 5 , further comprising:

replaying the first log block.

8. The computer readable medium of claim 7 , wherein replaying the first log block comprises:

calculating a checksum of the first log block;

determining whether the first log block is legitimate, if the checksum of the first log block is valid; and

replaying the first log block if the first log block is legitimate.

9. A computer system comprising:

a processor;

a file system, when executed on the processor, is configured to:

pre-allocate a first log block, wherein the first log block is part of a chain of log blocks and a size of the first log block corresponds to a size of the largest block previously allocated in the chain of log blocks;

receive a request to write a first set of deltas into the dynamic intent log;

determine whether a size of the first set of deltas is larger than the size of the first log block;

if the size of the first set of deltas is not larger than the size of the first log block:

store the first set of deltas in the first log block;

pre-allocate a second log block;

if the size of the first set of deltas is larger than the size of the first log block:

store a first subset of the first set of deltas in the first log block, wherein a size of the first subset is less than or equal to the size of the first log block;

for remaining deltas in the first set of delta:

determine whether a size of the remaining deltas is larger than a maximum log block size;

allocate a third log block and storing the remaining deltas in the third log block, if the size of the remaining deltas is not larger than the maximum log block size and wherein a size of the third log block is less than or equal to the maximum log block size;

allocate a fourth log block and storing a second subset of the remaining deltas in the forth log block, if the size of the remaining deltas is larger than the maximum log block size, and wherein a size of the fourth log block is the maximum size log block,

wherein a size of the second log block is one selected from a group consisting of (a) the size of the first log block if the size of the first set of deltas is not larger than the first log block and (b) a size of one of a second set of deltas waiting in a queue.

10. The file system of claim 9 , further configured to:

store the size of the first set of deltas in the first log block, if the size of the first set of deltas is not larger than the first log block, and

store the size of the first subset of deltas in the first log block, if the size of the first set of deltas is larger than the first log block.

11. The file system of claim 9 , further configured to:

replaying the first log block.

12. The file system of claim 11 , wherein replaying the first log block comprises:

calculating a checksum of the first log block;

determining whether the first log block is legitimate, if the checksum of the first log block is valid; and

replaying the first log block if the first log block is legitimate.

13. The file system of claim 9 , wherein the first log block is part of a chain of log blocks and the size of the first log block corresponds to a size of the largest block previously allocated in the chain of log blocks.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037304/0194 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2006
From: PERRIN, NIEL V.; MAYBEE, STUART J.; BONWICK, JEFFREY
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018261/0272 →