Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/kern



On Tue Aug 17 2010 at 13:17:48 +0000, Juergen Hannken-Illjes wrote:
> Module Name:  src
> Committed By: hannken
> Date:         Tue Aug 17 13:17:48 UTC 2010
> 
> Modified Files:
>       src/sys/kern: vfs_subr.c
> 
> Log Message:
> Now that ffs on disk inodes get freed in the reclaim routine it is no longer
> necessary for vget() to handle VI_INACTNOW as a special case.  Remove this
> check and its support in vrelel().

Hi,

I didn't fully review your changes, so just to make sure: it's still
possible to gain a reference during inactive, right?

> Getting another reference while the freelist is locked is an error.  Replace
> the check with a KASSERT.
> 

>       vp->v_freelisthd = NULL;
>       mutex_exit(&vnode_free_list_lock);
>  
> -     if (vp->v_usecount != 0) {
> -             /*
> -              * was referenced again before we got the interlock
> -              * Don't return to freelist - the holder of the last
> -              * reference will destroy it.
> -              */
> -             mutex_exit(&vp->v_interlock);
> -             mutex_enter(&vnode_free_list_lock);
> -             goto retry;
> -     }
> +     KASSERT(vp->v_usecount == 0);

It's not obvious from your commit message what prevents it from gaining
a reference after the lock is dropped.


Home | Main Index | Thread Index | Old Index