<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/gnu/ext2fs, branch releng/5.3</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F5.3</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F5.3'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2004-08-15T06:24:42Z</updated>
<entry>
<title>Add locking to the kqueue subsystem.  This also makes the kqueue subsystem</title>
<updated>2004-08-15T06:24:42Z</updated>
<author>
<name>John-Mark Gurney</name>
<email>jmg@FreeBSD.org</email>
</author>
<published>2004-08-15T06:24:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=ad3b9257c2f09a6f1c0e56c1100aa4e43fb95e24'/>
<id>urn:sha1:ad3b9257c2f09a6f1c0e56c1100aa4e43fb95e24</id>
<content type='text'>
a more complete subsystem, and removes the knowlege of how things are
implemented from the drivers.  Include locking around filter ops, so a
module like aio will know when not to be unloaded if there are outstanding
knotes using it's filter ops.

Currently, it uses the MTX_DUPOK even though it is not always safe to
aquire duplicate locks.  Witness currently doesn't support the ability
to discover if a dup lock is ok (in some cases).

Reviewed by:	green, rwatson (both earlier versions)
</content>
</entry>
<entry>
<title>Put a version element in the VFS filesystem configuration structure</title>
<updated>2004-07-30T22:08:52Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>2004-07-30T22:08:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5e8c582ac2973e6389d6f9ae62021546bef75705'/>
<id>urn:sha1:5e8c582ac2973e6389d6f9ae62021546bef75705</id>
<content type='text'>
and refuse initializing filesystems with a wrong version.  This will
aid maintenance activites on the 5-stable branch.

s/vfs_mount/vfs_omount/

s/vfs_nmount/vfs_mount/

Name our filesystems mount function consistently.

Eliminate the namiedata argument to both vfs_mount and vfs_omount.
It was originally there to save stack space.  A few places abused
it to get hold of some credentials to pass around.  Effectively
it is unused.

Reorganize the root filesystem selection code.
</content>
</entry>
<entry>
<title>Remove global variable rootdevs and rootvp, they are unused as such.</title>
<updated>2004-07-28T20:21:04Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>2004-07-28T20:21:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=d634f693166bbd2aa258c0180cb79dc397978c08'/>
<id>urn:sha1:d634f693166bbd2aa258c0180cb79dc397978c08</id>
<content type='text'>
Add local rootvp variables as needed.

Remove checks for miniroot's in the swappartition.  We never did that
and most of the filesystems could never be used for that, but it had
still been copy&amp;pasted all over the place.
</content>
</entry>
<entry>
<title>Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL.  This is</title>
<updated>2004-07-26T07:24:04Z</updated>
<author>
<name>Colin Percival</name>
<email>cperciva@FreeBSD.org</email>
</author>
<published>2004-07-26T07:24:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=56f21b9d74a516a6c2f67d09e1b6c588bfa54c6a'/>
<id>urn:sha1:56f21b9d74a516a6c2f67d09e1b6c588bfa54c6a</id>
<content type='text'>
somewhat clearer, but more importantly allows for a consistent naming
scheme for suser_cred flags.

The old name is still defined, but will be removed in a few days (unless I
hear any complaints...)

Discussed with:	rwatson, scottl
Requested by:	jhb
</content>
</entry>
<entry>
<title>Make VFS_ROOT() and vflush() take a thread argument.</title>
<updated>2004-07-12T08:14:09Z</updated>
<author>
<name>Alfred Perlstein</name>
<email>alfred@FreeBSD.org</email>
</author>
<published>2004-07-12T08:14:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f257b7a54b4fe77840cf694314bdc401e00c31a1'/>
<id>urn:sha1:f257b7a54b4fe77840cf694314bdc401e00c31a1</id>
<content type='text'>
This is to allow filesystems to decide based on the passed thread
which vnode to return.
Several filesystems used curthread, they now use the passed thread.
</content>
</entry>
<entry>
<title>Update for the KDB framework:</title>
<updated>2004-07-10T21:21:55Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2004-07-10T21:21:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6d408d58d0e8509bc55ec79a37d780d6af3f9916'/>
<id>urn:sha1:6d408d58d0e8509bc55ec79a37d780d6af3f9916</id>
<content type='text'>
o  Make debugging code conditional upon KDB instead of DDB.
</content>
</entry>
<entry>
<title>When we traverse the vnodes on a mountpoint we need to look out for</title>
<updated>2004-07-04T08:52:35Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>2004-07-04T08:52:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e3c5a7a4dd0bc898f0fe87241eb4b8de8d5c4f24'/>
<id>urn:sha1:e3c5a7a4dd0bc898f0fe87241eb4b8de8d5c4f24</id>
<content type='text'>
our cached 'next vnode' being removed from this mountpoint.  If we
find that it was recycled, we restart our traversal from the start
of the list.

Code to do that is in all local disk filesystems (and a few other
places) and looks roughly like this:

		MNT_ILOCK(mp);
	loop:
		for (vp = TAILQ_FIRST(&amp;mp...);
		    (vp = nvp) != NULL;
		    nvp = TAILQ_NEXT(vp,...)) {
			if (vp-&gt;v_mount != mp)
				goto loop;
			MNT_IUNLOCK(mp);
			...
			MNT_ILOCK(mp);
		}
		MNT_IUNLOCK(mp);

The code which takes vnodes off a mountpoint looks like this:

	MNT_ILOCK(vp-&gt;v_mount);
	...
	TAILQ_REMOVE(&amp;vp-&gt;v_mount-&gt;mnt_nvnodelist, vp, v_nmntvnodes);
	...
	MNT_IUNLOCK(vp-&gt;v_mount);
	...
	vp-&gt;v_mount = something;

(Take a moment and try to spot the locking error before you read on.)

On a SMP system, one CPU could have removed nvp from our mountlist
but not yet gotten to assign a new value to vp-&gt;v_mount while another
CPU simultaneously get to the top of the traversal loop where it
finds that (vp-&gt;v_mount != mp) is not true despite the fact that
the vnode has indeed been removed from our mountpoint.

Fix:

Introduce the macro MNT_VNODE_FOREACH() to traverse the list of
vnodes on a mountpoint while taking into account that vnodes may
be removed from the list as we go.  This saves approx 65 lines of
duplicated code.

Split the insmntque() which potentially moves a vnode from one mount
point to another into delmntque() and insmntque() which does just
what the names say.

Fix delmntque() to set vp-&gt;v_mount to NULL while holding the
mountpoint lock.
</content>
</entry>
<entry>
<title>Fixed misformatting of code and breaking of a comment in previous commit.</title>
<updated>2004-06-20T03:36:31Z</updated>
<author>
<name>Bruce Evans</name>
<email>bde@FreeBSD.org</email>
</author>
<published>2004-06-20T03:36:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=82d8695afbbbc5a39a9fb96801940e11b05912b5'/>
<id>urn:sha1:82d8695afbbbc5a39a9fb96801940e11b05912b5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed misformatting in previous commit.</title>
<updated>2004-06-20T03:34:21Z</updated>
<author>
<name>Bruce Evans</name>
<email>bde@FreeBSD.org</email>
</author>
<published>2004-06-20T03:34:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=addc95fee3de00cbcaacb6ddfe75c3670f5556d6'/>
<id>urn:sha1:addc95fee3de00cbcaacb6ddfe75c3670f5556d6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do the dreaded s/dev_t/struct cdev */</title>
<updated>2004-06-16T09:47:26Z</updated>
<author>
<name>Poul-Henning Kamp</name>
<email>phk@FreeBSD.org</email>
</author>
<published>2004-06-16T09:47:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=89c9c53da05197f657dfe8e0bdda6941a2e9a0d4'/>
<id>urn:sha1:89c9c53da05197f657dfe8e0bdda6941a2e9a0d4</id>
<content type='text'>
Bump __FreeBSD_version accordingly.
</content>
</entry>
</feed>
