linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Greg Troxel <gdt@ir.bbn.com>
To: "Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
Cc: Richard Hansen <rhansen@bbn.com>,
	Steven Whitehouse <swhiteho@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Linux API <linux-api@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH] mm: msync: require either MS_ASYNC or MS_SYNC
Date: Thu, 03 Apr 2014 08:57:52 -0400	[thread overview]
Message-ID: <rmivbuqy3hr.fsf@fnord.ir.bbn.com> (raw)
In-Reply-To: <CAKgNAki8U+j0mvYCg99j7wJ2Z7ve-gxusVbM3zdog=hKGPdidQ@mail.gmail.com> (Michael Kerrisk's message of "Thu, 3 Apr 2014 10:25:01 +0200")

[-- Attachment #1: Type: text/plain, Size: 2037 bytes --]


"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com> writes:

> I think the only reasonable solution is to better document existing
> behavior and what the programmer should do. With that in mind, I've
> drafted the following text for the msync(2) man page:
>
>     NOTES
>        According to POSIX, exactly one of MS_SYNC and MS_ASYNC  must  be
>        specified  in  flags.   However,  Linux permits a call to msync()
>        that specifies neither of these flags, with  semantics  that  are
>        (currently)  equivalent  to  specifying  MS_ASYNC.   (Since Linux
>        2.6.19, MS_ASYNC is in fact a no-op, since  the  kernel  properly
>        tracks  dirty  pages  and  flushes them to storage as necessary.)
>        Notwithstanding the Linux behavior, portable, future-proof appli‐
>        cations  should  ensure  that they specify exactly one of MS_SYNC
>        and MS_ASYNC in flags.
>
> Comments on this draft welcome.

I think it's a step backwards to document unspecified behavior.  If
anything, the man page should make it clear that providing neither flag
results in undefined behavior and will lead to failure on systems on
than Linux.  While I can see the point of not changing the previous
behavior to protect buggy code, there's no need to document it in the
man page and further enshrine it.

There's a larger point, which is that people write code for Linux when
they should be writing code for POSIX.  Therefore, Linux has an
obligation to the larger free software community to avoid encouraging
non-portable code.  This is somewhat similar (except for the key point
that it's unintentional) to bash's allowing "==" in test, which is a
gratuitous extension to the standard that has led to large amounts of
nonportable code.  To mitigate this, it would be reasonable to syslog a
warning the first time a process makes a call with flags that POSIX says
leads to undefined behavior.  That would meet the
portability-citizenzhip goals and not break existing systems.

[-- Attachment #2: Type: application/pgp-signature, Size: 180 bytes --]

  parent reply	other threads:[~2014-04-03 12:57 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-01 18:25 Richard Hansen
2014-04-01 19:32 ` Michael Kerrisk (man-pages)
2014-04-02  0:53   ` Richard Hansen
2014-04-02 10:45   ` chrubis
2014-04-02 11:10 ` Christoph Hellwig
2014-04-02 11:45   ` Steven Whitehouse
2014-04-02 23:44     ` Richard Hansen
2014-04-03  8:25       ` Michael Kerrisk (man-pages)
2014-04-03 11:51         ` Christopher Covington
2014-04-04  6:54           ` Michael Kerrisk (man-pages)
2014-04-03 12:57         ` Greg Troxel [this message]
2014-04-04  7:11           ` Michael Kerrisk (man-pages)
2014-04-03 20:23         ` Richard Hansen
2014-04-04  6:53           ` Christoph Hellwig
2014-04-04  7:12       ` [PATCH] mm: msync: require either MS_ASYNC or MS_SYNC [resend] Michael Kerrisk (man-pages)
2014-04-04 14:07         ` Peter Zijlstra
  -- strict thread matches above, loose matches on Subject: below --
2013-09-01 19:58 [PATCH] mm: msync: require either MS_ASYNC or MS_SYNC Richard Hansen

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=rmivbuqy3hr.fsf@fnord.ir.bbn.com \
    --to=gdt@ir.bbn.com \
    --cc=hch@infradead.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mtk.manpages@gmail.com \
    --cc=peterz@infradead.org \
    --cc=rhansen@bbn.com \
    --cc=swhiteho@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox