Messages in this thread | | | Date | Thu, 26 Feb 1998 23:48:28 GMT | From | "Stephen C. Tweedie" <> | Subject | Re: VFS 64-bit clean |
| |
Hi,
On Wed, 25 Feb 1998 22:37:48 +0200, Itai Nahshon <nahshon@actcom.co.il> said:
> What does Posix say about directory operations if the directory is > changed (telldir, seekdir and readdir)? It will be difficult to > guarantee > any kind of consistency.
Nope --- we can store any context we need to do sequential scans in the struct file internally to the kernel, and seekdir/telldir are not part of POSIX so they needn't be a problem.
> Even if posix does not require anything, a program that reads a > directory must be able to resynchronize to the next directory entry if > the directory was modified beneath it.
Yes, and all that is required there is for the kernel to track an open directory file object correctly --- the "cursor" used by the kernel to keep the current pointer need not be made visible to the user, so this is purely an implementation detail. For example, we could store (by reference) the last dirent given to the user in the struct file, which is sufficient to allow us to resume the search reliably at any point. We can also store hint information (such as a sequence number and btree index block) to optimise the common case where the btree nodes have not changed from one readdir() to the next.
As for seekdir/telldir, if we do want to provide minimal compatibility then I'd be happy to make telldir() return 0 every time, and make seekdir() always seek back to the start of the directory. I imagine that will cater for the vast majority of uses of these functions.
Cheers, Stephen.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |