[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 17:57:39 PDT 2013
On 2013/6/17 23:17, Jeff Liu wrote:
> On 06/17/2013 10:48 PM, shencanquan wrote:
>
>> We found that llseek has a bug when in SEEK_END. it need to add the
>> inode lock and unlock.
>> This bug can be reproduce the following scenario:
>> On one nodeA, open the file and then write some data to file and close
>> the file .
>> On another nodeB , open the file and llseek the end of file . the
>> position of file is old.
>
> Can you please wrap these around 72 columns or so in the future?
> Also, that would be appreciated if you can supply more detailed
> info to reflect the results before/after applying this patch.
>
Thanks for your comments.
>>
>> Signed-off-by: jensen <shencanquan at huawei.com>
>> ---
>> file.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/file.c b/file.c
>> index ff54014..4ee7c80 100644
>> --- a/file.c
>> +++ b/file.c
>> @@ -2626,6 +2626,13 @@ static loff_t ocfs2_file_llseek(struct file
>> *file, loff_t offset, int whence)
>> case SEEK_SET:
>> break;
>> case SEEK_END:
>> + /*need to inode lock and unlock for update the inode size.*/
>
> Please add spaces between comments and annotation, i.e,
> /* Need to ...... */
>
>> + 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?
yes. it need to protect the offset adjustment.
>
>> break;
>> case SEEK_CUR:
>
> Looks your email client has not configured properly for posting patches
> because all those changes are not using tab for code indentation, please
> refer to Documentation/email-clients.txt for detail if so.
Thanks you. I will see the document .
>
> -Jeff
>
>
More information about the Ocfs2-devel
mailing list