We don't support host file systems without fsync fop. The patch refuses to start ploop if fsync is absent.
Signed-off-by: Maxim Patlasov <mpatla...@virtuozzo.com> --- drivers/block/ploop/io_direct.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/drivers/block/ploop/io_direct.c b/drivers/block/ploop/io_direct.c index 583b110..a37f296 100644 --- a/drivers/block/ploop/io_direct.c +++ b/drivers/block/ploop/io_direct.c @@ -376,7 +376,6 @@ cached_submit(struct ploop_io *io, iblock_t iblk, struct ploop_request * preq, loff_t new_size; loff_t used_pos; bool may_fallocate = io->files.file->f_op->fallocate && - io->files.file->f_op->fsync && io->files.flags & EXT4_EXTENTS_FL; trace_cached_submit(preq); @@ -815,10 +814,8 @@ static int dio_fsync_thread(void * data) /* filemap_fdatawrite() has been made already */ filemap_fdatawait(io->files.mapping); - err = 0; - if (io->files.file->f_op->fsync) - err = io->files.file->f_op->fsync(io->files.file, 0, - LLONG_MAX, 0); + err = io->files.file->f_op->fsync(io->files.file, 0, + LLONG_MAX, 0); /* Do we need to invalidate page cache? Not really, * because we use it only to create full new pages, @@ -1386,12 +1383,11 @@ static int dio_alloc_sync(struct ploop_io * io, loff_t pos, loff_t len) if (err) goto fail; - if (io->files.file->f_op && io->files.file->f_op->fsync) { - err = io->files.file->f_op->fsync(io->files.file, 0, - LLONG_MAX, 0); - if (err) - goto fail; - } + err = io->files.file->f_op->fsync(io->files.file, 0, + LLONG_MAX, 0); + if (err) + goto fail; + err = filemap_fdatawait(io->files.mapping); fail: @@ -1878,6 +1874,11 @@ static int dio_autodetect(struct ploop_io * io) return -1; } + if (!file->f_op->fsync) { + printk("Cannot run on EXT4(%s): no fsync\n", s_id); + return -1; + } + fs = get_fs(); set_fs(KERNEL_DS); flags = 0; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel