Dear developers,

Here is the bug in autofs3 module which causing so much pain. It simply stopped me from adding much more interesting features to Autodir http://www.intraperson.com/autodir/

Taken from Linux kernel 2.4 autofs module source.

file:            root.c
function:    autofs_root_lookup.
protocol:    3

/*
* If this dentry is unhashed, then we shouldn't honour this
* lookup even if the dentry is positive. Returning ENOENT here
* doesn't do the right thing for all system calls, but it should
* be OK for the operations we permit from an autofs.
*/


/*
if ( dentry->d_inode && d_unhashed(dentry) )
return ERR_PTR(-ENOENT);
*/


       if ( dentry->d_inode && d_unhashed(dentry) ) {
               printk( "ENOENT for %s\n", dentry->d_name.name );
               return ERR_PTR(-ENOENT);
       }

I added printk to easily trace it. To my surprise autofs 4 also has similar code.

Because of this, user space test program reporting like this:

fail : /test/t944 : No such file or directory
fail : /test/t4187 : No such file or directory
fail : /test/t100 : No such file or directory
fail : /test/t806 : No such file or directory
fail : /test/t3451 : No such file or directory
fail : /test/t1790 : No such file or directory
fail : /test/t3555 : No such file or directory
fail : /test/t3098 : No such file or directory
fail : /test/t4085 : No such file or directory
fail : /test/t3935 : No such file or directory

with corresponding kernel messages are,

ENOENT for t944
ENOENT for t4187
ENOENT for t100
ENOENT for t806
ENOENT for t3451
ENOENT for t1790
ENOENT for t3555
ENOENT for t3098
ENOENT for t4085
ENOENT for t3935

The error rate as taken from months of stress tests -- ie ENOENT; is around 0.002% and increases as system load increases. Even at this rate I do not think it is acceptable in production systems.

Thanks in advance.

Regards
ramana

--
http://www.intraperson.com


_______________________________________________ autofs mailing list [email protected] http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to