On Mon, Sep 13, 2004 at 03:06:37PM +0100, Joe Orton wrote:
> Hi, we had a bug report that Apache httpd logs a spurious error for
> every file served from a reiser4 filesystem, because httpd assumes that
> /path/to/file/.htaccess (where /path/to/file is a normal file) returns
> ENOENT or ENOTDIR, but reiser4 returns EACCES in this case.
> 
> Can someone explain the justification behind reiser4's behaviour? 
> httpd's assumption does not seem unreasonable, and EACCES seems to make
> little sense for this error case.

It is because open(name, O_DIRECTORY) is successful for regular files in
reiser4.  Once it succedes, Apache2 thinks that is a directory and tries to
open .htaccess under it.  It does not matter what error code is receives there,
the problem is that apache2 has decided that the file is a directory.

There are two solutions:

1) mount reiser4 partition with "nopseudo" mount option.  it makes /metas/* files
unaccessible.

2) apply the patch:

===== fs/namei.c 1.104 vs edited =====
--- 1.104/fs/namei.c    Tue Aug 10 16:59:38 2004
+++ edited/fs/namei.c   Sun Sep 12 11:00:18 2004
@@ -816,7 +816,7 @@
                        break;
                if (lookup_flags & LOOKUP_DIRECTORY) {
                        err = -ENOTDIR; 
-                       if (!inode->i_op || !inode->i_op->lookup)
+                       if (!S_ISDIR(inode->i_mode))
                                break;
                }
                goto return_base;
===============================

> Regards,
> 
> joe

-- 
Alex.

Reply via email to