On 05/06/2014 01:59 AM, Ivan Shapovalov wrote:
Since 3.11, file->f_pos is not up-to-date during an iterate() in progress. This was true for readdir(), but is no longer so. Signed-off-by: Ivan Shapovalov <intelfx100@xxxxxxxxx> --- Is this correct? I assume that adjust_dir_pos() is called simultaneously with iterate()... or not?
adjust_dir_pos() is a work around seekdir/telldir API, and has nothing with iterate(), see the comment before reiser4_iterate_common(). So, I think, it is incorrect, and dir->f_pos is perfectly valid.
If not, then passing 'dir->f_pos' to reiser4_get_dir_fpos() will suffice. fs/reiser4/plugin/file_ops_readdir.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/reiser4/plugin/file_ops_readdir.c b/fs/reiser4/plugin/file_ops_readdir.c index 0da5ac5..f53573c 100644 --- a/fs/reiser4/plugin/file_ops_readdir.c +++ b/fs/reiser4/plugin/file_ops_readdir.c @@ -58,8 +58,6 @@ adjust_dir_pos(struct file *dir, struct readdir_pos *readdir_spot, /* logical number of directory entry readdir is "looking" at * changes */ readdir_spot->entry_no += adj; - assert("nikita-2577", - ergo(dir != NULL, reiser4_get_dir_fpos(dir) + adj >= 0)); if (de_id_cmp(&pos->dir_entry_key, &mod_point->dir_entry_key) == EQUAL_TO) { assert("nikita-2575", mod_point->pos < pos->pos);
-- To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html