getdents64 problem in 2.6.23

David Woodhouse dwmw2 at infradead.org
Fri Oct 26 19:17:40 EDT 2007


On Sat, 2007-10-27 at 01:03 +0200, Joakim Tjernlund wrote:
> Is this what you mean(just a stupid hack for now)?
>           //*prev = this->next;
>             jffs2_mark_node_obsolete(c, (this->raw));
>             this->raw = NULL;
>           //jffs2_free_full_dirent(this);

Yeah, something like that. And we also need to modify
jffs2_add_fd_to_list() so that if we later add a new dirent which
_replaces_ this one, it doesn't oops after calling
jffs2_mark_node_obsolete(c, fd->raw);

> Perhaps add a jffs2_add_fd_to_list(c, this, &dir_f->dents)?

Nah, no need for that. It's already _in_ the list.

> How do I find where the filedescriptor is closed?

We probably need to implement a release() operation in the
jffs2_dir_operations (top of dir.c), which will remove the fake
'deletion' dirents if !atomic_read(&inode->i_count). Or something like
that.

-- 
dwmw2




More information about the linux-mtd mailing list