[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <94ee7fda-68d8-4720-b95c-10783f2e51a5@salutedevices.com>
Date: Tue, 9 Jul 2024 19:18:01 +0300
From: George Stark <gnstark@...utedevices.com>
To: Christoph Hellwig <hch@...radead.org>
CC: <linux-kernel@...r.kernel.org>, <kernel@...utedevices.com>
Subject: Re: [PATCH 1/1] initrd: use O_SYNC flag while opening /dev/ram for
write
Hello Christoph
Thanks for the review
On 7/9/24 09:03, Christoph Hellwig wrote:
> On Mon, Jul 08, 2024 at 11:09:23PM +0300, George Stark wrote:
>> initrd image is written to the /dev/ram block device using filp_open(),
>> kernel_write()
>
> First question: why are you using the legacy initrd and not initramfs?
I was playing around with initrd to have ability to mount initrd fs from
disk after switching to main root and use files from it. We can't mount
initramfs image. In embedded system mounting vs extracting makes a
difference due to resource limitations. In the end we dropped that idea
partly because of initrd is marked as deprecated.
But since it has been deprecated since 2020 and it's still there I
thought may be it was used by someone so this patch was worth publishing.
If initrd really counts its last days then this patch can be thrown away.
>
>> . After fput() /dev/ram is mounted and may fail due to not
>> all data is actually written to the device yet. The mount error remains
>> hidden due to MS_SILENT flag usage and mount_root_generic has retries.
>> So use O_SYNC flag to have all data written to /dev/ram before mounting.
>
> O_SYNC is highly inefficient. If you have a valid reason to care about
> a corner case in the hopefully soon to be remvoved legacy initrd code,
> the right way to do this is a single fdatasync after the writes have
> finished.
Ok.
--
Best regards
George
Powered by blists - more mailing lists