On Sat, Nov 29, 2014 at 11:11 AM, hujianyang <hujianyang@xxxxxxxxxx> wrote: > Hi Miklos, > > Sorry for disturb you. I'm confused with *cursor* in struct > ovl_dir_file. I know this struct ovl_cache_entry *cursor* is > presented to indicate current pos when performing readdir at > a MERGE type directory. > > Why this additional entry is needed? Can't we use a pointer > to record which entry is read or is ready for reading? After > finish reading lower and upper directories, entries in struct > ovl_dir_cache is stabilized. Changing of directories will > cause the later .readdir() to create a new ovl_dir_cache but > the old cache will not be released until all the holders of > it call .release(). > > So I think a pointer points to an entry in the entry list of > ovl_dir_cache is enough to each process sharing the access > of the same cache. We don't need to keep and move an special > entry, *cursor*. That's my thought. Cursors are safe against removal of current entry. However, we don't do that here, AFAICS, so I think you are correct in that the cursor is not actually needed here. Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html