tech-kern archive

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

Re: VOP_GETATTR: locking protocol change proposal



On Tue, Nov 15, 2011 at 03:44:34AM +0000, YAMAMOTO Takashi wrote:
> hi,
> 
> > The vnode locking requirement currently allows to call VOP_GETATTR()
> > on an unlocked vnode.  This is orthogonal to all other operations that
> > read data or metadata and want at least a shared lock.  It also asks
> > for trouble as the attributes may change while the operation is in
> > progress.
> > 
> > With the attached diff the locking protocol requests at least a shared
> > lock and all calls to VOP_GETATTR() outside of file systems respect it.
> > 
> > The calls from file systems need review (NFS server is suspicious at least).
> > 
> > I will commit this diff around Oct 14 if noone objects.
> 
> postgresql assumes instant lseek(SEEK_END) to get the size of
> their heap files.
> 
>       http://rhaas.blogspot.com/2011/11/linux-lseek-scalability.html
> 
> as fsync etc keeps the vnode lock during i/o, it might cause severe
> performance regression.
> 
> YAMAMOTO Takashi

Something worse than lock contention must be happening in linux.
Since fstat() - which will also need the inode lock - was faster
than lseek().

I'd have thought that code run with the mutex held would be much
shorter than the rest of the code path - unless the application
is hard-looping on the lseek().

        David

-- 
David Laight: david%l8s.co.uk@localhost


Home | Main Index | Thread Index | Old Index