Skip site navigation (1)Skip section navigation (2)
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>