Hi,
On Sun, 19 Jul 2009 14:26:20 +0900, Jiro SEKIBA wrote:
> fix disorder of nilfs_write_super in nilfs_sync_fs.
> commiting super block must be the end of the function
> so that every chanages are reflected.
>
> Signed-off-by: Jiro SEKIBA <[email protected]>
> ---
> fs/nilfs2/super.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
> index 8e2ec43..ba69601 100644
> --- a/fs/nilfs2/super.c
> +++ b/fs/nilfs2/super.c
> @@ -388,11 +388,12 @@ static int nilfs_sync_fs(struct super_block *sb, int
> wait)
> {
> int err = 0;
>
> - nilfs_write_super(sb);
> -
> /* This function is called when super block should be written back */
> if (wait)
> err = nilfs_construct_segment(sb);
> +
> + nilfs_write_super(sb);
> +
I read callers of the sync_fs callback, and I felt that
nilfs_sync_fs() would rather call nilfs_commit_super() directly.
nilfs_write_super is written to handle periodic callback,
and it moderates frequency of actual write back.
Is sync_fs called periodically or frequently?
If neither was, I think it's only necessary to do:
down_write(&nilfs->ns_sem);
if (sb->s_dirt)
nilfs_commit_super(NILFS_SB(sb), 1);
up_write(&nilfs->ns_sem);
Note that ->sync_fs() is not called for read-only filesystems.
The recent migration of write_super into sync_fs made this
transformation possible.
Thanks,
Ryusuke Konishi
> return err;
> }
>
> --
> 1.5.6.5
>
> _______________________________________________
> users mailing list
> [email protected]
> https://www.nilfs.org/mailman/listinfo/users
_______________________________________________
users mailing list
[email protected]
https://www.nilfs.org/mailman/listinfo/users