xfs
[Top] [All Lists]

Re: set_buffer_dirty_uptodate

To: Marcelo Tosatti <marcelo@xxxxxxxxxxxxxxxx>
Subject: Re: set_buffer_dirty_uptodate
From: Russell Cattelan <cattelan@xxxxxxxxxxx>
Date: Tue, 19 Dec 2000 18:16:31 -0600
Cc: linux-xfs@xxxxxxxxxxx
References: <Pine.LNX.4.21.0012172303250.856-100000@xxxxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
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?


--
Russell Cattelan
cattelan@xxxxxxxxxxx




<Prev in Thread] Current Thread [Next in Thread>