reiser4: remove an assertion "nikita-2577" which is no longer possible to check.
PATCH 1/1 reiser4: remove an assertion "nikita-2577" which is no longer possible to check.
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.
---
Is this correct? I assume that adjust_dir_pos() is called simultaneously with iterate()... or not? 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(-)
fs/reiser4/plugin/file_ops_readdir.c +0 -2
@@ -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);
Signature · 1 line
1.9.2
Quoted 8 lines · Ivan Shapovalov
Since 3.11,
file->f_posis not up-to-date during aniterate()in progress. This was true forreaddir(), but is no longer so.Signed-off-by Ivan Shapovalov <[email protected]>---
Is this correct? I assume that
adjust_dir_pos()is called simultaneously withiterate()... 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.
Quoted 19 lines
If not, then passing '
dir->f_pos' toreiser4_get_dir_fpos()
will suffice.fs/reiser4/plugin/file_ops_readdir.c | 2 -- 1 file changed, 2 deletions(-)fs/reiser4/plugin/file_ops_readdir.c +0
-2@@ -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);
PATCH v2 1/1 reiser4: fix an assertion broken since 3.11.
reiser4_get_dir_fpos takes an extra argument. It should be safe to pass dir->f_pos (thus keeping the old behavior exactly).
---
OK, got it.
fs/reiser4/plugin/file_ops_readdir.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/reiser4/plugin/file_ops_readdir.c +2 -1
@@ -59,7 +59,8 @@ adjust_dir_pos(struct file *dir, struct readdir_pos *readdir_spot,* changes */ readdir_spot->entry_no += adj;assert ("nikita-2577" , -ergo (dir !=NULL ,reiser4_get_dir_fpos (dir) + adj >=0 )); +ergo (dir !=NULL ,reiser4_get_dir_fpos (dir, dir->f_pos) + 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);
Signature · 1 line
1.9.2