Christoph Hellwig 474fce0675 xfs: replace i_flock with a sleeping bitlock
We almost never block on i_flock, the exception is synchronous inode
flushing.  Instead of bloating the inode with a 16/24-byte completion
that we abuse as a semaphore just implement it as a bitlock that uses
a bit waitqueue for the rare sleeping path.  This primarily is a
tradeoff between a much smaller inode and a faster non-blocking
path vs faster wakeups, and we are much better off with the former.

A small downside is that we will lose lockdep checking for i_flock, but
given that it's always taken inside the ilock that should be acceptable.

Note that for example the inode writeback locking is implemented in a
very similar way.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
2012-01-17 15:06:45 -06:00
..
2011-08-12 16:21:35 -05:00
2011-09-15 15:08:18 +02:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-07-25 15:03:13 -05:00
2011-10-11 21:15:01 -05:00
2012-01-13 12:11:45 -06:00
2011-10-11 21:15:07 -05:00
2011-07-25 15:03:13 -05:00
2011-11-08 10:48:23 -06:00
2011-07-25 15:03:13 -05:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-07-13 13:43:48 +02:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-12-15 14:38:30 -06:00
2011-12-15 14:38:30 -06:00
2011-03-07 10:09:35 +11:00
2011-08-12 16:21:35 -05:00
2011-11-08 10:48:23 -06:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2012-01-03 22:55:00 -05:00
2012-01-03 22:55:00 -05:00
2012-01-03 22:52:40 -05:00
2011-08-12 16:21:35 -05:00
2012-01-03 22:52:40 -05:00
2011-08-12 16:21:35 -05:00
2010-12-16 16:05:51 -06:00
2012-01-13 12:11:45 -06:00
2011-08-12 16:21:35 -05:00
2011-04-28 13:18:04 -05:00
2011-10-11 21:15:11 -05:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:11 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-12-16 15:33:30 -06:00
2011-12-12 16:41:44 -06:00
2011-08-12 16:21:35 -05:00
2011-12-15 14:38:30 -06:00
2011-08-12 16:21:35 -05:00
2011-10-11 21:15:10 -05:00
2011-10-11 21:15:10 -05:00
2011-07-25 15:03:13 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-04-28 13:18:04 -05:00
2012-01-03 22:55:00 -05:00
2012-01-03 22:55:00 -05:00
2011-08-12 16:21:35 -05:00
2012-01-13 12:11:45 -06:00
2012-01-03 22:55:00 -05:00
2011-08-12 16:21:35 -05:00