[Ocfs2-devel] [PATCH] ocfs2: llseek requires to ocfs2 inode lock for the file in SEEK_END

Andrew Morton akpm at linux-foundation.org
Wed Jun 26 18:25:36 PDT 2013


On Thu, 27 Jun 2013 09:19:52 +0800 shencanquan <shencanquan at huawei.com> wrote:

> On 2013/6/27 5:18, Andrew Morton wrote:
> 
> > 
> > My guess is that there is some other code path which is modifying
> > inode->i_size without holding inode->i_mutex, and while holding
> > ocfs2_inode_lock().  If so, that code is surely wrong - it should hold
> > i_mutex while modifying i_size.
> 
> 
> inode->i_mutex lock only protect the inode size on the same machine.

ah ;)

> > And all this is only really applicable to 32-bit CPUs, which you
> > probably aren't using.
> 
> I don't understand this.

The i_size_read/i_size_write infrastructure is designed to efficiently
handle the situation where a 32-bit machine reads a 64-bit number which
might be undergoing modification on another CPU.  We don't want the
reading CPU to see an invalid number when the writing CPU is in the
middle of modifying the two 32-bit words.




More information about the Ocfs2-devel mailing list