On Tue, 19 Dec 2000, Russell Cattelan wrote:
> Marcelo Tosatti wrote:
> > Hi,
> > I was looking at the pagebuf code while I noted that
> > set_buffer_dirty_uptodate (pagebuf/page_buf_io.c:1188) may sleep waiting
> > for bdflush to clean some dirty buffers because it calls balance_dirty().
> > set_buffer_dirty_update is called by functions which are part of the XFS's
> > writepage codepath, which basically starts at linvfs_write_full_page
> > (xfs/linux/xfs_iops.c).
> > The issue is that linvfs_write_full_page() is taking a vnode lock before
> > going through this codepath, meaning that it can sleep waiting for bdflush
> > while holding this lock which seems to be unecessary.
> > If this "vnode lock" suffers from contention because processes sleep while
> > holding it, we can fix it by calling balance_dirty() _after_ we drop the
> > vnode lock.
> > In practice, this vnode lock is a being used concurrently by a lot of
> > users?
> > Thanks!
> Sorry I haven't gotten back to you...
> I haven't had a chance to look this over, but yes this might be a problem.
> Have you been able to demonstrate this problem?
I was just reading XFS code and noticed the potential problem.
Dont you people have lockmeter output's of filesystem benchmarks on the
That may give us a hint.