Commit 8206cac5 authored by Andrew Morton's avatar Andrew Morton Committed by james toy

add some commentary

Cc: <stable@kernel.org>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 95ba293c
...@@ -695,12 +695,13 @@ void unlock_new_inode(struct inode *inode) ...@@ -695,12 +695,13 @@ void unlock_new_inode(struct inode *inode)
} }
#endif #endif
/* /*
* This is special! We do not need the spinlock * This is special! We do not need the spinlock when clearing I_LOCK,
* when clearing I_LOCK, because we're guaranteed * because we're guaranteed that nobody else tries to do anything about
* that nobody else tries to do anything about the * the state of the inode when it is locked, as we just created it (so
* state of the inode when it is locked, as we * there can be no old holders that haven't tested I_LOCK).
* just created it (so there can be no old holders * However we must emit the memory barrier so that other CPUs reliably
* that haven't tested I_LOCK). * see the clearing of I_LOCK after the other inode initialisation has
* completed.
*/ */
smp_mb(); smp_mb();
WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW)); WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment