From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A2BB36B054; Mon, 23 Feb 2026 23:43:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771890203; cv=none; b=WXmFR+2UNcbLTtqooer9kKK9GoWEd0los9wMX6V3kHvKNB2o3yEJ2oe5KhEVVZk6omqxAN91v5pl0Ac7fAT9gVGuX4NEm6P64QzaMYsfVOENJE4gwQiJav6FczM7U+ysWumA+8cY7f4y8v9IVrkHJe0bv6YqxFT5UYanAifJdmU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771890203; c=relaxed/simple; bh=PwISGcD74LGtisq2JPGhebPVoV7t7tWQqeQ95xpupPw=; h=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=P6sQFaWQLEd2KG4wD9H7lwxMpBg3SJXui2Fs8diVqAkonHreEyrSHW3xbNcq2S2aaA7yn0MsH/TDAYfOwMI+rgz2NWWvSIaO/CkCcp/N1itv8B+mf34Kjy2zf6VoyNazuL4F1jZ7XWHqzSF3mIQw9visrupEkB2Qq7X4CqxesOU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FaTHxCpl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FaTHxCpl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6183C116C6; Mon, 23 Feb 2026 23:43:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1771890202; bh=PwISGcD74LGtisq2JPGhebPVoV7t7tWQqeQ95xpupPw=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=FaTHxCplPYVcTijsOSRdzthcrjThXjpW2GtT3lDv+zcN0hfi0QtcHdrhzGHWXeplM qe26UBjqUHESI3Q68wC5b+oNnhs3fY2gpDdkkqJ2kS5sLbmzUdxzyoxyO1Suyj5vcA VYZaW9Xv2PAvLM026TAb0L2Vx8iIiVJLjLH9mLnB+WWSCxsqR/TdiUll72wq6Y+xbI l98BxyH00hnd/kIpoI0DUyLJ7C9CnSTQlQRq5//WxMkDLTCDHz4mIG7+DvFKMsHQ8x 1CACWtQ3a/wS8q1dB0WVCUjdcYecOzCo7C5WsmdYRvfwC36krApdFxl+uTij4eq9cY 4ENphopK5YM6A== Date: Mon, 23 Feb 2026 15:43:22 -0800 Subject: [PATCH 08/10] fuse2fs: enable syncfs From: "Darrick J. Wong" To: tytso@mit.edu Cc: bpf@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, miklos@szeredi.hu, bernd@bsbernd.com, joannelkoong@gmail.com, neal@gompa.dev Message-ID: <177188745324.3944028.5382330800711547077.stgit@frogsfrogsfrogs> In-Reply-To: <177188745140.3944028.16289511572192714858.stgit@frogsfrogsfrogs> References: <177188745140.3944028.16289511572192714858.stgit@frogsfrogsfrogs> Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit From: Darrick J. Wong Enable syncfs calls in fuse2fs. Signed-off-by: "Darrick J. Wong" --- fuse4fs/fuse4fs.c | 32 ++++++++++++++++++++++++++++++++ misc/fuse2fs.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/fuse4fs/fuse4fs.c b/fuse4fs/fuse4fs.c index 6cda267ad5cf40..3d48eb79948ad3 100644 --- a/fuse4fs/fuse4fs.c +++ b/fuse4fs/fuse4fs.c @@ -6284,7 +6284,38 @@ static void op_shutdownfs(fuse_req_t req, fuse_ino_t ino, uint64_t flags) int ret; ret = ioctl_shutdown(ff, ctxt, NULL, NULL, 0); + fuse_reply_err(req, -ret); +} +static void op_syncfs(fuse_req_t req, fuse_ino_t ino) +{ + struct fuse4fs *ff = fuse4fs_get(req); + ext2_filsys fs; + errcode_t err; + int ret = 0; + + FUSE4FS_CHECK_CONTEXT(req); + fs = fuse4fs_start(ff); + + if (ff->opstate == F4OP_WRITABLE) { + if (fs->super->s_error_count) + fs->super->s_state |= EXT2_ERROR_FS; + ext2fs_mark_super_dirty(fs); + err = ext2fs_set_gdt_csum(fs); + if (err) { + ret = translate_error(fs, 0, err); + goto out_unlock; + } + + err = ext2fs_flush2(fs, 0); + if (err) { + ret = translate_error(fs, 0, err); + goto out_unlock; + } + } + +out_unlock: + fuse4fs_finish(ff, ret); fuse_reply_err(req, -ret); } #endif @@ -7588,6 +7619,7 @@ static struct fuse_lowlevel_ops fs_ops = { .freezefs = op_freezefs, .unfreezefs = op_unfreezefs, .shutdownfs = op_shutdownfs, + .syncfs = op_syncfs, #endif #ifdef HAVE_FUSE_IOMAP .iomap_begin = op_iomap_begin, diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index b11ffec3603bf9..f7c759ed86c7fb 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -5842,6 +5842,39 @@ static int op_shutdownfs(const char *path, uint64_t flags) return ioctl_shutdown(ff, NULL, NULL); } + +static int op_syncfs(const char *path) +{ + struct fuse2fs *ff = fuse2fs_get(); + ext2_filsys fs; + errcode_t err; + int ret = 0; + + FUSE2FS_CHECK_CONTEXT(ff); + dbg_printf(ff, "%s: path=%s\n", __func__, path); + fs = fuse2fs_start(ff); + + if (ff->opstate == F2OP_WRITABLE) { + if (fs->super->s_error_count) + fs->super->s_state |= EXT2_ERROR_FS; + ext2fs_mark_super_dirty(fs); + err = ext2fs_set_gdt_csum(fs); + if (err) { + ret = translate_error(fs, 0, err); + goto out_unlock; + } + + err = ext2fs_flush2(fs, 0); + if (err) { + ret = translate_error(fs, 0, err); + goto out_unlock; + } + } + +out_unlock: + fuse2fs_finish(ff, ret); + return ret; +} #endif #ifdef HAVE_FUSE_IOMAP @@ -7131,6 +7164,7 @@ static struct fuse_operations fs_ops = { .freezefs = op_freezefs, .unfreezefs = op_unfreezefs, .shutdownfs = op_shutdownfs, + .syncfs = op_syncfs, #endif #ifdef HAVE_FUSE_IOMAP .iomap_begin = op_iomap_begin,