[Ocfs2-devel] [PATCH 0/2] ocfs2: two bug fixes about xattr and inline-data

tristan.ye tristan.ye at oracle.com
Sun Mar 8 23:14:30 PDT 2009


On Mon, 2009-03-09 at 13:42 +0800, Tao Ma wrote:
> 
> 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 still can not reproduce this bug with your testing step on joel's
cacheme branch, maybe it is a regression bug on mainline kernel, tiger,
how did you think about it?


> 
> 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