From: Damien Millescamps <damien.millescamps@6wind.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: qemu-trivial@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-trivial] [PATCH] ivshmem: allow the sharing of hugepages
Date: Sat, 14 Sep 2013 12:51:47 +0200 [thread overview]
Message-ID: <52343FC3.4010208@6wind.com> (raw)
In-Reply-To: <52342E0E.3010700@msgid.tls.msk.ru>
On 09/14/2013 11:36 AM, Michael Tokarev wrote:
> That to say, this is not a _definition_ of a shared memory object, it
> is just
> a suggested name syntax, suggested purely for portability. In other
> words,
> there may be other acceptable syntaxes for it.
You are right, the definition can be found in shm_open(P), and reads:
If name does not begin with the slash character, the effect is
implementation-defined.
The interpretation of slash characters other than the leading slash
character in name
is implementation-defined.
The "implementation-defined" found in glibc is as follow:
The leading '/', if present, is removed. and '/dev/shm/' is prepended to
the resulting name before calling open().
(found in sysdeps/posix/shm_open.c around line 57 depending on the version).
Note that a workaround in my case is to give a name in the form:
/../../path/to/file" ...
> So as the result, I'm not sure this approach is valid. Maybe we should
> always try shared first and create-new second? I dunno.
This is probably a better approach, yes. cf next paragraph.
> Note that whole thing - using shared memory object like this - may lead
> to surprizes at least, -- users who previously expected one behavour now
> see different behavour. Most likely the old behavour wasn't correct.
By first trying to open with shm_open, and only when it fails with open,
the behavior should stay the same. Because according to glibc
implementation, if "folder" exists in /dev/shm, a name like
"/folder/shared_mem" should work, but will trigger a false positive with
the checks I added.
Note that I am not sure anyone uses this syntax, but still, this is a
false positive. I'll change that.
> At least this should be documented somewhere in user-visible part of
> ivshmem, so users will have an ides when objects will be shared and
> when truncated.
I will add a paragraph in docs/specs/ivshmem_device_spec.txt for that.
Thanks for mentioning it.
> It is a somewhat minor nitpick, but it'd be not nice to spread such tests
> (for NULLness) where the object can't be NULL and to confuse readers.
agreed.
> Thanks,
Thanks for your review, that was helpful. I'll send a reworked patch,
probably on Monday.
--
Damien Millescamps
WARNING: multiple messages have this Message-ID (diff)
From: Damien Millescamps <damien.millescamps@6wind.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: qemu-trivial@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-trivial] [PATCH] ivshmem: allow the sharing of hugepages
Date: Sat, 14 Sep 2013 12:51:47 +0200 [thread overview]
Message-ID: <52343FC3.4010208@6wind.com> (raw)
In-Reply-To: <52342E0E.3010700@msgid.tls.msk.ru>
On 09/14/2013 11:36 AM, Michael Tokarev wrote:
> That to say, this is not a _definition_ of a shared memory object, it
> is just
> a suggested name syntax, suggested purely for portability. In other
> words,
> there may be other acceptable syntaxes for it.
You are right, the definition can be found in shm_open(P), and reads:
If name does not begin with the slash character, the effect is
implementation-defined.
The interpretation of slash characters other than the leading slash
character in name
is implementation-defined.
The "implementation-defined" found in glibc is as follow:
The leading '/', if present, is removed. and '/dev/shm/' is prepended to
the resulting name before calling open().
(found in sysdeps/posix/shm_open.c around line 57 depending on the version).
Note that a workaround in my case is to give a name in the form:
/../../path/to/file" ...
> So as the result, I'm not sure this approach is valid. Maybe we should
> always try shared first and create-new second? I dunno.
This is probably a better approach, yes. cf next paragraph.
> Note that whole thing - using shared memory object like this - may lead
> to surprizes at least, -- users who previously expected one behavour now
> see different behavour. Most likely the old behavour wasn't correct.
By first trying to open with shm_open, and only when it fails with open,
the behavior should stay the same. Because according to glibc
implementation, if "folder" exists in /dev/shm, a name like
"/folder/shared_mem" should work, but will trigger a false positive with
the checks I added.
Note that I am not sure anyone uses this syntax, but still, this is a
false positive. I'll change that.
> At least this should be documented somewhere in user-visible part of
> ivshmem, so users will have an ides when objects will be shared and
> when truncated.
I will add a paragraph in docs/specs/ivshmem_device_spec.txt for that.
Thanks for mentioning it.
> It is a somewhat minor nitpick, but it'd be not nice to spread such tests
> (for NULLness) where the object can't be NULL and to confuse readers.
agreed.
> Thanks,
Thanks for your review, that was helpful. I'll send a reworked patch,
probably on Monday.
--
Damien Millescamps
next prev parent reply other threads:[~2013-09-14 10:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-12 18:23 [Qemu-trivial] [PATCH] ivshmem: allow the sharing of hugepages Damien Millescamps
2013-09-12 18:23 ` [Qemu-devel] " Damien Millescamps
2013-09-14 9:36 ` [Qemu-trivial] " Michael Tokarev
2013-09-14 9:36 ` [Qemu-devel] " Michael Tokarev
2013-09-14 10:51 ` Damien Millescamps [this message]
2013-09-14 10:51 ` Damien Millescamps
-- strict thread matches above, loose matches on Subject: below --
2013-09-10 15:23 Damien Millescamps
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=52343FC3.4010208@6wind.com \
--to=damien.millescamps@6wind.com \
--cc=mjt@tls.msk.ru \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.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.