vfs-scale, keep the errno
When open(2) without O_DIRECTORY opens an existing dir, it should return EISDIR. In do_last(), the variable 'error' is initialized EISDIR, but it is changed by d_revalidate() which returns any positive to represent 'the target dir is valid.'
Should we keep and return the initialized 'error' in this case.
J. R. Okajima
fs/namei.c +6 -3
@@ -2102,17 +2118,20 @@ static struct file *do_last(struct nameidata *nd, struct path *path,struct file *filp;int error = -EISDIR ;switch (nd->last_type) {case LAST_DOTDOT :follow_dotdot (nd); dir = nd->path.dentry;case LAST_DOT :if (need_reval_dot (dir)) { - error =d_revalidate (nd->path.dentry, nd); -if (!error) +int e; + e =d_revalidate (nd->path.dentry, nd); +if (!e) error = -ESTALE ; -if (error <0 ) +if (e <0 ) { + error = e; goto exit; + } }/* fallthrough */ case LAST_ROOT :
Quoted 6 lines · J. R. Okajima
When open(2) without
O_DIRECTORYopens an existing dir, it should return EISDIR. Indo_last(), the variable 'error' is initialized EISDIR, but it is changed byd_revalidate()which returns any positive to represent 'the target dir is valid.'
Should we keep and return the initialized 'error' in this case.
Great, thank you very much. I just changed a few variable names but applied it. Would you please add you Signed-off-by: on patches from now on?
Good reviewing work. Are you finding these by review or testing? I think ltptests on an nfs mount should find this kind of bug... which I should do.
Thanks,
Nick
Nick Piggin:
Quoted 3 lines
Great, thank you very much. I just changed a few variable names but applied it. Would you please add you Signed-off-by: on patches from now on?
Yes, of course.
I am just not confident, and guessed you may take another approach.
Quoted 3 lines
Good reviewing work. Are you finding these by review or testing? I think ltptests on an nfs mount should find this kind of bug... which I should do.
First, review. And then modify/test the filesystem which I am developing (FS_REVAL_DOT is used).
Some of my mails are from the reviewing and modifying phase. I am in my testing phase. Someday my fs ->d_revalidate will be gone, I hope.
Anyway your vfs-scale work is great which you definetly spent big time and effort I believe.
J. R. Okajima
Quoted 1 line · On Friday 14 January 2011, 05:01:37 Nick Piggin wrote:
On Fri, Jan 14, 2011 at 2:38 PM, J. R. Okajima <[email protected]>
Quoted 6 lines · wrote:
Quoted 5 lines
When open(2) without
O_DIRECTORYopens an existing dir, it should return EISDIR. Indo_last(), the variable 'error' is initialized EISDIR, but it is changed byd_revalidate()which returns any positive to represent 'the target dir is valid.'
Should we keep and return the initialized 'error' in this case.
Quoted 7 lines
Great, thank you very much. I just changed a few variable names but applied it. Would you please add you Signed-off-by: on patches from now on?
Good reviewing work. Are you finding these by review or testing? I think ltptests on an nfs mount should find this kind of bug... which I should do.
Nick, Junjiro is well known as a very smart (and|but) humble guy in the kernel niche of layered filesystems. Be assured, that almost every live distribution (one, that is runnable from RO media directly) _relies_ on his work: aufs (http://aufs.sourceforge.net/) to get the job done. Also many diskless setups (as do mine) relies on aufs.
It's a real pity, that all other approaches to layered filesystems (or filesystem unification, overlay filesystems), that are done by others, are either
- technically inferior
- restricted in usage scenarios
- simply unfinished
but get more attention in the kernel guild. All, that Junjiro's approach takes is exporting a handful of symbols in order to be able to build it as a module also (and the number decreases as other lately merged subsystems do need them as well, i.e. apparmor). That's all.
Layered filesystems are a killer feature, that could have been in the kernel for years, but is still missing for hard to follow (e.g. political, emotional) reasons. There are many interesting things, that can be done with layered filesystems, hard to archive up to impossible to be done otherwise).
Sadly,
Pete
Quoted 13 lines · Hans-Peter Jansen
Quoted 1 line · On Friday 14 January 2011, 05:01:37 Nick Piggin wrote:
On Fri, Jan 14, 2011 at 2:38 PM, J. R. Okajima <[email protected]>
Quoted 10 lines · wrote:
Quoted 5 lines
When open(2) without
O_DIRECTORYopens an existing dir, it should return EISDIR. Indo_last(), the variable 'error' is initialized EISDIR, but it is changed byd_revalidate()which returns any positive to represent 'the target dir is valid.'
Should we keep and return the initialized 'error' in this case.Great, thank you very much. I just changed a few variable names but applied it. Would you please add you Signed-off-by: on patches from now on?
Quoted 5 lines
Quoted 3 lines
Good reviewing work. Are you finding these by review or testing? I think ltptests on an nfs mount should find this kind of bug... which I should do.
Nick, Junjiro is well known as a very smart (and|but) humble guy in the
I agree, based on the thoughtful review comments and patches :)
Thanks,
Nick