Date: Sun, 25 May 2008 19:29:26 +0200 From: Roman Divacky <rdivacky@FreeBSD.org> To: Ulf Lilleengen <lulf@FreeBSD.org> Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/fs/fdescfs fdesc.h fdesc_vfsops.c fdesc_vnops.c Message-ID: <20080525172926.GA12033@freebsd.org> In-Reply-To: <200805241451.m4OEpU1r053111@repoman.freebsd.org> References: <200805241451.m4OEpU1r053111@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, May 24, 2008 at 02:51:30PM +0000, Ulf Lilleengen wrote:
> lulf 2008-05-24 14:51:30 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/fs/fdescfs fdesc.h fdesc_vfsops.c fdesc_vnops.c
> Log:
> - Add locking to all filesystem operations in fdescfs and flag it as MPSAFE.
> - Use proper synhronization primitives to protect the internal fdesc node cache
> used in fdescfs.
> - Properly initialize and uninitalize hash.
> - Remove unused functions.
>
> Since fdescfs might recurse on itself, adding proper locking to it needed some
> tricky workarounds in some parts to make it work. For instance, a descriptor in
> fdescfs could refer to an open descriptor to itself, thus forcing the thread to
> recurse on vnode locks. Because of this, other race conditions also had to be
> fixed.
>
> Tested by: pho
> Reviewed by: kib (mentor)
> Approved by: kib (mentor)
+ LIST_FOREACH(fd2, fc, fd_hash) {
+ if (fd == fd2) {
+ LIST_REMOVE(fd, fd_hash);
+ break;
+ }
+ }
shouldn't you use LIST_FOREACH_SAFE here?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080525172926.GA12033>
