×

Delegated reference count base file versioning

  • US 8,032,498 B1
  • Filed: 06/29/2009
  • Issued: 10/04/2011
  • Est. Priority Date: 06/29/2009
  • Status: Active Grant
First Claim
Patent Images

1. A method of operating a network file server having a network adapter coupling the network file server to a data network of client computers, data storage storing files, and a data processor coupled to the data storage and the network adapter for access of the client computers to the files stored in the data storage, the files in the data storage being organized as a hierarchy of file system blocks including inodes, indirect blocks, and data blocks, the files stored in the data storage including a production file having a first data block in the hierarchy of file system blocks, the first data block being a child of the production file inode in the hierarchy of file system blocks, said method comprising:

  • storing in the data storage a reference count for the first data block, and storing in the data storage a delegated reference count for the parent-child relationship of the production file inode and the first data block;

    the data processor creating in the data storage a snapshot copy of the production file by allocating a snapshot copy inode and sharing the first data block between the production file inode and the snapshot copy inode so that the first data block becomes a child of the snapshot copy inode, and splitting the delegated reference count between the parent-child relationship of the production file inode and the first data block and the parent-child relationship of the snapshot copy inode and the first data block; and

    the data processor responding to a request from one of the client computers for writing data to the production file at an offset encompassed by the first data block by comparing the delegated reference count for the parent-child relationship of the production file inode and the first data block to the reference count for the first data block, and upon finding that the comparison indicates that the first data block is a shared block, allocating a second data block, writing to the second data block and decrementing the reference count for the first data block by the delegated reference count for the parent-child relationship of the production file inode and the first data block and linking the second data block to the production file inode in place of the first data block so that the second data block becomes a child of the production file inode and the first data block is no longer a child of the production file inode.

View all claims
  • 9 Assignments
Timeline View
Assignment View
    ×
    ×