<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/buffer.c, branch v2.6.19</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/buffer.c?h=v2.6.19</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/buffer.c?h=v2.6.19'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2006-10-17T15:18:46Z</updated>
<entry>
<title>[PATCH] Fix IO error reporting on fsync()</title>
<updated>2006-10-17T15:18:46Z</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2006-10-17T07:10:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=58ff407bee5a55f9c1188a3f9d70ffc79485183c'/>
<id>urn:sha1:58ff407bee5a55f9c1188a3f9d70ffc79485183c</id>
<content type='text'>
When IO error happens on metadata buffer, buffer is freed from memory and
later fsync() is called, filesystems like ext2 fail to report EIO.  We

solve the problem by introducing a pointer to associated address space into
the buffer_head.  When a buffer is removed from a list of metadata buffers
associated with an address space, IO error is transferred from the buffer to
the address space, so that fsync can later report it.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] D-cache aliasing issue in __block_prepare_write</title>
<updated>2006-10-11T18:14:23Z</updated>
<author>
<name>Monakhov Dmitriy</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2006-10-11T08:22:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8c58165108e26d18849a0138c719e680f281197a'/>
<id>urn:sha1:8c58165108e26d18849a0138c719e680f281197a</id>
<content type='text'>
A couple of flush_dcache_page()s are missing on the I/O-error paths.

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] grow_buffers() infinite loop fix</title>
<updated>2006-10-11T18:14:21Z</updated>
<author>
<name>Andrew Morton</name>
<email>akpm@osdl.org</email>
</author>
<published>2006-10-11T08:21:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e5657933863f43cc6bb76a54d659303dafaa9e58'/>
<id>urn:sha1:e5657933863f43cc6bb76a54d659303dafaa9e58</id>
<content type='text'>
If grow_buffers() is for some reason passed a block number which wants to lie
outside the maximum-addressable pagecache range (PAGE_SIZE * 4G bytes) then it
will accidentally truncate `index' and will then instnatiate a page at the
wrong pagecache offset.  This causes __getblk_slow() to go into an infinite
loop.

This can happen with corrupted disks, or with software errors elsewhere.

Detect that, and handle it.

Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] mm: bug in set_page_dirty_buffers</title>
<updated>2006-10-10T02:51:18Z</updated>
<author>
<name>Nick Piggin</name>
<email>npiggin@suse.de</email>
</author>
<published>2006-10-10T02:36:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ebf7a227dd1d810203a19642655d2fa293f395dd'/>
<id>urn:sha1:ebf7a227dd1d810203a19642655d2fa293f395dd</id>
<content type='text'>
This was triggered, but not the fault of, the dirty page accounting
patches. Suitable for -stable as well, after it goes upstream.

  Unable to handle kernel NULL pointer dereference at virtual address 0000004c
  EIP is at _spin_lock+0x12/0x66
  Call Trace:
   [&lt;401766e7&gt;] __set_page_dirty_buffers+0x15/0xc0
   [&lt;401401e7&gt;] set_page_dirty+0x2c/0x51
   [&lt;40140db2&gt;] set_page_dirty_balance+0xb/0x3b
   [&lt;40145d29&gt;] __do_fault+0x1d8/0x279
   [&lt;40147059&gt;] __handle_mm_fault+0x125/0x951
   [&lt;401133f1&gt;] do_page_fault+0x440/0x59f
   [&lt;4034d0c1&gt;] error_code+0x39/0x40
   [&lt;08048a33&gt;] 0x8048a33

Signed-off-by: Nick Piggin &lt;npiggin@suse.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] BLOCK: Move functions out of buffer code [try #6]</title>
<updated>2006-09-30T18:31:19Z</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2006-08-29T18:05:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cf9a2ae8d49948f861b56e5333530e491a9da190'/>
<id>urn:sha1:cf9a2ae8d49948f861b56e5333530e491a9da190</id>
<content type='text'>
Move some functions out of the buffering code that aren't strictly buffering
specific.  This is a precursor to being able to disable the block layer.

 (*) Moved some stuff out of fs/buffer.c:

     (*) The file sync and general sync stuff moved to fs/sync.c.

     (*) The superblock sync stuff moved to fs/super.c.

     (*) do_invalidatepage() moved to mm/truncate.c.

     (*) try_to_release_page() moved to mm/filemap.c.

 (*) Moved some related declarations between header files:

     (*) declarations for do_invalidatepage() and try_to_release_page() moved
     	 to linux/mm.h.

     (*) __set_page_dirty_buffers() moved to linux/buffer_head.h.

Signed-Off-By: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;
</content>
</entry>
<entry>
<title>[PATCH] mm: tracking shared dirty pages</title>
<updated>2006-09-26T15:48:44Z</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2006-09-26T06:30:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d08b3851da41d0ee60851f2c75b118e1f7a5fc89'/>
<id>urn:sha1:d08b3851da41d0ee60851f2c75b118e1f7a5fc89</id>
<content type='text'>
Tracking of dirty pages in shared writeable mmap()s.

The idea is simple: write protect clean shared writeable pages, catch the
write-fault, make writeable and set dirty.  On page write-back clean all the
PTE dirty bits and write protect them once again.

The implementation is a tad harder, mainly because the default
backing_dev_info capabilities were too loosely maintained.  Hence it is not
enough to test the backing_dev_info for cap_account_dirty.

The current heuristic is as follows, a VMA is eligible when:
 - its shared writeable
    (vm_flags &amp; (VM_WRITE|VM_SHARED)) == (VM_WRITE|VM_SHARED)
 - it is not a 'special' mapping
    (vm_flags &amp; (VM_PFNMAP|VM_INSERTPAGE)) == 0
 - the backing_dev_info is cap_account_dirty
    mapping_cap_account_dirty(vma-&gt;vm_file-&gt;f_mapping)
 - f_op-&gt;mmap() didn't change the default page protection

Page from remap_pfn_range() are explicitly excluded because their COW
semantics are already horrid enough (see vm_normal_page() in do_wp_page()) and
because they don't have a backing store anyway.

mprotect() is taught about the new behaviour as well.  However it overrides
the last condition.

Cleaning the pages on write-back is done with page_mkclean() a new rmap call.
It can be called on any page, but is currently only implemented for mapped
pages, if the page is found the be of a VMA that accounts dirty pages it will
also wrprotect the PTE.

Finally, in fs/buffers.c:try_to_free_buffers(); remove clear_page_dirty() from
under -&gt;private_lock.  This seems to be safe, since -&gt;private_lock is used to
serialize access to the buffers, not the page itself.  This is needed because
clear_page_dirty() will call into page_mkclean() and would thereby violate
locking order.

[dhowells@redhat.com: Provide a page_mkclean() implementation for NOMMU]
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Hugh Dickins &lt;hugh@veritas.com&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] invalidate_bdev() speedup</title>
<updated>2006-07-31T20:28:38Z</updated>
<author>
<name>Andrew Morton</name>
<email>akpm@osdl.org</email>
</author>
<published>2006-07-30T10:03:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0e1dfc66b6ec94984a4778132147a8aa36461d58'/>
<id>urn:sha1:0e1dfc66b6ec94984a4778132147a8aa36461d58</id>
<content type='text'>
We can immediately bail from invalidate_bdev() if the blockdev has no
pagecache.

This solves the huge IPI storms which hald is causing on the big ia64
machines when it polls CDROM drives.

Acked-by: Jes Sorensen &lt;jes@sgi.com&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial</title>
<updated>2006-06-30T22:39:30Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@g5.osdl.org</email>
</author>
<published>2006-06-30T22:39:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13'/>
<id>urn:sha1:22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13</id>
<content type='text'>
* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:
  Remove obsolete #include &lt;linux/config.h&gt;
  remove obsolete swsusp_encrypt
  arch/arm26/Kconfig typos
  Documentation/IPMI typos
  Kconfig: Typos in net/sched/Kconfig
  v9fs: do not include linux/version.h
  Documentation/DocBook/mtdnand.tmpl: typo fixes
  typo fixes: specfic -&gt; specific
  typo fixes in Documentation/networking/pktgen.txt
  typo fixes: occuring -&gt; occurring
  typo fixes: infomation -&gt; information
  typo fixes: disadvantadge -&gt; disadvantage
  typo fixes: aquire -&gt; acquire
  typo fixes: mecanism -&gt; mechanism
  typo fixes: bandwith -&gt; bandwidth
  fix a typo in the RTC_CLASS help text
  smb is no longer maintained

Manually merged trivial conflict in arch/um/kernel/vmlinux.lds.S
</content>
</entry>
<entry>
<title>[PATCH] zoned vm counters: conversion of nr_dirty to per zone counter</title>
<updated>2006-06-30T18:25:35Z</updated>
<author>
<name>Christoph Lameter</name>
<email>clameter@sgi.com</email>
</author>
<published>2006-06-30T08:55:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b1e7a8fd854d2f895730e82137400012b509650e'/>
<id>urn:sha1:b1e7a8fd854d2f895730e82137400012b509650e</id>
<content type='text'>
This makes nr_dirty a per zone counter.  Looping over all processors is
avoided during writeback state determination.

The counter aggregation for nr_dirty had to be undone in the NFS layer since
we summed up the page counts from multiple zones.  Someone more familiar with
NFS should probably review what I have done.

[akpm@osdl.org: bugfix]
Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>Remove obsolete #include &lt;linux/config.h&gt;</title>
<updated>2006-06-30T17:25:36Z</updated>
<author>
<name>Jörn Engel</name>
<email>joern@wohnheim.fh-wedel.de</email>
</author>
<published>2006-06-30T17:25:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6ab3d5624e172c553004ecc862bfeac16d9d68b7'/>
<id>urn:sha1:6ab3d5624e172c553004ecc862bfeac16d9d68b7</id>
<content type='text'>
Signed-off-by: Jörn Engel &lt;joern@wohnheim.fh-wedel.de&gt;
Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
</content>
</entry>
</feed>
