All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Jens Axboe <axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
Cc: Michael Kerrisk
	<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-man <linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Florian Weimer <fweimer-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: man page update (fcntl(2) new set/get write hints)
Date: Mon, 11 Sep 2017 16:31:16 +0200	[thread overview]
Message-ID: <CAKgNAkge+OG4FoMu-c-Q7b3P8EUqFzbmmhVNiaeDFHWWA6XWcA@mail.gmail.com> (raw)
In-Reply-To: <e281652b-44d7-1c59-35ea-63836d6532dd-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Hi Jens,

Ping^2!

Cheers,

Michael


On 3 September 2017 at 02:45, Michael Kerrisk (man-pages)
<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Hi Jens,
>
> Ping!
>
> Cheers,
>
> Michael
>
>
> On 08/28/2017 11:16 PM, Michael Kerrisk (man-pages) wrote:
>> On 08/28/2017 10:15 PM, Jens Axboe wrote:
>>> On 08/28/2017 01:19 PM, Michael Kerrisk (man-pages) wrote:
>>>> Hi Jens,
>>>>
>>>> On 08/25/2017 10:55 PM, Jens Axboe wrote:
>>>>> On 08/25/2017 02:51 PM, Michael Kerrisk (man-pages) wrote:
>>>>>>>>>> Do you mean here "file descriptor" or "file description (i.e., the
>>>>>>>>>> open file handle)? Maybe you mean the former, but I want to confirm.
>>>>>>>>>
>>>>>>>>> I do mean file descriptor.
>>>>>>>>
>>>>>>>> So, what are the semantics if a file descriptor is duplicated using
>>>>>>>> dup(2) or similar? If I understand correctly, then the write lifetime
>>>>>>>> hint has no effect for the new file descriptor, right?
>>>>>>>
>>>>>>> If it's dup(2)'ed, then the new file descriptor will refer to the same
>>>>>>> hints as the previous. See attached test file.
>>>>>>
>>>>>> But then isn't this exactly the point I asked about: are the hints
>>>>>> private to a file descriptor or are they associated with the open file
>>>>>> description (open file table entry, "struct file")? You said "I do
>>>>>> mean file descriptor", but actually I understand what you just said
>>>>>> now as "hints are associated with the open file description, which may
>>>>>> be referred to by multiple duplicated file descriptors". Can you
>>>>>> clarify?
>>>>>
>>>>> You are right, I misunderstood your original question. They do follow
>>>>> the file description. So the dup'ed one will return the same as the
>>>>> original, even if the hints on the original fd get modified. That is the
>>>>> expected behavior.
>>>>
>>>> So, I am still confused. I was wondering whether the hints are
>>>> associated with the open file description (OFD), rather than the
>>>> file descriptor. You said yes, then say that the dup'ed file
>>>> descriptor will have the same hints even if the hints on the
>>>> original file descriptor are modified. To me that sounds like:
>>>> the hints are associated with the file descriptor, and not the
>>>> OFD, and during dup(2) the hints are *copied* to the the new
>>>> file descriptor, with the result that after the dup(2) the hints
>>>> can be modified independently for the two file descriptors.
>>>>
>>>> Can you clarify please?
>>>
>>> No, that's not how it behaves. If you dup(2) the file descriptor, then
>>> the dup'ed descriptor will return the same hint as was set on the
>>> original.  If you change/clear the hint on the original, the dup'ed
>>> descriptor will now return the new hint.
>>
>> Okay -- thanks. I'd misunderstood your earlier words. Okay, I've
>> hacked this text to arrive at new text below. Could you please check
>> it? Also, there are some details that are still missing. Could you take
>> a look at the questions below please.
>>
>> [[[
>>     File read/write hints
>>        Write lifetime hints can be used to inform the  kernel  about  the
>>        relative  expected  lifetime  of  writes on a given inode or via a
>>        particular open file description.  (See open(2) for an explanation
>>        of open file desriptions.)  In this context, the term "write life‐
>>        time" means the expected time the data will live on media,  before
>>        being overwritten or erased.
>>
>>        An  application  may use the different hint values specified below
>>        to separate writes into different write classes, so that  multiple
>>        users  or  applications  running  on a single storage back-end can
>>        aggregate their I/O patterns in  a  consistent  manner.   However,
>>        there are no functional semantics implied by these flags, and dif‐
>>        ferent I/O classes can use the write lifetime hints  in  arbitrary
>>        ways, so long as the hints are used consistently.
>>
>> QUESTIONS:
>> * What are write classes?
>> * What are I/O classes?
>> * What is the purpose of using read/write hints? I assume it's a
>>   performance point, but the text is not explicit about that.
>> * You variously wrote "read/write hints" and "write hints". Let's make
>>   it consistent. Which is the preferred term?
>>
>>        The  following  operations  can be applied to the file descriptor,
>>        fd:
>>
>>        F_GET_RW_HINT (uint64_t *; since Linux 4.13)
>>               Returns the value of the read/write  hint  associated  with
>>               the underlying inode referred to by fd.
>>
>>        F_SET_RW_HINT (uint64_t *; since Linux 4.13)
>>               Sets the read/write hint value associated with the underly‐
>>               ing inode referred to by fd.
>>
>>        F_GET_FILE_RW_HINT (uint64_t *; since Linux 4.13)
>>               Returns the value of the read/write  hint  associated  with
>>               the open file description referred to by fd.
>>
>>        F_SET_FILE_RW_HINT (uint64_t *; since Linux 4.13)
>>               Sets  the  read/write  hint  value associated with the open
>>               file description referred to by fd.
>>
>>        If an open file description has not  been  assigned  a  read/write
>>        hint, then it shall use the value assigned to the inode, if any.
>>
>>        The following read/write hints are valid since Linux 4.13:
>>
>>        RWH_WRITE_LIFE_NOT_SET
>>               No specific hint has been set.  This is the default value.
>>
>>        RWH_WRITE_LIFE_NONE
>>               No  specific write lifetime is associated with this file or
>>               inode.
>>
>>        RWH_WRITE_LIFE_SHORT
>>               Data written to this inode or via this open  file  descrip‐
>>               tion is expected to have a short lifetime.
>>
>>        RWH_WRITE_LIFE_MEDIUM
>>               Data  written  to this inode or via this open file descrip‐
>>               tion is expected to have a lifetime longer than data  writ‐
>>               ten with RWH_WRITE_LIFE_SHORT.
>>
>>        RWH_WRITE_LIFE_LONG
>>               Data  written  to this inode or via this open file descrip‐
>>               tion is expected to have a lifetime longer than data  writ‐
>>               ten with RWH_WRITE_LIFE_MEDIUM.
>>
>>        RWH_WRITE_LIFE_EXTREME
>>               Data  written  to this inode or via this open file descrip‐
>>               tion is expected to have a lifetime longer than data  writ‐
>>               ten with RWH_WRITE_LIFE_LONG.
>>
>>        All  the  write-specific  hints are relative to each other, and no
>>        individual absolute meaning should be attributed to them.
>> ]]]
>>
>> Cheers,
>>
>> Michael
>>
>>
>>
>
>
> --
> Michael Kerrisk
> Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
> Linux/UNIX System Programming Training: http://man7.org/training/



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2017-09-11 14:31 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <25b8e025-d49b-e033-5ba3-f6967a6a970f@kernel.dk>
     [not found] ` <25b8e025-d49b-e033-5ba3-f6967a6a970f-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2017-08-23 22:41   ` man page update (fcntl(2) new set/get write hints) Michael Kerrisk (man-pages)
     [not found]     ` <feffa54b-d1b4-02e3-5a24-0a8e51f96762-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-08-24 14:39       ` Jens Axboe
     [not found]         ` <39f20b08-9a35-652e-4ae9-96f3cb8e5679-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2017-08-24 22:10           ` Michael Kerrisk (man-pages)
     [not found]             ` <CAKgNAkizCBiky9QM0-oyP3taGKCDTjAP--SCgqZ3pC8Kz=PnPw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-25 20:43               ` Jens Axboe
     [not found]                 ` <580f238c-4c3d-eddc-5330-19f8a971bce1-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2017-08-25 20:51                   ` Michael Kerrisk (man-pages)
     [not found]                     ` <CAKgNAkhJysMFycC8xxjQ8s=+ABryEmWTFUopTWoan04icGibAw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-25 20:55                       ` Jens Axboe
     [not found]                         ` <6d17003b-87a1-43c8-87bf-80842b4fabf7-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2017-08-28 19:19                           ` Michael Kerrisk (man-pages)
     [not found]                             ` <68b812bd-a861-2ed0-e207-fb0a9bbce923-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-08-28 20:15                               ` Jens Axboe
     [not found]                                 ` <6ad54bed-75fa-5153-004e-c4a8a1c87a35-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2017-08-28 21:16                                   ` Michael Kerrisk (man-pages)
     [not found]                                     ` <778a45d3-8bee-aa8b-86bd-c7e6cd7e5c60-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-03  0:45                                       ` Michael Kerrisk (man-pages)
     [not found]                                         ` <e281652b-44d7-1c59-35ea-63836d6532dd-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-09-11 14:31                                           ` Michael Kerrisk (man-pages) [this message]
2017-08-28  9:07       ` Florian Weimer
     [not found]         ` <02cf5c20-bb36-29e3-01e2-3a90e8272c70-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2017-08-28 16:13           ` Jens Axboe
2017-08-28 21:13           ` Michael Kerrisk (man-pages)

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=CAKgNAkge+OG4FoMu-c-Q7b3P8EUqFzbmmhVNiaeDFHWWA6XWcA@mail.gmail.com \
    --to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
    --cc=fweimer-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.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.