Location within a directory in reiser4 is logical number of entry within
the directory.
Yes, I know. It does not absolutely correctly handle the way when
dirents were deleted before and after the saved position.
Well, Nikita kindly answered my questions in IRC (unfortunately there
are few Namesys people there).
According to him, seekdir() doesn't have to work correctly if the
previous N direntries were deleted (it only tries). Indeed, even
classical FSes (where directory is a file with the plain list of
direntries) may shrink directories. I thought Reiser4 pretends to work
correctly even in case of deletions.
fs/reiser4/plugin/dir/dir.c:seek_dir()
You may also want to read a comment before
fs/reiser4/plugin/dir/dir.c:readdir_common and comment named "STATELESS
READDIR" in the fs/reiser4/plugin/dir/dir.c.
Yes, I read it of course. It is really confusing. What it should mention
is that
we can not return entry key to telldir, on seekdir we have to be able to
position within a directory by off_t - therefore, we need adjust_dir_pos
anyway.
Yes, thanks, I've realized this as well.
Could you please explain the real difference between
SEEKABLE_HASHED_DIR_PLUGIN_ID and LAST_DIR_ID plugins. Both seems to
support seeks. Both seems to call adjust_dir_pos(). Only key assignment
is simpler in case of SEEKABLE_HASHED_DIR_PLUGIN_ID. This confused me
very much.
Thanks.
--
Best Regards,
Artem B. Bityuckiy,
St.-Petersburg, Russia.