From mboxrd@z Thu Jan 1 00:00:00 1970 From: Phillip Susi Subject: Re: How defragmentation works in linux filesystems ? Date: Tue, 15 Jan 2013 16:23:51 -0500 Message-ID: <50F5C8E7.8030607@ubuntu.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Kernelnewbies@kernelnewbies.org, linux-fsdevel@vger.kernel.org To: Sankar P Return-path: Received: from cdptpa-omtalb.mail.rr.com ([75.180.132.120]:50280 "EHLO cdptpa-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754012Ab3AOVXw (ORCPT ); Tue, 15 Jan 2013 16:23:52 -0500 In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 1/7/2013 4:27 AM, Sankar P wrote: > Hi, > > Is there any technical article explaining how defragmentation works > in linux filesystems, say btrfs or ext4 ? > > Do they recreate the file data blocks and change the root pointer > to the new extent ? Or do they do some kind of moving blocks around > ? Or is it based on some other strategy ? Partial defragmentation > (based on either byte offset or extents) is also supported by any > of the file systems ? e4defrag uses an ioctl to allocate a new donor inode with enough contiguous blocks to hold the original, then atomically copy the blocks and swap the pointers. > Is there a standard way to trigger a defragmentation operation (an > ioctl ?) that my filesystem could implement so that any user space > tool that work with other fs will work with mine too ? (Like, how > FIEBMAP ioctl can help in giving the extent information for a file > from the userspace) No. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (MingW32) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBAgAGBQJQ9cjmAAoJEJrBOlT6nu754ZkH/2ZGsCpKMDQoZN8/82scAlXl DYZK/4ckttnxB5EiXSygBnGqdjAdR7IK+q+JJxUok7uLAAgGux1yKq4NX6pyd0f9 MIbMGYNHy1Mwn9uel+eGxPcvFF1s4p38tknZp1ZqBFbWpcnhJN5mTgBHHm+SLuLG d7GsFMBHiHr0IyMW8gWxiLEs4jDXSU1N8lDAcxOZCinE+A5DAUtWTPx3moTk6JYU u69pPQr/A5Krp1eLCIQCIPw4JkM1yWoX9Tfs2SL88okWxP+OD1JXfoOfKmzbUdLd bs0wJSkyK/VddK1YJbXGEi0zH2c4ue3DyYu4Kc9JizxL8vQk+XJUJAJI9vexR58= =G3lC -----END PGP SIGNATURE-----