From: Derkjan de Haan Subject: Re: can't get e4defrag to work Date: Fri, 23 Jan 2009 20:08:58 +0100 Message-ID: <7a45233b0901231108i55e8b504va8b9b00c0a38a80e@mail.gmail.com> References: <7a45233b0901210704w5038d8b8g5c657e3a4746f34d@mail.gmail.com> <49797056.7030607@rs.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Takashi Sato , linux-ext4@vger.kernel.org To: Akira Fujita Return-path: Received: from fg-out-1718.google.com ([72.14.220.158]:29251 "EHLO fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752814AbZAWTJB (ORCPT ); Fri, 23 Jan 2009 14:09:01 -0500 Received: by fg-out-1718.google.com with SMTP id 19so2648872fgg.17 for ; Fri, 23 Jan 2009 11:08:59 -0800 (PST) In-Reply-To: <49797056.7030607@rs.jp.nec.com> Sender: linux-ext4-owner@vger.kernel.org List-ID: Hi Akira, Just got e4defrag to work - to a certain degree. I'm using Fedora 10, which has ext4 as a module. This produces the problem described here: http://lkml.indiana.edu/hypermail/linux/kernel/0901.2/00701.html (the patch 'ext4: Add a delayed allocation debugging ioctl' doesn't export inode_lock -> I reverted this patch) But now I'm bitten by the fact that Fedora 10 creates ext4 filesystems with the flex_bg feature enabled, which seems to be incompatible with e4defrag. I also can't seem to clear that flag. tune2fs refuses this, and if try using debugfs the flag gets cleared, but when running e2fsck it gets restored again, so I'm basically stuck here. Regards, Derkjan 2009/1/23 Akira Fujita : > Hi Derkjan, > > Thank you for using ext4 onlie defrag. > > I tried to use the same kernel and command > (2.6.28 + > http://www2.kernel.org/pub/linux/kernel/people/tytso/ext4-patches/LATEST/broken-out.tar.bz2 > ) > and I got a fine result as follows. > > [root@bsd086 broken-out]# ./e4defrag -v /mnt/mp1/file1 > ext4 defragmentation for /mnt/mp1/file1 > [1/1]/mnt/mp1/file1: 100% extents: 3 -> 1 [ OK ] > Success: [1/1] > > My environment was: > [root@bsd086 broken-out]# uname -a > Linux bsd086 2.6.28 #2 SMP Thu Jan 22 09:55:13 JST 2009 i686 i686 i386 > GNU/Linux > > [root@bsd086 broken-out]# mount > /dev/sda8 on /mnt/mp1 type ext4 (rw) > > [root@bsd086 broken-out]# debugfs /dev/sda8 > .. > Filesystem features: has_journal ext_attr resize_inode dir_index > filetype n > eeds_recovery extent sparse_super large_file huge_file uninit_bg dir_nlink > extra > _isize > Filesystem flags: signed_directory_hash > Default mount options: (none) > Filesystem state: clean > Errors behavior: Continue > Filesystem OS type: Linux > Inode count: 61824 > Block count: 246991 > Reserved block count: 12349 > Free blocks: 223339 > Free inodes: 61810 > First block: 0 > Block size: 4096 > Fragment size: 4096 > Reserved GDT blocks: 60 > Blocks per group: 32768 > Fragments per group: 32768 > Inodes per group: 7728 > .. > > > Did you turn off the flex_bg feature in your case? > But the message "Inappropriate ioctl for device" you had is not > related to the flex_bg. > Something related to ioctl might be wrong in your case. > > Were there any reject or hunks when you applied patches to kernel? > Did you boot with correct kernel? > I have no idea so can you tell me the detail of your test environment? > > By the way, ext4 online defrag in the current ext4 patch queue (2.6.29-rc1) > does not work fine, because defrag does not handle some new ext4 functions > correctly. > Therefore Ted commented them out recently. > > I'm preparing to release new online defrag patches now. > Probably it will be the next week. > I appreciate it if you try to use new one as well. > > Thanks, > Akira Fujita > > > Derkjan de Haan wrote: >> >> Dear Sirs, >> >> I have tried to compile a usable e4defrag but to no avail. It doesn't >> defrag anything, and in verbose mode it reports: "Defrag >> fail:Inappropriate ioctl for device". >> >> I have downloaded a stock 2.6.28 kernel, and applied all patches in >> >> http://www2.kernel.org/pub/linux/kernel/people/tytso/ext4-patches/LATEST/broken-out.tar.bz2 >> I have uncommented the defrag patches (except -00 (the changelog) and >> -09 (the defrag tool) in the series file, and run "quilt push -a". It >> reports all patches applied successfully. An example e4defrag run >> looks like this: >> >> [root@toshiba ~]# ./e4defrag -v . >> ext4 defragmentation for directory(.) >> [1/31] "/root" >> File is not regular file [ NG ] >> [2/31] "/root/.gnupg" >> File is not regular file [ NG ] >> [3/31]/root/.gnupg/gpg.conf: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [4/31] "/root/.gnupg/pubring.gpg" >> File size is 0 [ NG ] >> [5/31]/root/e4defrag: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [6/31] "/root/Mail" >> File is not regular file [ NG ] >> [7/31]/root/defrag-09-online-defrag-command.c: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [8/31] "/root/.gconfd" >> File is not regular file [ NG ] >> [9/31]/root/.gconfd/saved_state: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [10/31]/root/.bashrc: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [11/31] "/root/.kde" >> File is not regular file [ NG ] >> [12/31] "/root/.kde/cache-toshiba.badmuts.org" >> File is not regular file [ NG ] >> [13/31] "/root/.kde/tmp-toshiba.badmuts.org" >> File is not regular file [ NG ] >> [14/31]/root/.lesshst: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [15/31] "/root/.ketchup" >> File is not regular file [ NG ] >> [16/31]/root/.ketchup/patch-2.6.29-rc2.bz2: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [17/31]/root/install.log.syslog: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [18/31]/root/.bash_logout: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [19/31]/root/.bash_history: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [20/31]/root/.bash_profile: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [21/31]/root/anaconda-ks.cfg: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [22/31] "/root/.lftp" >> File is not regular file [ NG ] >> [23/31]/root/.lftp/rl_history: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [24/31]/root/.lftp/transfer_log: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [25/31]/root/.lftp/cwd_history: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [26/31]/root/.cshrc: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [27/31]/root/install.log: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [28/31]/root/.tcshrc: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [29/31] "/root/.ssh" >> File is not regular file [ NG ] >> [30/31]/root/.ssh/known_hosts: 0% >> Defrag fail:Inappropriate ioctl for device [ NG ] >> [31/31] "/root/.gconf" >> File is not regular file [ NG ] >> >> Success: [ 0/31 ] >> Failure: [ 31/31 ] >> Total extents: 36->36 >> Fragmented percentage: 20%->20% >> >> I must be doing something wrong, but I can't figure out what. Do you >> have any hints? >> >> Kind regards, >> >> >> Derkjan de Haan >> >