From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-04.nifty.com (conssluserg-04.nifty.com [210.131.2.83]) by sourceware.org (Postfix) with ESMTPS id 0AFD43858D33 for ; Sat, 21 Jan 2023 12:32:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0AFD43858D33 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from HP-Z230 (aj135041.dynamic.ppp.asahi-net.or.jp [220.150.135.41]) (authenticated) by conssluserg-04.nifty.com with ESMTP id 30LCWFTb015740; Sat, 21 Jan 2023 21:32:15 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-04.nifty.com 30LCWFTb015740 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1674304335; bh=sKk9Xcf8TABbp0vrwD1YW33jJC0xZRLBclBtjmVca44=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=qtPkwfKqku9sXloREDnSWAdWHLMPVzK628XlsN04OGq0xxKm7uBdihhpXfpf3FoSD +dP+6wU4OYfw9Qpgn4h2DQGBnb4Kso76cPQsAGGdMBdShCugVGqQvLXdTHMM11Vooz Eo23rC/In9xVWMFXjX11hlfCbKaXH2xGrBNCZgTtThBMFkM6r9ff9WIvnFdPEY0N6Z psomDLymDk/eGPvmbciAHKoHD4YQAPO2Uk0ruZZMYeJt5OwxKQGbs9Mxye44yIp9fl dmsM5dHsLfEqzbckWR6texCTDgttYjDPFwBBqveHas/TlsTpZbS6OSTIQFAcyBLVdC ZWfd/qKTQGO+Q== X-Nifty-SrcIP: [220.150.135.41] Date: Sat, 21 Jan 2023 21:32:15 +0900 From: Takashi Yano To: cygwin@cygwin.com Cc: Yano Ray Subject: Re: fsync() cause "Invalid Argument" for block device. Message-Id: <20230121213215.280c07fee9c8377220db25d4@nifty.ne.jp> In-Reply-To: References: X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Sat, 21 Jan 2023 05:57:35 +0000 Yano Ray wrote: > Hi, > I tried to format a partition using mkfs.ext4 (e2fsprogs) but it failed with an error. > > $ /usr/sbin/mkfs.ext4 /dev/sde1 > mke2fs 1.44.5 (15-Dec-2018) > Creating filesystem with 16384 1k blocks and 4096 inodes > Filesystem UUID: fb09cfbf-9f2a-4874-82f7-26c7cb853093 > Superblock backups stored on blocks: > 8193 > > Allocating group tables: done > Writing inode tables: done > Creating journal (1024 blocks): done > Writing superblocks and filesystem accounting information: mkfs.ext4: Invalid argument while writing out and closing file system > $ > > This also seems to happen with mkfs.minix (linux-utils). > > $ /sbin/mkfs.minix /dev/sde1 > 5472 inodes > 16384 blocks > Firstdatazone=176 (176) > Zonesize=1024 > Maxsize=268966912 > > mkfs.minix: write failed: Invalid argument > $ > > I think it's because fsync is not implemented (causes InvalidArgument) for block devices. > Why fsync is not implemented for block devices? > > /* test code */ > #include > #include > #include > #include > #include > > int main(int argc, char** argv) { > int fd; > > if (argc != 2) { > puts("./program [file]"); > return -1; > } > > fd = open(argv[1], O_RDWR); > printf("open: %s\n", strerror(errno)); > if (errno) return -1; > > fsync(fd); > printf("fsync: %s\n", strerror(errno)); > if (errno) return -1; > } > > on Cygwin: > $ ./a.exe /dev/sde > open: No error > fsync: Invalid argument > $ ./a.exe /dev/sde1 > open: No error > fsync: Invalid argument > $ uname -a > CYGWIN_NT-10.0-22621 DESKTOP-5H6F7L3 3.4.5-1.x86_64 2023-01-19 19:09 UTC x86_64 Cygwin > $ > > expected behaviour (on Arch Linux): > $ sudo ./a.out /dev/sda > $ sudo ./a.out /dev/sda > open: Success > fsync: Success > $ sudo ./a.out /dev/sda1 > open: Success > fsync: Success > $ uname -a > Linux arch 6.0.11-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 02 Dec 2022 17:25:31 +0000 x86_64 GNU/Linux > $ Thanks for the report. I looked into this problem and found this causes after the commit: commit af8a7c13b516c77c1e6092157e23ca26db44b1af Author: Takashi Yano Date: Sat Mar 12 06:19:53 2022 +0900 Cygwin: fsync: Return EINVAL for special files. - Unlike linux, fsync() calls FlushFileBuffers() even for special files. This causes the problem reported in: https://cygwin.com/pipermail/cygwin/2022-March/251022.html This patch fixes the issue. I will submit a patch for this issue. -- Takashi Yano