A Holesome File System (2004) [1 citations — 0 self]
Abstract:
We present a novel approach to fully dynamic management of physical disk blocks in Unix file systems. By adding a single system call, zero(), to an existing file system, we permit applications to create holes, that is, regions of files to which no physical disk blocks are allocated, far more flexibly than previously possible. Using zero(), it is possible to efficiently implement applications including a variety of databases and I/O-efficient computation systems on top of the Unix file system. zero() can also be used to implement an efficient file-system-based paging mechanism. In some I/O-efficient computations, the availability of zero() effectively doubles disk capacity by allowing blocks of temporary files to be reallocated to new files as they are read. Experiments on a Linux ext2 file system augmented by zero() demonstrate that where their functionality overlaps, zero() is more efficient than ftruncate(). Additional experiments reveal that in exchange for added effective disk capacity, I/O-efficient code pays only a small performance penalty. 1
Citations
| 472 | The Ubiquitous B-Tree – Comer - 1979 |
| 463 | The R* -tree: an efficient robust access method for points and rectangles – Beckmann, Kriegel, et al. - 1990 |
| 410 | The Input/Output complexity of sorting and related problems – Aggarwal, Vitter - 1988 |
| 320 | The Design of the Unix Operating System – Bach - 1986 |
| 158 | The buffer tree: A new technique for optimal I/O-algorithms – Arge - 1995 |
| 85 | External-memory algorithms for processing line segments in geographic information systems. Algorithmica – Arge, Vengroff, et al. - 1998 |
| 46 | Virtual Memory for Data-Parallel Computing – Cormen - 1992 |
| 34 | Fast permuting in disk arrays – Cormen |

