Hello,
I noticed following in ext4_readdir() and in other file systems..
filldir returns error in "error":
error = filldir(dirent, de->name, ...)
But function itself returns "ret"
What I can see is that when filldir fails, ext4_readir quits, but with
no error....
while (!error && !stored && filp->f_pos < inode->i_size) {
Is it by design or an error?
- Dmitry
Hello,
On Mon 24-09-12 15:47:24, Kasatkin, Dmitry wrote:
> I noticed following in ext4_readdir() and in other file systems..
>
> filldir returns error in "error":
> error = filldir(dirent, de->name, ...)
>
> But function itself returns "ret"
>
> What I can see is that when filldir fails, ext4_readir quits, but with
> no error....
> while (!error && !stored && filp->f_pos < inode->i_size) {
>
>
> Is it by design or an error?
It works as designed (although I agree that the design is a bit odd).
Note that filler functions also set dirent->error which is then used by
e.g. getdents() syscall to set return value.
Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR