Re: jbd2 inside a device mapper module

From: Alberto Bertogli
Date: Thu Dec 25 2008 - 19:02:24 EST


On Thu, Dec 25, 2008 at 10:52:48AM -0500, Theodore Tso wrote:
> On Thu, Dec 25, 2008 at 12:35:35PM -0200, Alberto Bertogli wrote:
> > - What is the reason behind the j_inode check in jbd2_journal_create()?
>
> jbd2_journal_create was only designed for creating inode-based
> journals, and it's a deprecated function that will likely be removed
> soon.

Thanks, I didn't know that!


> > - Does mke2fs -O journal_dev creates a journal that jbd2_journal_load()
> > is supposed to read without any knowledge of ext2/3/4 stuff? If not,
> > how can I create such a journal? I'll be looking at the e2fsprogs
> > code for the answer to this question later today (I haven't looked at
> > it yet).
>
> mke2fs -O journal_dev creates an external journal, but when you create
> a filesystem, you need to specify need to specify location of the
> external journal. Hence:
>
> mke2fs -O journal_dev /dev/extern_journal_dev
> mke2fs -t ext4 -J device=/dev/extern_journal_dev /dev/filesystem_dev
>
> As I said in my last message. I've tested it, and it works Just Fine.

I think I'm not explaining myself correctly. My code has _nothing_ to do
with ext2/3/4 (or any other filesystem) whatsoever. I'm not using the
journal as an external one for a filesystem. I want to use it to be able
to do atomic writes in my own, filesystem independant, device-mapper
code.

After what you told me (both this and the deprecation of
jbd2_journal_create()), I took a look at e2fsprogs' source. From what I
could see, "mke2fs -O journal_dev" creates the external journal inside
some ext2/3/4 structures, which caused my journal-loading code to fail
(because it doesn't know about ext stuff).

So, I wrote a small "mkjournal" utility that creates a journal on the
block device without any ext2/3/4 stuff. It's based on e2fsprogs'
mkjournal.c, except it doesn't have any ext2 stuff. And it worked great!
I'm now able to load the journal just fine.

Thanks a lot for all the help!

Alberto

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/