All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Jackson <iwj@xenproject.org>
To: Manuel Bouyer <bouyer@antioche.eu.org>
Cc: "Roger Pau Monné" <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 05/24] Introduce locking functions for block device setup on NetBSD
Date: Wed, 20 Jan 2021 15:13:22 +0000	[thread overview]
Message-ID: <24584.18578.623201.789017@mariner.uk.xensource.com> (raw)
In-Reply-To: <20210104102037.GA2005@antioche.eu.org>

Manuel Bouyer writes ("Re: [PATCH 05/24] Introduce locking functions for block device setup on NetBSD"):
> On Tue, Dec 29, 2020 at 12:29:09PM +0100, Roger Pau Monné wrote:
> > I think you want tot CC the tools dev on this one, specially Ian who
> > knows how the Linux one is implemented and can likely give valuable
> > input.
...
> > Seeing the file itself, I don't think there's any NetBSD specific
> > stuff, so we might want to consider putting it in BSD/ instead, so it
> > can be used by FreeBSD also?
> 
> I'm not sure if FreeBSD needs the locking stuff.
> Also, there are certainly differences in block device handling between
> FreeBSD and NetBSD. Both OSes have diverged in this area.

I think most operating systems will want some kind of locking here.

I loooked at the code in the new tools/hotplug/NetBSD/locking.sh.
Unfortunately this area is complex and the available APIs and tools
are awkard, and the field is troubled by broken "traditional"
approaches involving O_EXCL or the moral equivalent, which cannot be
made reliable (if you think reliability implies never being broken due
to stale lock).

I doubt that the code in this patch is correct.  It uses shlock(1)
which is based on link(2) and kill(2) and so on, which I think is
basically an O_EXCL-based approach as I discuss above.  (I don't have
a formal proof of this contention.)  The presence of an invocation of
the "trap" shell builtin in the new NetBSD script is a bad sign - a
reliable locking protocol would need that.

I see from https://man.netbsd.org that NetBSD has flock(1) and
stat(1).  I think this means we could reuse the code in
tools/hotplug/Linux/locking.sh.  Maybe it will need to be lightly
adapted, to NetBSD's flock(1) and stat(1).  Perhaps via some kind of
substitution to avoid all the clone-and-hack.

Regards,
Ian.


  reply	other threads:[~2021-01-20 15:13 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-14 16:35 [PATCH 00/24] NetBSD fixes Manuel Bouyer
2020-12-14 16:36 ` [PATCH 01/24] Fix lock directory path for NetBSD Manuel Bouyer
2020-12-14 16:36 ` [PATCH 02/24] NetBSD doens't need xenbackendd with xl toolstack Manuel Bouyer
2020-12-29 11:17   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 03/24] Fix lock directory path for NetBSD Manuel Bouyer
2020-12-14 16:36 ` [PATCH 04/24] Make xg_main.c build on NetBSD Manuel Bouyer
2020-12-29 11:24   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 05/24] Introduce locking functions for block device setup " Manuel Bouyer
2020-12-29 11:29   ` Roger Pau Monné
2021-01-04 10:20     ` Manuel Bouyer
2021-01-20 15:13       ` Ian Jackson [this message]
2021-01-20 15:59         ` Manuel Bouyer
2021-01-20 16:12           ` Ian Jackson
2021-01-20 16:59             ` Manuel Bouyer
2021-01-20 17:03               ` Ian Jackson
2021-01-20 17:19               ` Ian Jackson
2020-12-14 16:36 ` [PATCH 06/24] Handle the case where vifname is not present in xenstore Manuel Bouyer
2020-12-29 11:43   ` Roger Pau Monné
2021-01-04 10:22     ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 07/24] Remove NetBSD's system headers. We'll use the system-provided ones, which are up to date Manuel Bouyer
2020-12-29 11:46   ` Roger Pau Monné
2021-01-04 10:25     ` Manuel Bouyer
2021-01-04 17:09       ` Roger Pau Monné
2021-01-04 17:20         ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 08/24] Make libs/call build on NetBSD Manuel Bouyer
2020-12-29 11:49   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 09/24] Use xen/xenio.h " Manuel Bouyer
2020-12-14 16:36 ` [PATCH 10/24] Make libs/evtchn build " Manuel Bouyer
2020-12-29 11:52   ` Roger Pau Monné
2021-01-04 10:26     ` Manuel Bouyer
2021-01-04 17:15       ` Roger Pau Monné
2021-01-10 12:22         ` Manuel Bouyer
2021-01-11 17:22           ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 11/24] Implement foreignmemory " Manuel Bouyer
2020-12-29 12:46   ` Roger Pau Monné
2021-01-04 11:30     ` Manuel Bouyer
2021-01-04 18:24       ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 12/24] Implement gnttab " Manuel Bouyer
2020-12-29 11:16   ` Roger Pau Monné
2021-01-04 10:29     ` Manuel Bouyer
2021-01-04 17:24       ` Roger Pau Monné
2021-01-10 12:40         ` Manuel Bouyer
2021-01-11 17:04           ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 13/24] Don't assume tv_sec is a unsigned long (for NetBSD) Manuel Bouyer
2020-12-29 14:02   ` Roger Pau Monné
2021-01-04 10:31     ` Manuel Bouyer
2021-01-04 18:17       ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 14/24] Pass bridge name to qemu and set XEN_DOMAIN_ID Manuel Bouyer
2020-12-15  8:44   ` Manuel Bouyer
2020-12-29 15:19   ` Roger Pau Monné
2021-01-04 10:36     ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 15/24] Make libs/light build on NetBSD Manuel Bouyer
2020-12-29 14:15   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 16/24] Switch NetBSD to QEMU_XEN (!traditional) Manuel Bouyer
2020-12-29 14:19   ` Roger Pau Monné
2021-01-04 10:47     ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 17/24] Make libs/light build on NetBSD Manuel Bouyer
2020-12-29 14:28   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 18/24] xeneventchn_stubs.c doens't need xen/sys/evtchn.h (NetBSD fix) Manuel Bouyer
2020-12-29 14:30   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 19/24] errno may not be a gobal R/W variable, use a local variable instead (fix build on NetBSD) Manuel Bouyer
2020-12-29 14:38   ` Roger Pau Monné
2021-01-04 10:56     ` Manuel Bouyer
2021-01-04 13:30       ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 20/24] If FILENAME_MAX is defined, use it instead of arbitrary value (fix format-truncation errors with GCC >= 7) Manuel Bouyer
2020-12-29 14:51   ` Roger Pau Monné
2021-01-04 11:03     ` Manuel Bouyer
2020-12-14 16:36 ` [PATCH 21/24] Fix unused functions/variables error Manuel Bouyer
2020-12-14 16:36 ` [PATCH 22/24] If PTHREAD_STACK_MIN is not defined, use DEFAULT_THREAD_STACKSIZE Manuel Bouyer
2020-12-29 14:57   ` Roger Pau Monné
2020-12-14 16:36 ` [PATCH 23/24] Use xen/xenio.h on NetBSD Manuel Bouyer
2020-12-14 16:36 ` [PATCH 24/24] Fix error: array subscript has type 'char' [-Werror=char-subscripts] Manuel Bouyer
2020-12-29 15:23 ` [PATCH 00/24] NetBSD fixes Roger Pau Monné

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=24584.18578.623201.789017@mariner.uk.xensource.com \
    --to=iwj@xenproject.org \
    --cc=bouyer@antioche.eu.org \
    --cc=roger.pau@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.