Discussion:
e3fsprogs endian fix
Nicolas ENG
2008-03-12 16:13:11 UTC
Permalink
I wasn't able to create an ext3cow filesystem using mkfs on big endian
architecture.

The problem was in struct ext2_dir_entry_2.
From ext2_dir_entry to ext2_dir_entry_2 the two bytes of name_len hava been
separated to
manage file type in a nicer way. This was previously done directly in the
higher byte of
name_len, since name_len <=255.

Since the handling of the two bytes as two different fields was not
implemented in the rest
of the code, separating them will result in the loss of file_type value for
little endian systems
(probably harmless) and in a wrong evaluation of name_len on big endian
systems.

Moreover, super block epoch number wasn't displayed in the correct byte
order.

See attached patch.


Nicolas Eng
Ricardo Kleemann
2008-05-13 03:36:25 UTC
Permalink
Hi,

Is ext3cow available only by manually compiling the kernel?

I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd prefer if I didn't have to compile the whole kernel.

Ricardo
Jon
2008-05-13 03:53:52 UTC
Permalink
You can more than likely compile a kernel module along with the ext3cow
programs (mkfs etc), then load that module and initialize the filesystem
with those programs; probably all within the Ubuntu LiveCD environment.

What partition scheme do you intend to establish?
Post by Ricardo Kleemann
Hi,
Is ext3cow available only by manually compiling the kernel?
I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd prefer
if I didn't have to compile the whole kernel.
Ricardo
------------------------------------------------------------------------
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Ricardo Kleemann
2008-05-13 04:02:58 UTC
Permalink
Hi Jon,

I'm within the installation (from boot) off the Ubuntu server CD. It's not
the liveCD.

In any case, what I'm doing is installing the system first without ext3cow,
and later I will create ext3cow partitions to be mounted.

Do I have to patch the entire kernel and build it, or is it possible to
simply build an ext3cow module and load it?

Certainly I'd prefer to have a pre-built module... ;-) but I'm guessing one
doesn't exist?

Thanks for your help.
Ricardo

----- Original Message -----
From: "Jon" <jonforthewin-***@public.gmane.org>
To: "Ricardo Kleemann" <ricardo-EmQHBnauWrHQnzwC+***@public.gmane.org>
Cc: <ext3cow-devel-VAX/***@public.gmane.org>
Sent: Monday, May 12, 2008 8:53 PM
Subject: Re: [ext3cow-devel] any prebuilt kernels?
Post by Jon
You can more than likely compile a kernel module along with the ext3cow
programs (mkfs etc), then load that module and initialize the filesystem
with those programs; probably all within the Ubuntu LiveCD environment.
What partition scheme do you intend to establish?
Post by Ricardo Kleemann
Hi,
Is ext3cow available only by manually compiling the kernel?
I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd prefer
if I didn't have to compile the whole kernel.
Ricardo
------------------------------------------------------------------------
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Jon
2008-05-13 04:13:51 UTC
Permalink
Post by Ricardo Kleemann
and later I will create ext3cow partitions to be mounted.
Good that'll make things a lot easier.

Regardless of whether you build a module or hard-compile the code into a
new kernel, you will need the kernel sources.

I haven't used ext3cow myself but I know it will be available in most
likely two ways. Either you patch a set of Linux kernel sources (which
will be very easy as Ubuntu has packages for this), run make menuconfig,
navigate to the filesystem menu, mark ext3cow as "M" for module, exit
the menu, type make ; make modules ; make install or something or
other.. or you ./configure ; make ; make install etc out of a tarball.

Whatever you need to do it will be straightforward and you can probably
script the process for new version of ext3cow that contain bugfixes etc.

I haven't had a chance to use ext3cow myself yet so let me know how it goes.

- Jon
Post by Ricardo Kleemann
Hi Jon,
I'm within the installation (from boot) off the Ubuntu server CD. It's
not the liveCD.
In any case, what I'm doing is installing the system first without
ext3cow, and later I will create ext3cow partitions to be mounted.
Do I have to patch the entire kernel and build it, or is it possible to
simply build an ext3cow module and load it?
Certainly I'd prefer to have a pre-built module... ;-) but I'm guessing
one doesn't exist?
Thanks for your help.
Ricardo
Sent: Monday, May 12, 2008 8:53 PM
Subject: Re: [ext3cow-devel] any prebuilt kernels?
Post by Jon
You can more than likely compile a kernel module along with the
ext3cow programs (mkfs etc), then load that module and initialize the
filesystem with those programs; probably all within the Ubuntu LiveCD
environment.
What partition scheme do you intend to establish?
Post by Ricardo Kleemann
Hi,
Is ext3cow available only by manually compiling the kernel?
I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd
prefer if I didn't have to compile the whole kernel.
Ricardo
------------------------------------------------------------------------
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Tim Post
2008-05-13 10:06:55 UTC
Permalink
Sorry, my "reply to list" appears to be broken.
Post by Ricardo Kleemann
Hi,
Is ext3cow available only by manually compiling the kernel?
I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd
prefer if I didn't have to compile the whole kernel.
I will soon be producing .deb packages for the ext3cow kernel against
the official 2.6.20.3 patches with a .config from a similar Ubuntu
kernel in that series.

Installing ext3cow as a module on modern kernels will break. Ext3cow is
built against ext3 (from 2.6.20.3), the module will not find what it
needs to work beyond that kernel. This is because ext3 itself has moved
considerably after that release.

When I update the e3cfsprogs and merge with the latest e2fsprogs git
tree, tool packages will also appear. I will set up a trivial repository
for Debian/Ubuntu packages when that merge is complete, it will take a
while as we're at 1.39 and they have moved considerably since then.

The result will be:

linux-image-ext3cow
linux-modules-ext3cow
ext3cow-tools

Sven, if you want to help set up a proper (pin-able) pooled repo, your
help is welcome and very much appreciated. I only have experience
setting up trivial repositories, help from a Debian developer would be
great :) I don't want to contribute to the proliferation of trivial
repositories if it can be avoided. I admire your work and would be very
pleased to work with you.

Cheers,
--Tim
--
Monkey + Typewriter = Echoreply ( http://echoreply.us )
Jon
2008-05-13 13:40:26 UTC
Permalink
Please make Gentoo ebuilds or host a Gentoo Portage Overlay.

It will be very much appreciated.
Post by Tim Post
Sorry, my "reply to list" appears to be broken.
Post by Ricardo Kleemann
Hi,
Is ext3cow available only by manually compiling the kernel?
I'm trying to install Ubuntu and I'd like to use ext3cow, but I'd
prefer if I didn't have to compile the whole kernel.
I will soon be producing .deb packages for the ext3cow kernel against
the official 2.6.20.3 patches with a .config from a similar Ubuntu
kernel in that series.
Installing ext3cow as a module on modern kernels will break. Ext3cow is
built against ext3 (from 2.6.20.3), the module will not find what it
needs to work beyond that kernel. This is because ext3 itself has moved
considerably after that release.
When I update the e3cfsprogs and merge with the latest e2fsprogs git
tree, tool packages will also appear. I will set up a trivial repository
for Debian/Ubuntu packages when that merge is complete, it will take a
while as we're at 1.39 and they have moved considerably since then.
linux-image-ext3cow
linux-modules-ext3cow
ext3cow-tools
Sven, if you want to help set up a proper (pin-able) pooled repo, your
help is welcome and very much appreciated. I only have experience
setting up trivial repositories, help from a Debian developer would be
great :) I don't want to contribute to the proliferation of trivial
repositories if it can be avoided. I admire your work and would be very
pleased to work with you.
Cheers,
--Tim
Ricardo Kleemann
2008-05-13 15:03:07 UTC
Permalink
Thank you, Tim.

Apparently Ubuntu is up to 2.6.24 now?
Post by Tim Post
I will soon be producing .deb packages for the ext3cow kernel against
the official 2.6.20.3 patches with a .config from a similar Ubuntu
kernel in that series.
Installing ext3cow as a module on modern kernels will break. Ext3cow is
built against ext3 (from 2.6.20.3), the module will not find what it
needs to work beyond that kernel. This is because ext3 itself has moved
considerably after that release.
So the procedure to build a module won't work with just the ext3cow patch?
If I have 2.6.24 source tree how would I go about using ext3cow?

Thank you
Ricardo
Zachary N. J. Peterson
2008-05-13 15:08:30 UTC
Permalink
Just for clarification, the ext3cow patch doesn't modify the ext3
source in the kernel tree, it just adds itself as an installable file
system. That being said, I haven't tried it with any other kernel
than 2.6.20, so there may have been changes to the interfaces that may
make ext3cow not work.

-Zachary

---
Zachary N. J. Peterson
Assistant Research Scientist
The Johns Hopkins University

zachary-***@public.gmane.org
http://znjp.com
Post by Ricardo Kleemann
Thank you, Tim.
Apparently Ubuntu is up to 2.6.24 now?
Post by Tim Post
I will soon be producing .deb packages for the ext3cow kernel against
the official 2.6.20.3 patches with a .config from a similar Ubuntu
kernel in that series.
Installing ext3cow as a module on modern kernels will break.
Ext3cow is
built against ext3 (from 2.6.20.3), the module will not find what it
needs to work beyond that kernel. This is because ext3 itself has moved
considerably after that release.
So the procedure to build a module won't work with just the ext3cow patch?
If I have 2.6.24 source tree how would I go about using ext3cow?
Thank you
Ricardo
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Tim Post
2008-05-13 16:11:20 UTC
Permalink
Post by Ricardo Kleemann
Thank you, Tim.
Apparently Ubuntu is up to 2.6.24 now?
Unfortunately, ext3cow will not work as a module on that kernel.

I could bore you with a ton of functions that changed beyond 2.6.20,
ext3 has advanced considerably since then.

ext3cow is made by making a copy of ext3, renaming ext3*_() to
ext3cow*_() and applying ext3cow specific modifications.

This means, the ext3cow module is calling foo_bar(), but the kernel says
no such function, goodbye, it wants foo_foo_bar().

The end result is the module will not load on modern kernels, the
underlying functions that ext3cow uses have been eliminated.
Post by Ricardo Kleemann
So the procedure to build a module won't work with just the ext3cow patch?
If I have 2.6.24 source tree how would I go about using ext3cow?
You can't, it will only go in cleanly with 2.6.20.3. Beyond that the
kernel will probably spit it out.


Cheers,
--Tim
--
Monkey + Typewriter = Echoreply ( http://echoreply.us )
Nicolas ENG
2008-05-16 14:34:04 UTC
Permalink
I've just posted a patch to add ext3cow to 2.6.25.3 kernel.
I'm awaiting for Zachary approval since it is a little too big for
the maling list.
I've been testing ext3cow with 2.6.25.3 for two days and it
looks really ok for me.


Nicolas Eng
Post by Tim Post
Post by Ricardo Kleemann
Thank you, Tim.
Apparently Ubuntu is up to 2.6.24 now?
Unfortunately, ext3cow will not work as a module on that kernel.
I could bore you with a ton of functions that changed beyond 2.6.20,
ext3 has advanced considerably since then.
ext3cow is made by making a copy of ext3, renaming ext3*_() to
ext3cow*_() and applying ext3cow specific modifications.
This means, the ext3cow module is calling foo_bar(), but the kernel says
no such function, goodbye, it wants foo_foo_bar().
The end result is the module will not load on modern kernels, the
underlying functions that ext3cow uses have been eliminated.
Post by Ricardo Kleemann
So the procedure to build a module won't work with just the ext3cow
patch?
Post by Ricardo Kleemann
If I have 2.6.24 source tree how would I go about using ext3cow?
You can't, it will only go in cleanly with 2.6.20.3. Beyond that the
kernel will probably spit it out.
Cheers,
--Tim
--
Monkey + Typewriter = Echoreply ( http://echoreply.us )
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Tim Post
2008-05-17 02:24:57 UTC
Permalink
Post by Nicolas ENG
I've just posted a patch to add ext3cow to 2.6.25.3 kernel.
I'm awaiting for Zachary approval since it is a little too big for
the maling list.
I've been testing ext3cow with 2.6.25.3 for two days and it
looks really ok for me.
Happy happy joy joy :)
--
Monkey + Typewriter = Echoreply ( http://echoreply.us )
Zachary N. J. Peterson
2008-06-02 16:02:04 UTC
Permalink
Hi all, I'm back from Alaska. It seems like interest in this project
seems to peek exactly when I go on vacation =).

The previous endianness patch is OK.

I'll take a look at this patch just as soon as I can remember the
admin password for this mailing list.

-Z

---
Zachary N. J. Peterson
Assistant Research Scientist
The Johns Hopkins University

zachary-***@public.gmane.org
http://znjp.com
Post by Nicolas ENG
I've just posted a patch to add ext3cow to 2.6.25.3 kernel.
I'm awaiting for Zachary approval since it is a little too big for
the maling list.
I've been testing ext3cow with 2.6.25.3 for two days and it
looks really ok for me.
Nicolas Eng
Post by Ricardo Kleemann
Thank you, Tim.
Apparently Ubuntu is up to 2.6.24 now?
Unfortunately, ext3cow will not work as a module on that kernel.
I could bore you with a ton of functions that changed beyond 2.6.20,
ext3 has advanced considerably since then.
ext3cow is made by making a copy of ext3, renaming ext3*_() to
ext3cow*_() and applying ext3cow specific modifications.
This means, the ext3cow module is calling foo_bar(), but the kernel says
no such function, goodbye, it wants foo_foo_bar().
The end result is the module will not load on modern kernels, the
underlying functions that ext3cow uses have been eliminated.
Post by Ricardo Kleemann
So the procedure to build a module won't work with just the
ext3cow patch?
Post by Ricardo Kleemann
If I have 2.6.24 source tree how would I go about using ext3cow?
You can't, it will only go in cleanly with 2.6.20.3. Beyond that the
kernel will probably spit it out.
Cheers,
--Tim
--
Monkey + Typewriter = Echoreply ( http://echoreply.us )
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
_______________________________________________
ext3cow-devel mailing list
http://hssl.cs.jhu.edu/cgi-bin/mailman/listinfo/ext3cow-devel
Loading...