From patchwork Mon Dec 10 12:05:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Semashev X-Patchwork-Id: 11361 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id C0D6144CB2C for ; Mon, 10 Dec 2018 14:12:55 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1D46868AB66; Mon, 10 Dec 2018 14:12:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8828768AB6B for ; Mon, 10 Dec 2018 14:12:40 +0200 (EET) Received: by mail-lj1-f193.google.com with SMTP id c19-v6so9385089lja.5 for ; Mon, 10 Dec 2018 04:12:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qhenZfzT3lRzzGfUONGe6vxAO3OisOjzVLIdNp3ECWk=; b=FxkrOgsiCOTV/UdOymvhrfGx8n6jMmnJfk/yJcakYxcxVVahONfmZ9eAY/AlSzAfSy MhQ7TXlC7gd8Xqg+3ysQNO/BULuaT8YO6gJCWtpt4k3EEGnzKTxOdplK2VVDa4LeTZfJ sJk0gL7DYSqH+GBRe9a5lLZq9CD6nWYFlfWl+urNSoN8PWo+4b9uGVLGS0TPQdWbdhEt JRrbGH9Ocav0jNNdTxsqgbKXH+ZJ2k8fdnyn2eAnqAZSRJobziVO1nK/wbTssXHo/WES UA1FqGLT8nRnsClGBENmYkh707pWDv7w9F3AjoVVz2Nprnk1bkMeY3os17OQDjNQ018T vGHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qhenZfzT3lRzzGfUONGe6vxAO3OisOjzVLIdNp3ECWk=; b=hrgnMbxwpXHoWDCykjaD8MOgUihEXQawuTwJzYXusHh//qjWuAQ71sUjZgf2tXAiQX U3NHhfeVlUDUfMoi509ugUq/FvtkZtlYRrur97su7v7qcBs57m8VxSHsAtdtpzhlebde QrjWmp7tNAFL0bAY5QrlYECWU8KvzN59GWitRdqsv5k/8c4gcTdQnsIx9GFM6vgijlV1 NFSoHQg3Cr543aiiuXTQ8tNyYukSF+tO8mDICKqegCtblClVsNZlOcWL0XpRd1GysOGf DkTA+AEBrDpflRvXxo33Fa8gBPnwenimxLxAlZqgqHku+exj58utuCueDRTEuZaQCoCB Bf0g== X-Gm-Message-State: AA+aEWakGa753A2voukh6W1/JZmlyX9r/WPeDwVBmygIBIl64ngVNHOk OD5dFdb4vybVIB3vjFZtXG/KDJPb X-Google-Smtp-Source: AFSGD/Xct0SnwtVmNoLG+kn53vzZze1f0ACmqygE6KWiCP8xlSBQKlVlBIY9hGP5S2Rp8WxWCXVhzA== X-Received: by 2002:a2e:9a16:: with SMTP id o22-v6mr7019445lji.112.1544443566226; Mon, 10 Dec 2018 04:06:06 -0800 (PST) Received: from localhost.localdomain (broadband-37-110-31-10.ip.moscow.rt.ru. [37.110.31.10]) by smtp.gmail.com with ESMTPSA id h85-v6sm2133577ljf.68.2018.12.10.04.06.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 04:06:05 -0800 (PST) From: Andrey Semashev To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Dec 2018 15:05:50 +0300 Message-Id: <20181210120549.17179-2-andrey.semashev@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181210120549.17179-1-andrey.semashev@gmail.com> References: <20181210120549.17179-1-andrey.semashev@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/2] lavf/file: Add support for file syncing. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andrey Semashev Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit adds support for IO synchronization API to the file backend. --- libavformat/file.c | 11 +++++++++++ libavformat/os_support.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/libavformat/file.c b/libavformat/file.c index 1d321c4205..58fd55b928 100644 --- a/libavformat/file.c +++ b/libavformat/file.c @@ -254,6 +254,16 @@ static int64_t file_seek(URLContext *h, int64_t pos, int whence) return ret < 0 ? AVERROR(errno) : ret; } +static int file_sync(URLContext *h) +{ + if (h->flags & AVIO_FLAG_WRITE) { + FileContext *c = h->priv_data; + if (fsync(c->fd) < 0) + return AVERROR(errno); + } + return 0; +} + static int file_close(URLContext *h) { FileContext *c = h->priv_data; @@ -353,6 +363,7 @@ const URLProtocol ff_file_protocol = { .url_close = file_close, .url_get_file_handle = file_get_handle, .url_check = file_check, + .url_sync = file_sync, .url_delete = file_delete, .url_move = file_move, .priv_data_size = sizeof(FileContext), diff --git a/libavformat/os_support.h b/libavformat/os_support.h index 7a56dc9a7c..1864763cb1 100644 --- a/libavformat/os_support.h +++ b/libavformat/os_support.h @@ -93,6 +93,8 @@ static inline int is_dos_path(const char *path) #ifndef S_IWUSR #define S_IWUSR S_IWRITE #endif + +#define fsync(fd) _commit((fd)) #endif #if CONFIG_NETWORK