DragonFly BSD
DragonFly bugs List (threaded) for 2006-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: vinum panic on -devel

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 6 Jul 2006 17:05:30 -0700 (PDT)

:Matthew Dillon wrote:
:>     That looks like the right fix to me too, go ahead and commit it as
:>     soon as you test it.
:alright.  panic()ing my way through vinum, i now reached:
:panic: brelse: inappropriate B_PAGING or B_CLUSTER bp 0xc2622a00
:#3  0xc01afec5 in brelse (bp=0xc2622a00) at /usr/build/src/sys/kern/vfs_bio.c:971
:#4  0xd5731594 in revive_block (sdno=2) at /usr/build/src/sys/dev/raid/vinum/vinumrevive.c:225
:well, of course B_PAGING is set, because revive_block() sets it.  what's the correct way to release this buf?  should i simply unset B_PAGING?
:  simon

    B_PAGING should not be set on getblk()'d buffers so simply do not
    set B_PAGING.  In fact, vinum shouldn't even be setting the flags
    unconditionally like it is right there. 

    Remove this entirely:
	bp->b_flags = B_PAGING;

	bp->b_flags = B_ORDERED | B_PAGING;

	bp->b_flags |= B_ORDERED;

    This happens in a couple of places in that file.

    That should work.  Really the correct way is probably to use getpbuf()
    instead of geteblk(), but I'd like to make as few functional changes
    as possible to get vinum working again.

					Matthew Dillon 

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]