Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Dec 1997 16:11:09 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        dyson@FreeBSD.ORG, julian@whistle.com
Cc:        current@FreeBSD.ORG
Subject:   Re: DEVFS: John, can you suggest..
Message-ID:  <199712060511.QAA31383@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>My new DEVFS/SLICE code seems to work fine..
>except:
>occasionally I get a call from the system to transfer an 
>amount of data that is not a multiple of 512 bytes.
>
>actually 4736 bytes to be exact.
>( (9 * 512) + 128 )
>...
>The stack trace is:
>(by hand)
>
><my stuff>
>spec_strategy
>spec_vnoperate
>spec_getpages
>spec_vnoperate

spec_getpages() always rounds up to a multiple of a block size.  However,
in the mounted case, this block size is vp->v_mount->mnt_stat.f_bsize.
Apparently f_bsize is not a multiple of 512.

There are lots of related bogons.  E.g., the cluster_write() call in
spec_strategy() flounders around using the f_bsize and other unrelated
values for the filesystem that the device node happens to be in.
Perhaps your problem is actually here.  There is no problem for ffs
because spec_bmap() returns a run length of 0, so cluster_write()
reduces to a slow way of calling bawrite() or bdwrite() (depending
bogusly on whether the filesystem is mounted -async).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712060511.QAA31383>