]> git.ipfire.org Git - thirdparty/linux.git/commit - include/linux/fs.h
locks: add a new struct file_locking_context pointer to struct inode
authorJeff Layton <jlayton@primarydata.com>
Fri, 16 Jan 2015 20:05:54 +0000 (15:05 -0500)
committerJeff Layton <jlayton@primarydata.com>
Fri, 16 Jan 2015 20:05:54 +0000 (15:05 -0500)
commit4a075e39c86490cc0f0c10ac6abe3592d1689463
tree8da8633f9f717128c02a08ad15b7d9f067091acb
parentdd459bb1974c5e9cff3dfbf4f6fdb3e9363ef32e
locks: add a new struct file_locking_context pointer to struct inode

The current scheme of using the i_flock list is really difficult to
manage. There is also a legitimate desire for a per-inode spinlock to
manage these lists that isn't the i_lock.

Start conversion to a new scheme to eventually replace the old i_flock
list with a new "file_lock_context" object.

We start by adding a new i_flctx to struct inode. For now, it lives in
parallel with i_flock list, but will eventually replace it. The idea is
to allocate a structure to sit in that pointer and act as a locus for
all things file locking.

We allocate a file_lock_context for an inode when the first lock is
added to it, and it's only freed when the inode is freed. We use the
i_lock to protect the assignment, but afterward it should mostly be
accessed locklessly.

Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Acked-by: Christoph Hellwig <hch@lst.de>
fs/inode.c
fs/locks.c
include/linux/fs.h