]> git.baikalelectronics.ru Git - kernel.git/commit
[GFS2] Allow local DF locks when holding a cached EX glock
authorSteven Whitehouse <swhiteho@redhat.com>
Mon, 7 Jul 2008 09:07:28 +0000 (10:07 +0100)
committerSteven Whitehouse <swhiteho@redhat.com>
Mon, 7 Jul 2008 09:07:28 +0000 (10:07 +0100)
commitacd399dc265076e0f36a20c02929510747e6fb17
tree22543b35c6b06d9a736c1c9af881ea7cf305d2bd
parent5fe8ae5700ca17b51c429000a94b39b387214cb1
[GFS2] Allow local DF locks when holding a cached EX glock

We already allow local SH locks while we hold a cached EX glock, so here
we allow DF locks as well. This works only because we rely on the VFS's
invalidation for locally cached data, and because if we hold an EX lock,
then we know that no other node can be caching data relating to this
file.

It dramatically speeds up initial writes to O_DIRECT files since we fall
back to buffered I/O for this and would otherwise bounce between DF and
EX modes on each and every write call. The lessons to be learned from
that are to ensure that (for the time being anyway) O_DIRECT files are
preallocated and that they are written to using reasonably large I/O
sizes. Even so this change fixes that corner case nicely

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/glock.c