[Gluster-devel] DHT NULL pointer usage

Xavier Hernandez xhernandez at datalab.es
Mon Nov 17 17:36:44 UTC 2014


What seems to be happening:

The interesting part of quota.t contains:

16: TEST ! dd if=/dev/urandom of=$M0/test/file1.txt bs=1024k count=12
17: TEST rm $M0/test/file1.txt
18: EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0Bytes" usage "/test"
19: TEST dd if=/dev/urandom of=$M0/test/file2.txt bs=1024k count=8

at this point, the volume is configured with a quota of 10MB, so the 
test 16 should fail.

ec xlator receives the create and many write fops. At some point, fops 
start returning EDQUOT, but many other write requests are still being 
processed. Somehow seems that the control returns to the user before all 
write request complete (there seems to be an FSYNC request, but it never 
reaches ec). The user deletes the file on the next test (17). This 
causes that some of the pending writes return ENOENT (not sure why 
because the inode should not have been deleted).

The ENOENT error causes a segmentation fault on DHT. This segmentation 
fault is asynchronous and coincides with the test 19, but it's not the 
responsible of the failure.

A message appears on the console (probably when dd finishes and closes 
the file):

perfused: perfuse_node_inactive: perfuse_node_fsync failed error = 69: 
Resource temporarily unavailable

Note that errno 69 is EDQUOT on NetBSD. Not sure what does mean or if 
it's important.

I'm not sure what is happening here, and why some write requests keep 
floating after the command that launched them has finished (dd). 
Probably it's an ec bug, but I don't see where.

If anyone has any clue, it will be appreciated. Otherwise I'll look 
deeper into it tomorrow.

Xavi

On 11/17/2014 05:18 PM, Emmanuel Dreyfus wrote:
> On Mon, Nov 17, 2014 at 05:08:18PM +0100, Xavier Hernandez wrote:
>> Ok. Let me know login credentials and I'll try to see what's happening.
>
> ssh jenkins at nbslave70.cloud.gluster.org with usual password
> then become root using su and:
> cd /autobuild/glusterfs && ./run-tests.sh -f ./tests/basic/ec/quota.t
>
> While there you can also give a try to ./tests/basic/ec/self-heal.t
> which also has a failure.
>


More information about the Gluster-devel mailing list