On Sun, Sep 15, 2019 at 10:58:50AM -0700, Linus Torvalds wrote: > On Sun, Sep 15, 2019 at 9:02 AM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > > > Could be done, AFAICS. I'm not even sure we need a flag per se - we > > have two cases when the damn thing is not in the list and "before > > everything" case doesn't really need to be distinguished from post-EOF > > one. > > Agreed, it looks like we could just look at f_pos and use that > (together with whether we have a cursor or not) as the flag: > > - no cursor: f_pos < 2 means beginning, otherwise EOF > > - otherwise: cursor points to position FWIW, #next.dcache has the straight conversion to hlist. It definitely wants at least nfsd, er... misconception dealt with, though: list_head or hlist, this static void nfsdfs_remove_files(struct dentry *root) { struct dentry *dentry; struct hlist_node *n; hlist_for_each_entry_safe(dentry, n, &root->d_children, d_sibling) { if (!simple_positive(dentry)) { WARN_ON_ONCE(1); /* I think this can't happen? */ continue; } nfsdfs_remove_file(d_inode(root), dentry); } } is wrong, for obvious reasons (have the victim directory opened before that gets called and watch the fireworks)... No "take cursors out of the list" parts yet.