Problems with gjournal or something else.

Artem Kuchin matrix at
Thu Nov 1 01:37:11 PDT 2007

韓家標 Bill Hacker wrote:
> Artem Kuchin wrote:
>>>> Then did:
>>>> newfs -J -b 8192 -f 1024 -g 50000 -h 20 -i 40960 /dev/twed1s1f
>>>> gjournal load
>>>> gjournal label -f /dev/twed1s1f
>>>> tunefs -J enable -n disable /dev/twed1s1f
>>>> mount -o noatime /dev/twed1s1f.journal /NEW/suit
>>> It's wrong order. See gjournal(8) manual page, EXAMPLES section. You
>>> cannot create file system and then put journal on the same
>>> partition. gjournal would warn you about that, but you used force
>>> (-f) option.
>> Here is what man says:
>> Configure gjournaling on an existing file system, but only if
>> gjournal allows this (i.e.: if the last sector is not already used
>> by the file system):
>> umount /dev/da0s1d
>> gjournal label da0s1d da0s1e
>> tunefs -J enable -n disable mount -o async /dev/da0s1d.journal /mnt
>> mount /dev/da0s1d /mnt
>> However, this simple does not work.
>> gjournal label da0s1d da0s1e - WILL FAIL ON EXISTING FS!
>> Need to use -f switch for this.
>> So, those whole thing will look like this
>> 1:  newfs /dev/da0s1d here we have our  EXISTING filesyetm
>> 2: gjournal load
>> 3: gjournal label -f /dev/da0s1d 4: tunefs -J enable -n disable
>> /dev/da0s1d 5: mount -o async /dev/da0s1d.journal /mnt
>> Now, when you start to fill /mnt you will get error=5 with offset
>> out of range
>> of the filesystem, beceause metadata for the filesystem is used  from
>> /dev/da0s1f (step1) but gjournal used 1GB for the journal.
>> This error goes away if i add additional step between 4  and 5
>> 4.5: newfs /dev/da0s1d.journal
>> question1:
>> 4: tunefs -J enable -n disable /dev/da0s1d
>> really must be for /dev/da0s1d or for /dev/da0s1d.journal
>> question2:
>> man says
>> gjournal label da0s1d da0s1e && tunefs -J enable -n disable && mount
>> -o async /dev/da0s1d.journal /mnt || mount /dev/da0s1d /mnt
>> why there is no fs argument in tunefs? mistake?
> Ah .. does it not expect a raw block device / portion? With no
> (other) fs type?

osiris# tunefs -p
usage: tunefs [-A] [-a enable | disable] [-e maxbpg] [-f avgfilesize]
              [-J enable | disable ] [-L volname] [-l enable | disable]
              [-m minfree] [-n enable | disable] [-o space | time] [-p]
              [-s avgfpdir] special | filesystem

So either special or filesystem must be specified

> Is this apparent conflict [ occuring | will occur]  [because |
> if/as/when ] the device has already been given a geom family 'label'.

note here.

The above example is related to ALRADY EXISTING filesystem.
And my point is that IT NEVER WORKS W/O LOOSING DATA!
The only was to create properly working journaled fs is to create
from scratch.

When i created partitions  (lables) using sysinstall i had to do then
cat /dev/zero > /dev/twed1s1f
in otder to erase the label.

The proper order seems to be:

1: do fdisk twed1
2: create labels (eg twed1s1f)
3: do cat /dev/zero > /dev/twed1sf into the partition which will be gjournaled
4: gjournal load
5: gjournal label -f /dev/twed1s1f
6: newfs -J /dev/twed1s1f.journal
7: tunefs -J enable -n disable  /dev/twed1s1f.journal - I think this one is NOT NEEDED AT ALL!
8: : mount -o noatime /dev/twed1s1f.journal /NEW/suit

After all these step journal fs works fine.
I wonder how i can check journal usage and if it is really journaled at all :)


More information about the freebsd-current mailing list