gjournal public alpha release

Eric Anderson anderson at centtech.com
Fri Aug 12 12:46:45 GMT 2005


Eric Anderson wrote:
> Ivan Voras wrote:
> 
>> Hi!
>>
>> I'm announcing the first public version of the gjournal GEOM class :)
>> The code is here: http://ivoras.sharanet.org/gjournal.tgz, together with
>> a README file (reproduced below).
>>
>> I'd like to hear as many testing and bug reports as possible :)
> 
> 
> [..snip..]
> 
> Bug report:
> 
> /dev/md0 is a mdconfig'ed 3gb drive sitting atop an IDE disk.  md1 is a 
> mdconfiged mmap'ed disk for the journal.
> 
> 
> bash-2.05b# ./gjournal label testjournal /dev/md0 /dev/md1
> **Number of arguments: 3
> bash-2.05b# dmesg
> GEOM_JOURNAL[0]: Creating device testjournal (id=3733383246).
> GEOM_JOURNAL[0]: Device testjournal created (id=3733383246).
> GEOM_JOURNAL[0]: Worker thread for testjournal created
> GEOM_JOURNAL[0]: Adding disk md0 to testjournal.
> GEOM_JOURNAL[0]: Disk md0 attached to testjournal (data).
> GEOM_JOURNAL[0]: Adding disk md1 to testjournal.
> GEOM_JOURNAL[0]: Disk md1 attached to testjournal (journal).
> GEOM_JOURNAL[0]: Device testjournal activated.
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,b82ed800,c21d5b40,3e7,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,b82ed800) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,b7fd4a00,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,b82ed800,0,200,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,0,c21d5b40,1,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,0) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,0,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,0,0,200,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,200,c21d5b40,0,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,200) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,2f2600,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,200,0,200,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,0,c21d5b40,1,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,0) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,0,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,0,0,200,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,0,c21d5b40,1,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,0) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,0,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,0,0,400,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> malloc(M_WAITOK) of "gjournal.hl", forcing M_NOWAIT with the following 
> non-sleepable locks held:
> exclusive sleep mutex gjournal:rmap r = 0 (0xc28ad978) locked @ 
> g_journal.c:748
> KDB: stack backtrace:
> kdb_backtrace(1,b82ed800,c21d5b40,3e7,e4147be8) at kdb_backtrace+0x29
> witness_warn(5,0,c0871275,c298d39c,b82ed800) at witness_warn+0x18e
> uma_zalloc_arg(c21d5b40,0,2,b7fd4a00,0) at uma_zalloc_arg+0x41
> hl_find_interval(c5293000,b82ed800,0,200,c28ad978) at hl_find_interval+0xbd
> g_journal_journal_read(c21a9a0c,c28ad948,0,152e5,5790b0f0) at 
> g_journal_journal_read+0x47
> g_journal_worker(c28ad900,e4147d38,c28ad900,c2989258,0) at 
> g_journal_worker+0x9b2
> fork_exit(c2989258,c28ad900,e4147d38) at fork_exit+0xa0
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xe4147d6c, ebp = 0 ---
> 
> 


Not to mention once I have the /dev/journeled/testjournal mounted, I get 
a streaming spewage of those messages in /var/log/messages, which causes 
syslogd to crank to 99% CPU, and the performance to be horrible as you'd 
expect with no CPU to do anything.

Eric



-- 
------------------------------------------------------------------------
Eric Anderson        Sr. Systems Administrator        Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------


More information about the freebsd-hackers mailing list