I approached the problem from several different angles. Approach #1 - Partition Must Be Unmounted to Defrag Advantages: * Minimize chance of file system corruption because no other processes could be modifying files. * Can manipulate the file system in ways that would otherwise be unsafe if the file system were mounted. Disadvantages: * Must directly manipulate the journal (i.e. a lot of tedious programming) so that the file system can remain consistent in the event of a power failure * The partition would be completely unavailable during the entire defrag process resulting in significant down time. Ultimately rejected because of the last disadvantage. Approach #2 - On-the-fly Defragmentation using the EXT2FS library for Block Allocation Advantages: * No down time. * Utilizes existing EXT3 journal programming by performing the defragmentation using normal read-write operations. Disadvantages: * Without mandatory locking, there would be no way to ensure that another process has not modified the file. * Because of the way the kernel buffers I/O data, another process could be attempting to utilize the same blocks as the defrag program. Attempted, but ultimately rejected because of the last disadvantage. Approach #3 - On-the-fly Defragmentation without a Block Allocation Policy Advantages: * This is a close as we can get to a "safe" on-the-fly defragmentation program. * No down time. * Utilizes existing EXT3 journal programming by performing the defragmentation using normal read-write operations. Disadvantages: * Without a block allocation policy, defrag would be nothing more than a sophisticated copy program. * While it is likely that the copy would be less fragmented than the original, without a block allocation policy there would be no guarantee. The copy would have to be checked against the original before overwriting it. * Without mandatory locking, there would be no way to ensure that another process has not modified the file. Attempted, but ultimately rejected because of the last disadvantage. In order to make a defrag for EXT3 safe, you would need to do one of two things: 1) Develop a Defrag API or some sort of File System Maintenance API which included Defrag support and successfully integrate it into the kernel. - OR - 2) Extend Mandatory Locking to every file the system opens and closes and integrate such a patch into the kernel. Either task is uphill sledding. Joseph D. Wagner _______________________________________________ Ext3-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/ext3-users