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 */ --- -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html