[Ocfs2-devel] [PATCH] ocfs2: using i_size_read() to access i_size

Jeff Liu jeff.liu at oracle.com
Fri Jul 19 01:03:44 PDT 2013


Hi Junxiao,

On 07/19/2013 03:38 PM, Junxiao Bi wrote:

> Hi Jeff,
> 
> On 07/17/2013 07:13 AM, Jeff Liu wrote:
>>>> diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
>>>>>> index 3ce6a8b..7158710 100644
>>>>>> --- a/fs/ocfs2/file.c
>>>>>> +++ b/fs/ocfs2/file.c
>>>>>> @@ -2650,7 +2650,7 @@ static loff_t ocfs2_file_llseek(struct file *file, loff_t offset, int whence)
>> We have the inode mutex around ocfs2_file_llseek(), and that is too extensive
>> to block the concurrent access for particular seek operations.  At least,
>> we can get rid of this lock for SEEK_SET/SEEK_CUR. i.e,  In either case,
>> we can fall through generic_file_llseek() directly without the mutex lock.
> Think about this again, I think we can't remove the mutex, as it is used
> to protect other inode member beside i_size, like
> inode->i_sb->s_maxbytes which is accessed in all SEEK request and also
> more in ocfs2_inode_lock().

Thanks for digging into this.  s_maxbytes is a numeric constant which is
calculated out at OCFS2 mount with filling up the super blocks, IOWs, it
does not need any lock protection IMO.

Besides that, could you please pointed me out anything am missed?

Thanks,
-Jeff

> 
> Thanks,
> Junxiao.
>>
>>>>>>  	case SEEK_SET:
>>>>>>  		break;
>>>>>>  	case SEEK_END:
>>>>>> -		offset += inode->i_size;
>>>>>> +		offset += i_size_read(inode);
> 





More information about the Ocfs2-devel mailing list