[Devel] [PATCH] ploop: force journal commit after dio_post_submit
Maxim Patlasov
mpatlasov at virtuozzo.com
Thu Apr 28 13:07:08 PDT 2016
Dima,
Just to let me understand the patch better, can you please give a
call-path for "forcing transaction commit" in ordinary ext4 life-cycle
(without ploop) when it handles O_DIRECT write(2) to an uninitialized
extent?
Thanks,
Maxim
On 04/27/2016 07:42 AM, Dmitry Monakhov wrote:
> Once we converted extent to initialized it can be part of uncompleted
> journal transaction, so we have to force transaction commit at some point.
> The easiest way to do it is to perform unconditional fsync.
> https://jira.sw.ru/browse/PSBM-45326
>
> TODO: This case and others can be optimized by deferring fsync.But this is
> subject of another patch.
>
> Signed-off-by: Dmitry Monakhov <dmonakhov at openvz.org>
> ---
> drivers/block/ploop/io_direct.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c
> index 8032999..5a2e12a 100644
> --- a/drivers/block/ploop/io_direct.c
> +++ b/drivers/block/ploop/io_direct.c
> @@ -523,6 +523,8 @@ dio_post_submit(struct ploop_io *io, struct ploop_request * preq)
> err = io->files.file->f_op->fallocate(io->files.file,
> FALLOC_FL_CONVERT_UNWRITTEN,
> (loff_t)sec << 9, clu_siz);
> + if (!err)
> + err = io->files.file->f_op->FOP_FSYNC(io->files.file, 0);
> file_end_write(io->files.file);
> if (err) {
> PLOOP_REQ_SET_ERROR(preq, err);
More information about the Devel
mailing list