[PATCH 0/1] xfs: xfs_inactive fails to cleanup symlinks with attributes

Mark Tinguely tinguely at sgi.com
Thu Jun 6 16:29:01 CDT 2013


On 06/06/13 16:13, Dave Chinner wrote:
> On Thu, Jun 06, 2013 at 02:17:15PM -0500, Mark Tinguely wrote:
>> On 06/06/13 11:10, Mark Tinguely wrote:
>>> Found this bug testing extended attributes.
>>>
>>> # make a big symbolic link that is in the inode core and mostly fills it.
>>> # CRC enabled filesystem will use a 68 byte smaller link in the test.
>>>
>>> ln -s 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/0123456/a a
>>>
>>> # the extended attribute will bump the symbolic link to a remote extent
>>> # I think only one of these attribute is needed, but they are so fun...
>>> attr  -Rs 1234567890ad a<   /dev/null
>>> attr  -Rs 1234567890ae a<   /dev/null
>>> attr  -Rs 1234567890af a<   /dev/null
>>>
>>
>> oops. the following steps are also needed - I took them out because I
>> thought they were unecessary:
>>
>> # remove the attributes:
>> attr  -Rr 1234567890ad a
>> attr  -Rr 1234567890ae a
>> attr  -Rr 1234567890af a
>>
>> now we will assert
>
> I cannot reproduce this on a current TOT kernel with or without
> CRCs:
>
> # mkfs.xfs -f /dev/vdb
> meta-data=/dev/vdb               isize=256    agcount=4, agsize=720896 blks
>           =                       sectsz=512   attr=2, projid32bit=1
>           =                       crc=0
> data     =                       bsize=4096   blocks=2883584, imaxpct=25
>           =                       sunit=0      swidth=0 blks
> naming   =version 2              bsize=4096   ascii-ci=0
> log      =internal log           bsize=4096   blocks=2560, version=2
>           =                       sectsz=512   sunit=0 blks, lazy-count=1
> realtime =none                   extsz=4096   blocks=0, rtextents=0
> # mount /dev/vdb /mnt/scratch/
> # cd /mnt/scratch/
> # ln -s 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/0123456/a a
> # attr  -Rs 1234567890ad a<   /dev/null
> Attribute "1234567890ad" set to a 0 byte value for a:
>
> # attr  -Rs 1234567890ae a<   /dev/null
> Attribute "1234567890ae" set to a 0 byte value for a:
>
> # attr  -Rs 1234567890af a<   /dev/null
> Attribute "1234567890af" set to a 0 byte value for a:
>
> # attr  -Rr 1234567890ad a
> # attr  -Rr 1234567890ae a
> # attr  -Rr 1234567890af a
> # sync
> # cd ~
> # umount /mnt/scratch
> #
>
> No assert. Can you write an xfstest that reproduces the problem and
> post the patch?
>
> Cheers,
>
> Dave.

Yes, these instructions are for a *256* byte inode with top of tree code.

A 512 byte inode will need a bigger link. The link must nearly fill the 
literal area. Patch has been supplied:

   http://oss.sgi.com/archives/xfs/2013-06/msg00110.html

--Mark.



More information about the xfs mailing list