xfs
[Top] [All Lists]

Re: [PATCH 1/2] xfs: don't serialise direct IO reads on page cache check

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 1/2] xfs: don't serialise direct IO reads on page cache checks
From: Alex Elder <aelder@xxxxxxx>
Date: Thu, 11 Aug 2011 15:09:14 -0500
Cc: <xfs@xxxxxxxxxxx>
In-reply-to: <1312785628-10561-2-git-send-email-david@xxxxxxxxxxxxx>
References: <1312785628-10561-1-git-send-email-david@xxxxxxxxxxxxx> <1312785628-10561-2-git-send-email-david@xxxxxxxxxxxxx>
Reply-to: <aelder@xxxxxxx>
On Mon, 2011-08-08 at 16:40 +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> There is no need to grab the i_mutex of the IO lock in exclusive
> mode if we don't need to invalidate the page cache. Taking these
> locks on every direct IO effective serialises them as taking the IO
> lock in exclusive mode has to wait for all shared holders to drop
> the lock. That only happens when IO is complete, so effective it
> prevents dispatch of concurrent direct IO reads to the same inode.
> 
> Fix this by taking the IO lock shared to check the page cache state,
> and only then drop it and take the IO lock exclusively if there is
> work to be done. Hence for the normal direct IO case, no exclusive
> locking will occur.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> Tested-by: Joern Engel <joern@xxxxxxxxx>

Looks good.

Reviewed-by: Alex Elder <aelder@xxxxxxx>

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