On Tue, Aug 12, 2008 at 07:22:40PM +0100, Al Viro wrote:FWIW, how about that sequence: Patch 1: Turn all filldir(...) < 0 into filldir() != 0 in ->readdir() instances, no changes other than that. Everything should keep working as-is. Patch 2: Make fillonedir() return 1 on the second call; make filldir() et.al. return 1 instead of -EINVAL if we have ->previous != NULL. Again, should be no breakage. Patch 3: switch ->readdir() to your "return anything non-null we got from callback". AFAICS, main callers will see no breakage, but in any case we have few enough of those to adjust them as needed first. Patch 4: get rid of ->error and its ilk; adjust callers in obvious ways (e.g. sys_gtedents() would bail out on negative from vfs_readdir() as it does now and treat 0 and 1 in the same way - put_user() ? -EFAULT : <how much did we copy). Callers can be taken care one by one. Again, no breakage and everything's bisectable. Patch 5 (maybe): #define READDIR_MORE INT_MAX Have ->readdir() instances that decide to stop once they'd done several filldir calls return it if there's still more left. Have vfs_readdir() loop calling ->readdir() as long as it gets READDIR_MORE. Get rid of weird loops in callers. I'm not sure that the last one is needed - we might be better off just by making the such instances loop themselves. In any case, loops in callers (nfsd, etc.) are begging for trouble... --
| Andy Whitcroft | clam |
| Jon Smirl | Re: 463 kernel developers missing! |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Linus Torvalds | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Jarek Poplawski | Re: HTB accuracy for high speed |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
