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 including inodes and data blocks, the files stored in the data storage including a production file having a first data block in the hierarchy, the first data block being a descendant of the production file inode in the hierarchy, 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 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 descendant of the snapshot copy inode, and splitting the delegated reference count between the relationship of the production file inode and the first data block and the 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 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 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 descendant of the production file inode and the first data block is no longer a descendant of the production file inode.