Date: Sun, 25 May 2008 20:15:25 +0200 From: Hartmut Brandt <hartmut.brandt@dlr.de> To: Roman Divacky <rdivacky@FreeBSD.org> Cc: cvs-src@FreeBSD.org, Ulf Lilleengen <lulf@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: <4839ACBD.9010706@dlr.de> In-Reply-To: <20080525172926.GA12033@freebsd.org> References: <200805241451.m4OEpU1r053111@repoman.freebsd.org> <20080525172926.GA12033@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Roman Divacky wrote: > 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? Only of you continue going through the list. harti
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4839ACBD.9010706>