[Ocfs2-devel] [PATCH] ocfs2: llseek need to inode cluster lock and unlock for update the inode size in SEEK_END.

shencanquan shencanquan at huawei.com
Mon Jun 17 18:03:46 PDT 2013


On 2013/6/18 1:02, Mark Fasheh wrote:

> On Mon, Jun 17, 2013 at 11:17:49PM +0800, Jeff Liu wrote:
>> Please add spaces between comments and annotation, i.e,
>> 	   /*  Need to ...... */
> 
> yes, please describe while we're taking the lock here (describing the race
> you're talking about would be fine).
> 
> 
>>> +        ret = ocfs2_inode_lock(inode, NULL, 0);
>>> +        if (ret < 0) {
>>> +            mlog_errno(ret);
>>> +            goto out;
>>> +        }
>>> +        ocfs2_inode_unlock(inode, 0);
>>>           offset += inode->i_size;
>>
>> Why not protect the offset adjustment insides ocfs2 inode locks?
> 
> If we're going through the trouble of locking we *need* to put the offset
> calculation inside the lock otherwise we can still get stale i_size and
> basically haven't fixed anything.
> 
> 
> Btw, do you feel that this could impact performance for other workloads that
> ocfs2 usually does?


I think it maybe impact performance. because it use the cluster lock and
it maybe flush the inode cache to disk and read the inode from disk. but
I think the correct function of llseek is more important.


> 	--Mark
> 
> --
> Mark Fasheh
> 
> 






More information about the Ocfs2-devel mailing list