• Jeff Layton's avatar
    locks: add a new struct file_locking_context pointer to struct inode · 4a075e39
    Jeff Layton authored
    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: default avatarJeff Layton <jlayton@primarydata.com>
    Acked-by: default avatarChristoph Hellwig <hch@lst.de>
    4a075e39
locks.c 69 KB