[Ocfs2-devel] [PATCH 0/2] ocfs2: two bug fixes about xattr and inline-data
Tao Ma
tao.ma at oracle.com
Sun Mar 8 22:42:48 PDT 2009
tristan.ye wrote:
> On Mon, 2009-03-09 at 12:57 +0800, Tao Ma wrote:
>> Hi tristan,
>> the first bug should happen when you create a directory with acl. So do
>> you have the test case for that?
>
> Yes, I can add this.
>> The second one should happen when you try to try to the inline file and
>> then you will lose the xattr entry you set.
>
> Actually, I've had similar testcase, and it never failed to me, that
> means a previously set xattr entry which has reserved 256 bytes in inode
> never be affected or overwriten by the following inline-data writing
> attempt when i_size > MAX_INLINE_SIZE - 256.
Just go through the code and guess ;) the process should be:
1. fill in some inline data.
2. set entry
3. write i_size > MAX_INLINE_SIZE - 256.
I guess your case miss step 1.
Tiger,
Can bug 2 reproduced by my guess steps?
Regards,
Tao
>
>
> Regards,
> Tristan
>
>
>
>
>> Regards,
>> Tao
>>
>> tristan.ye wrote:
>>> On Wed, 2009-03-04 at 18:36 -0800, Joel Becker wrote:
>>>> On Wed, Mar 04, 2009 at 11:18:19AM +0800, Tiger Yang wrote:
>>>>> I found two serious bugs about xattr and inline-data.
>>>> Tristan,
>>>> Can you add tests for this in the xattr suite? Thanks!
>>> Of course, I'll be looking back to my testcases, and add these if
>>> missed.
>>>
>>> Actually, I've already had inline-data&inline-xattr combination tests in
>>> xattr testing suite, how can I misse such boundary cases?
>>>
>>> Tiger,
>>>
>>> Thanks for posting the cases:)
>>>
>>> Regards,
>>> Tristan
>>>
>>>
>>>
>>>> Joel
>>>>
>>>>> the first bug:
>>>>> in ocfs2_mknod(), we check and found the ACL or security xattr entry
>>>>> could be set into inode in ocfs2_calc_xattr_init(), then don't reserve
>>>>> block for them. But in ocfs2_mknod_locked(), if we found ocfs2 support
>>>>> inline-data, then set id_count with the max_inline_data. After that, we
>>>>> set acl/security xattr entry in ocfs2_init_acl() or
>>>>> ocfs2_init_security_set(), but in there we found inode is full, then
>>>>> panic at ocfs2_claim_metadata in ocfs2_xattr_block_set.
>>>>>
>>>>> the second bug:
>>>>> we don't check inline xattr in ocfs2_try_to_write_inline_data(), so the
>>>>> inline data may overwrite the xattr entries which have already in inode.
>>>>>
>>>>>
>>>>> thanks,
>>>>> tiger
>>>
>>> _______________________________________________
>>> Ocfs2-devel mailing list
>>> Ocfs2-devel at oss.oracle.com
>>> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
>
More information about the Ocfs2-devel
mailing list