Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Mar 2007 17:10:41 +0100
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        David Cecil <david.cecil@nokia.com>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: FFS writes to read-only mount
Message-ID:  <20070314161041.GI7847@garage.freebsd.pl>
In-Reply-To: <45F776AE.8090702@nokia.com>
References:  <45F776AE.8090702@nokia.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--aFi3jz1oiPowsTUB
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, Mar 14, 2007 at 02:14:38PM +1000, David Cecil wrote:
> Hi,
>=20
> I have seen the following message (or equivalent) occasionally on a FreeB=
SD 6.1 system:
> g_vfs_done():mirror/gm0s1a[WRITE(offset=3D1349091328, length=3D16384)]err=
or =3D 1
>=20
> The partition in question is the root partition, and it is mounted read-o=
nly.  I have verified that the problem occurs due to the write request retu=
rning EPERM due to the=20
> check in g_io_check:
> case BIO_WRITE:
> case BIO_DELETE:
>        if (cp->acw =3D=3D 0)
>            return (EPERM);
>=20
> I have been trying to determine what within FFS would be trying to write =
to the partition.  The "bio_from" in the bio structure indicates (in the ge=
om) that it's=20
> ffs.mirror/gm0s1a that's trying to write.  The contents of the buffer loo=
ks somewhat like a directory (lots of files listed, but comparison to the a=
ctual directory that=20
> contians these files reveals it's somewhat different), followed by a bina=
ry (ELF header).  However, I'm at a loss to understand who's actually doing=
 the writing.  Is it=20
> coming from within FFS or is there an application that's done the write? =
 (I can't understand how an application would be permitted to do it though.)
>=20
> I have seen this sort of problem (same error number) reported on the Inte=
rnet occasionally, but it doesn't seem it's been satisfactorily resolved in=
 all instances.
>=20
> Any help you can provide would be much appreciated.

Will be good if you could place kdb_enter() into g_vfs_done() error path
and once in DDB try which processes wait for I/O and collect their
backtraces or just put output of 'alltrace' on some web page.

--=20
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd@FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

--aFi3jz1oiPowsTUB
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)

iD8DBQFF+B6BForvXbEpPzQRAsmUAJ9q1BSCE2MK3t5A6FbOCbWm6x09+wCg5Lso
7/uhJVDJt/nw9ZFsc9o6FNQ=
=3qfq
-----END PGP SIGNATURE-----

--aFi3jz1oiPowsTUB--



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