摘要 |
A system and method enable a storage operating system to partition data into fixed sized data blocks that can be written to disk without having to copy the contents of memory buffers (mbufs). The storage operating system receives data from a network and stores the data in chains of mbufs having various lengths. However, the operating system implements a file system that manipulates data in fixed sized data blocks. Therefore, a set of buffer pointers is generated by the file system to define a fixed sized block of data stored in the mbufs. The set of buffer pointers address various portions of data stored in one or more mbufs, and the union of the data portions form a single fixed sized data block. A buffer header stores the set of pointers associated with a given data block, and the buffer header is passed among different layers in the storage operating system. Thus, received data is partitioned into one or more fixed sized data blocks each defined by a set of buffer pointers stored in a corresponding buffer header. Because the buffer pointers address data directly in one or more mbufs, the file system does not need to copy data out of the mbufs when partitioning the data into fixed sized data blocks.
|