[Buildroot] [PATCH 1/1] package/apache: atomic creation of pid file.
Thomas Petazzoni
thomas.petazzoni at bootlin.com
Sat Sep 21 21:14:15 UTC 2019
On Fri, 20 Sep 2019 15:04:36 +0000
Nicolas Carrier <nicolas.carrier at orolia.com> wrote:
> The original pattern for creating the pid file was:
> open_create(pid_file)
> write(pid_file, pid)
> close(pid_file)
>
> But if a power outage occurs between open_create and write, the file will
> be empty and httpd will refuse to start afterwards unless the corrupt pid
> file is removed.
>
> This patch uses the pattern:
> open_create(temp_pid_file)
> write(temp_pid_file)
> close(temp_pid_file)
> rename(temp_pid_file, pid_file)
> which is guaranteed to be atomic, provided that temp_pid_file and pid_file
> are located in the same file system, which this patch does by creating
> a temporary file name with the pattern:
> pid_file_name + random_suffix
>
> This patch has been submitted upstream, but did receive no answer at all:
> https://bz.apache.org/bugzilla/show_bug.cgi?id=63140
>
> Signed-off-by: Nicolas Carrier <nicolas.carrier at orolia.com>
We're not really fond of having patches like this that haven't been
reviewed/blessed by upstream. But I see you submitted since months ago
and got no feedback.
> ---
> package/apache/0003-corrupt-pid-file.patch | 51 ++++++++++++++++++++++
> 1 file changed, 51 insertions(+)
> create mode 100644 package/apache/0003-corrupt-pid-file.patch
>
> diff --git a/package/apache/0003-corrupt-pid-file.patch b/package/apache/0003-corrupt-pid-file.patch
> new file mode 100644
> index 0000000000..8208bc1ce5
> --- /dev/null
> +++ b/package/apache/0003-corrupt-pid-file.patch
> @@ -0,0 +1,51 @@
In any case, we need a description + Signed-off-by line in the patch
itself, and since Apache is available in a Git repo
(https://github.com/apache/httpd), we want the patch to be generated by
git format-patch.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the buildroot
mailing list