<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pm24.git/mm, branch v3.2-rc3</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.kobert.dev/pm24.git/atom?h=v3.2-rc3</id>
<link rel='self' href='https://git.kobert.dev/pm24.git/atom?h=v3.2-rc3'/>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/'/>
<updated>2011-11-22T16:22:48Z</updated>
<entry>
<title>Merge branch 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux</title>
<updated>2011-11-22T16:22:48Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-11-22T16:22:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=8ba8ed54de4dd79bb88ab6cd7dbf2e83d58d6d57'/>
<id>urn:sha1:8ba8ed54de4dd79bb88ab6cd7dbf2e83d58d6d57</id>
<content type='text'>
* 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
  writeback: remove vm_dirties and task-&gt;dirties
  writeback: hard throttle 1000+ dd on a slow USB stick
  mm: Make task in balance_dirty_pages() killable
</content>
</entry>
<entry>
<title>Merge branch 'stable/for-linus-fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen</title>
<updated>2011-11-18T15:18:07Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-11-18T15:18:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=b6844523839779030430ff28f036f83e2a3f43e6'/>
<id>urn:sha1:b6844523839779030430ff28f036f83e2a3f43e6</id>
<content type='text'>
* 'stable/for-linus-fixes-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
  xen-gntalloc: signedness bug in add_grefs()
  xen-gntalloc: integer overflow in gntalloc_ioctl_alloc()
  xen-gntdev: integer overflow in gntdev_alloc_map()
  xen:pvhvm: enable PVHVM VCPU placement when using more than 32 CPUs.
  xen/balloon: Avoid OOM when requesting highmem
  xen: Remove hanging references to CONFIG_XEN_PLATFORM_PCI
  xen: map foreign pages for shared rings by updating the PTEs directly
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.dk/linux-block</title>
<updated>2011-11-18T11:34:35Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-11-18T11:34:35Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=15bd1cfb3055d866614cdaf38e43201936264e50'/>
<id>urn:sha1:15bd1cfb3055d866614cdaf38e43201936264e50</id>
<content type='text'>
* 'for-linus' of git://git.kernel.dk/linux-block:
  block: add missed trace_block_plug
  paride: fix potential information leak in pg_read()
  bio: change some signed vars to unsigned
  block: avoid unnecessary plug list flush
  cciss: auto engage SCSI mid layer at driver load time
  loop: cleanup set_status interface
  include/linux/bio.h: use a static inline function for bio_integrity_clone()
  loop: prevent information leak after failed read
  block: Always check length of all iov entries in blk_rq_map_user_iov()
  The Windows driver .inf disables ASPM on all cciss devices. Do the same.
  backing-dev: ensure wakeup_timer is deleted
  block: Revert "[SCSI] genhd: add a new attribute "alias" in gendisk"
</content>
</entry>
<entry>
<title>writeback: remove vm_dirties and task-&gt;dirties</title>
<updated>2011-11-17T12:49:06Z</updated>
<author>
<name>Wu Fengguang</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2011-09-07T16:41:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=468e6a20afaccb67e2a7d7f60d301f90e1c6f301'/>
<id>urn:sha1:468e6a20afaccb67e2a7d7f60d301f90e1c6f301</id>
<content type='text'>
They are not used any more.

Signed-off-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
</content>
</entry>
<entry>
<title>writeback: hard throttle 1000+ dd on a slow USB stick</title>
<updated>2011-11-17T12:39:32Z</updated>
<author>
<name>Wu Fengguang</name>
<email>fengguang.wu@intel.com</email>
</author>
<published>2011-11-14T01:47:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=1df647197c5b8aacaeb58592cba9a1df322c9000'/>
<id>urn:sha1:1df647197c5b8aacaeb58592cba9a1df322c9000</id>
<content type='text'>
The sleep based balance_dirty_pages() can pause at most MAX_PAUSE=200ms
on every 1 4KB-page, which means it cannot throttle a task under
4KB/200ms=20KB/s. So when there are more than 512 dd writing to a
10MB/s USB stick, its bdi dirty pages could grow out of control.

Even if we can increase MAX_PAUSE, the minimal (task_ratelimit = 1)
means a limit of 4KB/s.
                                                       
They can eventually be safeguarded by the global limit check 
(nr_dirty &lt; dirty_thresh). However if someone is also writing to an 
HDD at the same time, it'll get poor HDD write performance.
                                                       
We at least want to maintain good write performance for other devices
when one device is attacked by some "massive parallel" workload, or
suffers from slow write bandwidth, or somehow get stalled due to some 
error condition (eg. NFS server not responding).

For a stalled device, we need to completely block its dirtiers, too,
before its bdi dirty pages grow all the way up to the global limit and
leave no space for the other functional devices.

So change the loop exit condition to

	/*
	 * Always enforce global dirty limit; also enforce bdi dirty limit
	 * if the normal max_pause sleeps cannot keep things under control.
	 */
	if (nr_dirty &lt; dirty_thresh &amp;&amp;
	    (bdi_dirty &lt; bdi_thresh || bdi-&gt;dirty_ratelimit &gt; 1))
		break;

which can be further simplified to

	if (task_ratelimit)
		break;

Signed-off-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
</content>
</entry>
<entry>
<title>xen: map foreign pages for shared rings by updating the PTEs directly</title>
<updated>2011-11-16T17:13:08Z</updated>
<author>
<name>David Vrabel</name>
<email>david.vrabel@citrix.com</email>
</author>
<published>2011-09-29T15:53:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=cd12909cb576d37311fe35868780e82d5007d0c8'/>
<id>urn:sha1:cd12909cb576d37311fe35868780e82d5007d0c8</id>
<content type='text'>
When mapping a foreign page with xenbus_map_ring_valloc() with the
GNTTABOP_map_grant_ref hypercall, set the GNTMAP_contains_pte flag and
pass a pointer to the PTE (in init_mm).

After the page is mapped, the usual fault mechanism can be used to
update additional MMs.  This allows the vmalloc_sync_all() to be
removed from alloc_vm_area().

Signed-off-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Acked-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
[v1: Squashed fix by Michal for no-mmu case]
Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Signed-off-by: Michal Simek &lt;monstr@monstr.eu&gt;
</content>
</entry>
<entry>
<title>mm: Make task in balance_dirty_pages() killable</title>
<updated>2011-11-16T11:53:44Z</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2011-11-16T11:34:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=499d05ecf990a7a7bbf9e0a273f9969f8ec69efc'/>
<id>urn:sha1:499d05ecf990a7a7bbf9e0a273f9969f8ec69efc</id>
<content type='text'>
There is no reason why task in balance_dirty_pages() shouldn't be killable
and it helps in recovering from some error conditions (like when filesystem
goes in error state and cannot accept writeback anymore but we still want to
kill processes using it to be able to unmount it).

There will be follow up patches to further abort the generic_perform_write()
and other filesystem write loops, to avoid large write + SIGKILL combination
exceeding the dirty limit and possibly strange OOM.

Reported-by: Kazuya Mio &lt;k-mio@sx.jp.nec.com&gt;
Tested-by: Kazuya Mio &lt;k-mio@sx.jp.nec.com&gt;
Reviewed-by: Neil Brown &lt;neilb@suse.de&gt;
Reviewed-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
</content>
</entry>
<entry>
<title>hugetlb: release pages in the error path of hugetlb_cow()</title>
<updated>2011-11-16T00:41:52Z</updated>
<author>
<name>Hillf Danton</name>
<email>dhillf@gmail.com</email>
</author>
<published>2011-11-15T22:36:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=ea4039a34c4c206d015d34a49d0b00868e37db1d'/>
<id>urn:sha1:ea4039a34c4c206d015d34a49d0b00868e37db1d</id>
<content type='text'>
If we fail to prepare an anon_vma, the {new, old}_page should be released,
or they will leak.

Signed-off-by: Hillf Danton &lt;dhillf@gmail.com&gt;
Reviewed-by: Andrea Arcangeli &lt;aarcange@redhat.com&gt;
Cc: Hugh Dickins &lt;hughd@google.com&gt;
Cc: Johannes Weiner &lt;jweiner@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>oom: do not kill tasks with oom_score_adj OOM_SCORE_ADJ_MIN</title>
<updated>2011-11-16T00:41:51Z</updated>
<author>
<name>Michal Hocko</name>
<email>mhocko@suse.cz</email>
</author>
<published>2011-11-15T22:36:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=5aecc85abdb9ac2b0e6548d13652a34142e7ae89'/>
<id>urn:sha1:5aecc85abdb9ac2b0e6548d13652a34142e7ae89</id>
<content type='text'>
Commit c9f01245 ("oom: remove oom_disable_count") has removed the
oom_disable_count counter which has been used for early break out from
oom_badness so we could never select a task with oom_score_adj set to
OOM_SCORE_ADJ_MIN (oom disabled).

Now that the counter is gone we are always going through heuristics
calculation and we always return a non zero positive value.  This means
that we can end up killing a task with OOM disabled because it is
indistinguishable from regular tasks with 1% resp.  CAP_SYS_ADMIN tasks
with 3% usage of memory or tasks with oom_score_adj set but OOM enabled.

Let's break out early if the task should have OOM disabled.

Signed-off-by: Michal Hocko &lt;mhocko@suse.cz&gt;
Acked-by: David Rientjes &lt;rientjes@google.com&gt;
Acked-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Cc: Oleg Nesterov &lt;oleg@redhat.com&gt;
Cc: Ying Han &lt;yinghan@google.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>backing-dev: ensure wakeup_timer is deleted</title>
<updated>2011-11-11T12:29:04Z</updated>
<author>
<name>Rabin Vincent</name>
<email>rabin.vincent@stericsson.com</email>
</author>
<published>2011-11-11T12:29:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kobert.dev/pm24.git/commit/?id=7a401a972df8e184b3d1a3fc958c0a4ddee8d312'/>
<id>urn:sha1:7a401a972df8e184b3d1a3fc958c0a4ddee8d312</id>
<content type='text'>
bdi_prune_sb() in bdi_unregister() attempts to removes the bdi links
from all super_blocks and then del_timer_sync() the writeback timer.

However, this can race with __mark_inode_dirty(), leading to
bdi_wakeup_thread_delayed() rearming the writeback timer on the bdi
we're unregistering, after we've called del_timer_sync().

This can end up with the bdi being freed with an active timer inside it,
as in the case of the following dump after the removal of an SD card.

Fix this by redoing the del_timer_sync() in bdi_destory().

 ------------[ cut here ]------------
 WARNING: at /home/rabin/kernel/arm/lib/debugobjects.c:262 debug_print_object+0x9c/0xc8()
 ODEBUG: free active (active state 0) object type: timer_list hint: wakeup_timer_fn+0x0/0x180
 Modules linked in:
 Backtrace:
 [&lt;c00109dc&gt;] (dump_backtrace+0x0/0x110) from [&lt;c0236e4c&gt;] (dump_stack+0x18/0x1c)
  r6:c02bc638 r5:00000106 r4:c79f5d18 r3:00000000
 [&lt;c0236e34&gt;] (dump_stack+0x0/0x1c) from [&lt;c0025e6c&gt;] (warn_slowpath_common+0x54/0x6c)
 [&lt;c0025e18&gt;] (warn_slowpath_common+0x0/0x6c) from [&lt;c0025f28&gt;] (warn_slowpath_fmt+0x38/0x40)
  r8:20000013 r7:c780c6f0 r6:c031613c r5:c780c6f0 r4:c02b1b29
 r3:00000009
 [&lt;c0025ef0&gt;] (warn_slowpath_fmt+0x0/0x40) from [&lt;c015eb4c&gt;] (debug_print_object+0x9c/0xc8)
  r3:c02b1b29 r2:c02bc662
 [&lt;c015eab0&gt;] (debug_print_object+0x0/0xc8) from [&lt;c015f574&gt;] (debug_check_no_obj_freed+0xac/0x1dc)
  r6:c7964000 r5:00000001 r4:c7964000
 [&lt;c015f4c8&gt;] (debug_check_no_obj_freed+0x0/0x1dc) from [&lt;c00a9e38&gt;] (kmem_cache_free+0x88/0x1f8)
 [&lt;c00a9db0&gt;] (kmem_cache_free+0x0/0x1f8) from [&lt;c014286c&gt;] (blk_release_queue+0x70/0x78)
 [&lt;c01427fc&gt;] (blk_release_queue+0x0/0x78) from [&lt;c015290c&gt;] (kobject_release+0x70/0x84)
  r5:c79641f0 r4:c796420c
 [&lt;c015289c&gt;] (kobject_release+0x0/0x84) from [&lt;c0153ce4&gt;] (kref_put+0x68/0x80)
  r7:00000083 r6:c74083d0 r5:c015289c r4:c796420c
 [&lt;c0153c7c&gt;] (kref_put+0x0/0x80) from [&lt;c01527d0&gt;] (kobject_put+0x48/0x5c)
  r5:c79643b4 r4:c79641f0
 [&lt;c0152788&gt;] (kobject_put+0x0/0x5c) from [&lt;c013ddd8&gt;] (blk_cleanup_queue+0x68/0x74)
  r4:c7964000
 [&lt;c013dd70&gt;] (blk_cleanup_queue+0x0/0x74) from [&lt;c01a6370&gt;] (mmc_blk_put+0x78/0xe8)
  r5:00000000 r4:c794c400
 [&lt;c01a62f8&gt;] (mmc_blk_put+0x0/0xe8) from [&lt;c01a64b4&gt;] (mmc_blk_release+0x24/0x38)
  r5:c794c400 r4:c0322824
 [&lt;c01a6490&gt;] (mmc_blk_release+0x0/0x38) from [&lt;c00de11c&gt;] (__blkdev_put+0xe8/0x170)
  r5:c78d5e00 r4:c74083c0
 [&lt;c00de034&gt;] (__blkdev_put+0x0/0x170) from [&lt;c00de2c0&gt;] (blkdev_put+0x11c/0x12c)
  r8:c79f5f70 r7:00000001 r6:c74083d0 r5:00000083 r4:c74083c0
 r3:00000000
 [&lt;c00de1a4&gt;] (blkdev_put+0x0/0x12c) from [&lt;c00b0724&gt;] (kill_block_super+0x60/0x6c)
  r7:c7942300 r6:c79f4000 r5:00000083 r4:c74083c0
 [&lt;c00b06c4&gt;] (kill_block_super+0x0/0x6c) from [&lt;c00b0a94&gt;] (deactivate_locked_super+0x44/0x70)
  r6:c79f4000 r5:c031af64 r4:c794dc00 r3:c00b06c4
 [&lt;c00b0a50&gt;] (deactivate_locked_super+0x0/0x70) from [&lt;c00b1358&gt;] (deactivate_super+0x6c/0x70)
  r5:c794dc00 r4:c794dc00
 [&lt;c00b12ec&gt;] (deactivate_super+0x0/0x70) from [&lt;c00c88b0&gt;] (mntput_no_expire+0x188/0x194)
  r5:c794dc00 r4:c7942300
 [&lt;c00c8728&gt;] (mntput_no_expire+0x0/0x194) from [&lt;c00c95e0&gt;] (sys_umount+0x2e4/0x310)
  r6:c7942300 r5:00000000 r4:00000000 r3:00000000
 [&lt;c00c92fc&gt;] (sys_umount+0x0/0x310) from [&lt;c000d940&gt;] (ret_fast_syscall+0x0/0x30)
 ---[ end trace e5c83c92ada51c76 ]---

Cc: stable@kernel.org
Signed-off-by: Rabin Vincent &lt;rabin.vincent@stericsson.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
</feed>
