All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Maxim V. Patlasov" <mpatlasov@parallels.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Kirill Korotaev <dev@parallels.com>,
	Pavel Emelianov <xemul@parallels.com>,
	"fuse-devel@lists.sourceforge.net"
	<fuse-devel@lists.sourceforge.net>,
	Kernel Mailing List <linux-kernel@vger.kernel.org>,
	James Bottomley <jbottomley@parallels.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Linux-Fsdevel <linux-fsdevel@vger.kernel.org>, <devel@openvz.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	<fengguang.wu@intel.com>, <mgorman@suse.de>
Subject: Re: [fuse-devel] [PATCH 14/14] mm: Account for WRITEBACK_TEMP in balance_dirty_pages
Date: Thu, 25 Apr 2013 20:16:45 +0400	[thread overview]
Message-ID: <517956ED.7060102@parallels.com> (raw)
In-Reply-To: <CAJfpegv1zc4oeE=YXrQd0jmzVXB8jjvXkz-_4Nv_ELcvfsa74Q@mail.gmail.com>

Hi,

04/25/2013 07:49 PM, Miklos Szeredi пишет:
> On Thu, Apr 25, 2013 at 4:29 PM, Maxim V. Patlasov
> <mpatlasov@parallels.com> wrote:
>>> diff --git a/mm/page-writeback.c b/mm/page-writeback.c
>>> index 0713bfb..c47bcd4 100644
>>> --- a/mm/page-writeback.c
>>> +++ b/mm/page-writeback.c
>>> @@ -1235,7 +1235,8 @@ static void balance_dirty_pages(struct address_space
>>> *mapping,
>>>                   */
>>>                  nr_reclaimable = global_page_state(NR_FILE_DIRTY) +
>>>
>>> global_page_state(NR_UNSTABLE_NFS);
>>> -               nr_dirty = nr_reclaimable +
>>> global_page_state(NR_WRITEBACK);
>>> +               nr_dirty = nr_reclaimable +
>>> global_page_state(NR_WRITEBACK) +
>>> +                       global_page_state(NR_WRITEBACK_TEMP);
>>>                  global_dirty_limits(&background_thresh, &dirty_thresh);
>>
>> Please drop this patch. As we discussed in LSF/MM, the fix above is correct,
>> but it's not enough: we also need to ensure disregard of NR_WRITEBACK_TEMP
>> when balance_dirty_pages() is called from fuse daemon. I'll send a separate
>> patch-set soon.
> Please elaborate.  From a technical perspective "fuse daemon" is very
> hard to define, so anything that relies on whether something came from
> the fuse daemon or not is conceptually broken.

As Mel Gorman pointed out, fuse daemon diving into balance_dirty_pages 
should not kick flusher judging on NR_WRITEBACK_TEMP. Essentially, all 
we need in balance_dirty_pages is:

     if (I'm not fuse daemon)
         nr_dirty += global_page_state(NR_WRITEBACK_TEMP);

The way how to identify fuse daemon was not thoroughly scrutinized 
during LSF/MM. Firstly, I thought it would be enough to set a 
per-process flag handling fuse device open. But now I understand that 
fuse daemon may be quite a complicated multi-threaded multi-process 
construction. I'm going to add new FUSE_NOTIFY to allow fuse daemon 
decide when it works on behalf of draining writeout-s. Having in mind 
that fuse-lib is multi-threaded, I'm also going to inherit the flag on 
copy_process(). Does it make sense for you?

Also, another patch will put this ad-hoc FUSE_NOTIFY under fusermount 
control. This will prevent malicious unprivileged fuse mounts from 
setting the flag for malicious purposes.

Thanks,
Maxim

  reply	other threads:[~2013-04-25 16:16 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-01 10:40 [PATCH v4 00/14] fuse: An attempt to implement a write-back cache policy Maxim V. Patlasov
2013-04-01 10:41 ` [PATCH 08/14] fuse: Flush files on wb close Maxim V. Patlasov
     [not found] ` <20130401103749.19027.89833.stgit-vWG5eQQidJHciZdyczg/7Q@public.gmane.org>
2013-04-01 10:40   ` [PATCH 01/14] fuse: Linking file to inode helper Maxim V. Patlasov
2013-04-01 10:40     ` Maxim V. Patlasov
2013-04-01 10:40   ` [PATCH 02/14] fuse: Getting file for writeback helper Maxim V. Patlasov
2013-04-01 10:40     ` Maxim V. Patlasov
2013-04-01 10:41   ` [PATCH 03/14] fuse: Prepare to handle short reads Maxim V. Patlasov
2013-04-01 10:41     ` Maxim V. Patlasov
2013-04-01 10:41   ` [PATCH 04/14] fuse: Prepare to handle multiple pages in writeback Maxim V. Patlasov
2013-04-01 10:41     ` Maxim V. Patlasov
2013-04-25 10:22     ` Miklos Szeredi
2013-04-01 10:41   ` [PATCH 05/14] fuse: Connection bit for enabling writeback Maxim V. Patlasov
2013-04-01 10:41     ` Maxim V. Patlasov
2013-04-01 10:41   ` [PATCH 06/14] fuse: Trust kernel i_size only - v3 Maxim V. Patlasov
2013-04-01 10:41     ` Maxim V. Patlasov
2013-04-01 10:41   ` [PATCH 07/14] fuse: Trust kernel i_mtime only Maxim V. Patlasov
2013-04-01 10:41     ` Maxim V. Patlasov
2013-04-01 10:42   ` [PATCH 09/14] fuse: Implement writepages and write_begin/write_end callbacks - v3 Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-25 10:35     ` Miklos Szeredi
2013-06-14 14:03       ` Maxim Patlasov
2013-04-01 10:42   ` [PATCH 10/14] fuse: fuse_writepage_locked() should wait on writeback Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-01 10:42   ` [PATCH 11/14] fuse: fuse_flush() " Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-01 10:42   ` [PATCH 12/14] fuse: Fix O_DIRECT operations vs cached writeback misorder - v2 Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-01 10:42   ` [PATCH 13/14] fuse: Turn writeback cache on Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-01 10:42   ` [PATCH 14/14] mm: Account for WRITEBACK_TEMP in balance_dirty_pages Maxim V. Patlasov
2013-04-01 10:42     ` Maxim V. Patlasov
2013-04-25 14:29     ` [fuse-devel] " Maxim V. Patlasov
2013-04-25 15:49       ` Miklos Szeredi
2013-04-25 16:16         ` Maxim V. Patlasov [this message]
2013-04-25 20:43           ` Miklos Szeredi
2013-04-26  8:32             ` Maxim V. Patlasov
2013-04-26  8:32               ` Maxim V. Patlasov
2013-04-26  8:32               ` Maxim V. Patlasov
2013-04-26 14:02               ` Miklos Szeredi
2013-04-26 14:02                 ` Miklos Szeredi
2013-04-26 17:44                 ` Maxim V. Patlasov
2013-04-26 17:44                   ` Maxim V. Patlasov
2013-04-26 17:44                   ` Maxim V. Patlasov
2013-05-07 11:39                   ` Miklos Szeredi
2013-05-07 11:39                     ` Miklos Szeredi
2013-04-11 11:18 ` [fuse-devel] [PATCH v4 00/14] fuse: An attempt to implement a write-back cache policy Maxim V. Patlasov
2013-04-11 14:36   ` Miklos Szeredi

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=517956ED.7060102@parallels.com \
    --to=mpatlasov@parallels.com \
    --cc=akpm@linux-foundation.org \
    --cc=dev@parallels.com \
    --cc=devel@openvz.org \
    --cc=fengguang.wu@intel.com \
    --cc=fuse-devel@lists.sourceforge.net \
    --cc=jbottomley@parallels.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=miklos@szeredi.hu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xemul@parallels.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.