xfs
[Top] [All Lists]

Re: [PATCH v2] xfstests: add support for ext4dev FSTYP

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: [PATCH v2] xfstests: add support for ext4dev FSTYP
From: "Amir G." <amir73il@xxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 3 Jun 2011 20:21:09 +0300
Cc: "Ted Ts'o" <tytso@xxxxxxx>, Andreas Dilger <adilger@xxxxxxxxx>, Dave Chinner <david@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, sergey57@xxxxxxxxx, Amir Goldstein <amir73il@xxxxxxxxxxxx>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=RIm7+Mmim/YnGawHSkRPsrgLfSnoeWodaWUZcCFSLTg=; b=BJwoBKNko3sHwJch86k4TgCNWyrwjldCad2BcXC5qlqrRFIOVduzhnjZRTshVQoHFC EPgNWSVjdEgTo5yNbRLmeiDZrSOeUCXaItjScjsenZpxDvq2rHYBjh/foebM9nl71fyk igdeDne2ja62leJewKbtMyz2ieLm6iGZhBn9k=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=rfBPTnZBNAbuVO1X/St6/vaw/qlIqOcs4HVUKlHn+Vz6/efbdjEIIMB7A+rfluTT8b sTerifnkOoVQPHCJ2xW3V5hHbZn2FSdKUcS4KjlFnIkR9akwTggVI8retj/6aosrqG25 ZayR0PMdZ/50lLeMTJYVEBsvJQZzW9G0zgz4Q=
In-reply-to: <4DE86BC1.4080008@xxxxxxxxxx>
References: <1306933012-8666-1-git-send-email-amir73il@xxxxxxxxxxxxxxxxxxxxx> <20110601232804.GL32466@dastard> <BANLkTi=sV5=PyZvNSd=DGNW-V84=27d7Yw@xxxxxxxxxxxxxx> <BANLkTimbPWfOJKq6er4mnSYNPcx6VHLcrw@xxxxxxxxxxxxxx> <BANLkTimKV3LxugkW6_cE5vutjcmatESXuw@xxxxxxxxxxxxxx> <4DE7A557.9040608@xxxxxxxxxx> <7D3F86FA-5AA9-49B0-9AFE-F597E83C07B4@xxxxxxxxx> <20110603003610.GD16306@xxxxxxxxx> <BANLkTikiE1v6r7sYKSsR_pgqM-dJzQKrzQ@xxxxxxxxxxxxxx> <4DE86BC1.4080008@xxxxxxxxxx>
Sender: amir73il@xxxxxxxxx
On Fri, Jun 3, 2011 at 8:06 AM, Eric Sandeen <sandeen@xxxxxxxxxx> wrote:
> On 6/2/11 11:59 PM, Amir G. wrote:
>> On Fri, Jun 3, 2011 at 3:36 AM, Ted Ts'o <tytso@xxxxxxx> wrote:
>>> On Thu, Jun 02, 2011 at 11:22:53AM -0600, Andreas Dilger wrote:
>>>> On 2011-06-02, at 8:59 AM, Eric Sandeen wrote:
>>>>> I don't really mind adding ext4dev to FSTYP case statements, it
>>>>> -is- something which blkid could, in theory, still return, and
>>>>> making xfstests cope with that and try to invoke fsck -t ext4dev
>>>>> doesn't bother me too much.  It is sadly an fs type embedded into
>>>>> a few tools.
>>>>
>>>> I'm perfectly OK with using ext4dev as a filesystem type that allows 
>>>> testing
>>>> changes to ext4 on a system that is already running ext4 as the root fs.
>>>
>>> My take on this is that way too much time has been spent this subject.
>>
>> No doubt.
>>
>>> Being able to use ext4dev is useful, and given that we have all of
>>> this support in our existing system tools, why not use it to make ext4
>>> development more efficient/easy?  As a bonus you can build the ext4dev
>>> as a module, and that means you the compile/edit/debug cycle can be
>>> much faster since you can avoid doing a reboot, for those
>>> circumstances where using KVM is not possible/convenient.  Personally,
>>> I normally use KVM these days, but I can imagine situations where
>>> using ext4dev would be a better way to go.  For example, I'd probably
>>> use KVM on my laptop, but for testing on production servers in a data
>>> center, I'd probably use ext4dev, for a variety of local deployment
>>> considerations that's not worth going into here.
>>>
>>> That being said, whether or not we modify xfstests seems to be a moot
>>> point.  In order for me to do my bigalloc development, I've been
>>> patching common.rc so that "/sbin/mkfs.$FSTYP" --> "mkfs.$FSTYP" and
>>> "/sbin/fsck -t $FSTYP" --> "fsck.$FSTYP".  It's a 3 line change.  Not
>>> a big deal.  I've been making this change using /bin/ed after
>>> installing xfstests.  So if the XFS folks want to veto this change ---
>>> who cares?  It's not hard to make the change locally in order to make
>>> xfstests.
>>>
>>> On the other hand, given that xfstests is using "mkfs.$FSTYP", I don't
>>> see why it's so important that it clings to "fsck -t $FSTYP" instead
>>> of using "fsck.$FSTYP".  There's no real benefit to calling the fsck
>>> driver; it's just an extra fork and exec, and xfstests is being
>>> inconsistent by insisting on the use of the fsck driver, but not using
>>> the mkfs driver.
>>>
>>> But that being said, hacking xfstests is not hard, and if Dave and/or
>>> Eric feels strongly about resisting this change, it's not worth a lot
>>> of time, one way or another....
>>>
>>>                                                - Ted
>>>
>>
>> I blame only myself for not presenting the case correctly.
>> I made it sound like I am trying to push my own private hack upstream.
>> Actually, all 10 people involved in snapshot development clone my xfstests
>> tree from github, so we have no real need for the upstream change.
>> The reason I was pushing upstream is because I found this feature
>> so useful, I thought other developers may enjoy it as well.
>>
>> Anyone on on this thread not having used ext4dev by next LSF
>> can come to me to claim his beer ;-)
>
> mmm I like beer, I'll see you then!  ;)
>
> -Eric (tucking this email away for future reference... ;)
>

Well, if anyone doesn't like beer, here are my low-tech ext4dev clone
scripts ;-)

ext4: scripts to clone and build ext4dev fs with default config options

diff --git a/clone_ext4dev.sh b/clone_ext4dev.sh
new file mode 100755
index 0000000..b5ae2c4
--- /dev/null
+++ b/clone_ext4dev.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+rm -rf fs/ext4dev
+mkdir -p fs/ext4dev
+cp -a fs/ext4/*.h fs/ext4dev
+cp -a fs/ext4/*.c fs/ext4dev
+cp -a fs/ext4/Kconfig fs/ext4dev
+cp -a fs/ext4/Makefile fs/ext4dev
+cp -a include/trace/events/ext4.h fs/ext4dev/ext4dev_events.h
+cd fs/ext4dev
+rm *.mod.c 2>/dev/null
+mv ext4_extents.h ext4dev_extents.h
+mv ext4_jbd2.h ext4dev_jbd2.h
+mv ext4_jbd2.c ext4dev_jbd2.c
+mv ext4.h ext4dev.h
+sed -f ../../ext4dev.sed -i *
+cd ..
+tar cfz ../ext4dev_module.tar.gz ext4dev/
diff --git a/ext4dev.sed b/ext4dev.sed
new file mode 100644
index 0000000..2ec2761
--- /dev/null
+++ b/ext4dev.sed
@@ -0,0 +1,3 @@
+s/ext4/ext4dev/g
+s/Ext4/Ext4dev/g
+s/EXT4/EXT4DEV/g
diff --git a/make_ext4dev.sh b/make_ext4dev.sh
new file mode 100755
index 0000000..495929f
--- /dev/null
+++ b/make_ext4dev.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+KERNEL=$(uname -r)
+KDIR=/lib/modules/${KERNEL}/build
+
+sudo cp fs/ext4dev/ext4dev_events.h ${KDIR}/include/trace/events/ext4dev.h
+make -C ${KDIR} M=${PWD}/fs/ext4dev modules
+sudo make -C ${KDIR} M=${PWD}/fs/ext4dev modules_install
+sudo rmmod ext4dev
+sudo modprobe ext4dev
+
diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
index c947e36..9981306 100644
--- a/fs/ext4/Makefile
+++ b/fs/ext4/Makefile
@@ -2,6 +2,13 @@
 # Makefile for the linux ext4-filesystem routines.
 #

+ifndef CONFIG_EXT4_FS
+CONFIG_EXT4_FS?=m
+CONFIG_EXT4_FS_XATTR?=y
+CONFIG_EXT4_FS_POSIX_ACL?=$(CONFIG_FS_POSIX_ACL)
+CONFIG_EXT4_FS_SECURITY?=y
+endif
+
 obj-$(CONFIG_EXT4_FS) += ext4.o

 ext4-y := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o page-io.o \
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 3aa0b72..657d437 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -33,6 +33,18 @@
 #include <linux/compat.h>
 #endif

+#ifndef EXT4_SUPER_MAGIC
+#define EXT4_SUPER_MAGIC EXT3_SUPER_MAGIC
+/* configuration options for standalone module */
+#define CONFIG_EXT4_DEFAULTS_TO_ORDERED
+#define CONFIG_EXT4_FS_XATTR
+#ifdef CONFIG_FS_POSIX_ACL
+#define CONFIG_EXT4_FS_POSIX_ACL
+#endif
+#define CONFIG_EXT4_FS_SECURITY
+#define CONFIG_EXT4_DEBUG
+#endif
+
 /*
  * The fourth extended filesystem constants/structures
  */
---

<Prev in Thread] Current Thread [Next in Thread>