All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: Will Cohen <wwcohen@gmail.com>,
	Laurent Vivier <lvivier@redhat.com>,
	Thomas Huth <thuth@redhat.com>, Greg Kurz <groug@kaod.org>,
	hi@alyssa.is, Michael Roitzsch <reactorcontrol@icloud.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Keno Fischer <keno@juliacomputing.com>
Subject: Re: [PATCH v3 04/11] 9p: darwin: Handle struct dirent differences
Date: Wed, 02 Feb 2022 18:37:37 +0100	[thread overview]
Message-ID: <4982610.5BtrrgmkuT@silver> (raw)
In-Reply-To: <CAB26zV0zKNzQ-Fk-TAq-UzqyuThW_aubHR+5+iE+SNZonRALQA@mail.gmail.com>

On Mittwoch, 2. Februar 2022 16:07:09 CET Will Cohen wrote:
> Does the version proposed in v3 address the V9fsFidState issues? In 9p.c
> for v2 to v3, we propose
> 
> -    return telldir(fidp->fs.dir.stream);
> +    return v9fs_co_telldir(pdu, fidp);
> 
> and in codir.c from v2 to v3 we propose
> -        saved_dir_pos = telldir(fidp->fs.dir.stream);
> +        saved_dir_pos = s->ops->telldir(&s->ctx, &fidp->fs);
> 
> This removes the direct access to fidp->, and we hope this should be
> sufficient to avoid the concurrency
> and undefined behaviors you noted in the v2 review.

I am not sure why you think that you are no longer accessing fidp, you still 
do, just in a slightly different way.

Let me propose a different solution: on macOS there is 'd_seekoff' in struct 
dirent. As already discussed that dirent field is apparently unused (zero) by 
macOS. So what about filling this dirent field (early, on driver level, not on 
server/controller level [9p.c]) with telldir() for macOS, then you have the 
same info as other systems provide with dirent field 'd_off' later on.

Then you can add an inline helper function or a macro to deal with macOS vs. 
RoW, e.g.:

inline
off_t qemu_dirent_off(struct dirent *dent)
{
#ifdef CONFIG_DARWIN
    return dent->d_seekoff;
#else
    return dent->d_off;
#endif
}

And in 9p.c at all locations where dent->d_off is currently accessed, you 
would just use that helper instead.

Best regards,
Christian Schoenebeck




  reply	other threads:[~2022-02-02 19:12 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-28  0:56 [PATCH v3 00/11] This is a followup to https://lists.gnu.org/archive/html/qemu-devel/2021-11/msg04325.html, Will Cohen
2022-01-28  0:56 ` [PATCH v3 01/11] 9p: linux: Fix a couple Linux assumptions Will Cohen
2022-01-28 15:52   ` Greg Kurz
2022-01-28  0:56 ` [PATCH v3 02/11] 9p: Rename 9p-util -> 9p-util-linux Will Cohen
2022-01-28 16:27   ` Greg Kurz
2022-01-28  0:56 ` [PATCH v3 03/11] 9p: darwin: Handle struct stat(fs) differences Will Cohen
2022-02-02 17:48   ` Christian Schoenebeck
2022-01-28  0:56 ` [PATCH v3 04/11] 9p: darwin: Handle struct dirent differences Will Cohen
2022-02-02 15:07   ` Will Cohen
2022-02-02 17:37     ` Christian Schoenebeck [this message]
2022-02-02 18:31       ` Will Cohen
2022-01-28  0:56 ` [PATCH v3 05/11] 9p: darwin: Ignore O_{NOATIME, DIRECT} Will Cohen
2022-01-28  0:56 ` [PATCH v3 06/11] 9p: darwin: Compatibility defn for XATTR_SIZE_MAX Will Cohen
2022-01-28 16:02   ` Christian Schoenebeck
2022-01-28  0:56 ` [PATCH v3 07/11] 9p: darwin: *xattr_nofollow implementations Will Cohen
2022-01-28  0:56 ` [PATCH v3 08/11] 9p: darwin: Compatibility for f/l*xattr Will Cohen
2022-01-28  0:56 ` [PATCH v3 09/11] 9p: darwin: Implement compatibility for mknodat Will Cohen
2022-01-28  0:56 ` [PATCH v3 10/11] 9p: darwin: meson: Allow VirtFS on Darwin Will Cohen
2022-01-28  0:56 ` [PATCH v3 11/11] 9p: darwin: adjust assumption on virtio-9p-test Will Cohen
2022-01-28  7:03   ` Thomas Huth
2022-01-28 13:38     ` Will Cohen
2022-01-28 15:28       ` Christian Schoenebeck

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=4982610.5BtrrgmkuT@silver \
    --to=qemu_oss@crudebyte.com \
    --cc=groug@kaod.org \
    --cc=hi@alyssa.is \
    --cc=keno@juliacomputing.com \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=reactorcontrol@icloud.com \
    --cc=thuth@redhat.com \
    --cc=wwcohen@gmail.com \
    /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.