• Dave Kleikamp's avatar
    Rework JFS's inode locking · 1c706086
    Dave Kleikamp authored
    In order for JFS to be able to quiesce the current activity, while
    blocking new transactions, the locking needed some rework.  New
    transactions are stopped in the functions txBegin or txBeginAnon,
    where the rdwrlock (IREAD_LOCK/IWRITE_LOCK) may be held.  Dirty
    inodes may need to be committed while new transactions are blocked
    here, so another lock is introduced (commit_sem) which is taken after
    txBegin/txBeginAnon is called.  This ensures that the proper
    serialization takes place, without the write_inode method needing to
    grab the rdwrlock.
    
    In addition, the use of IWRITE_LOCK and IREAD_LOCK has been removed
    from directory inodes.  The serialization done by the VFS using i_sem
    is sufficient to avoid races.
    
    This patch removes JFS's dependency on down_write_trylock.
    1c706086
jfs_lock.h 1.51 KB