<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/nilfs2/segment.c, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-03-07T23:05:25Z</updated>
<entry>
<title>nilfs2: fix regression that i-flag is not set on changeless checkpoints</title>
<updated>2011-03-07T23:05:25Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2011-02-28T04:41:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=401f84f1dbc7b01163bd61328acf7e66ce0fbd3e'/>
<id>urn:sha1:401f84f1dbc7b01163bd61328acf7e66ce0fbd3e</id>
<content type='text'>
commit 72746ac643928f6c3113b5aa783d8ea1b13949d2 upstream.

According to the report from Jiro SEKIBA titled "regression in
2.6.37?"  (Message-Id: &lt;8739n8vs1f.wl%jir@sekiba.com&gt;), on 2.6.37 and
later kernels, lscp command no longer displays "i" flag on checkpoints
that snapshot operations or garbage collection created.

This is a regression of nilfs2 checkpointing function, and it's
critical since it broke behavior of a part of nilfs2 applications.
For instance, snapshot manager of TimeBrowse gets to create
meaningless snapshots continuously; snapshot creation triggers another
checkpoint, but applications cannot distinguish whether the new
checkpoint contains meaningful changes or not without the i-flag.

This patch fixes the regression and brings that application behavior
back to normal.

Reported-by: Jiro SEKIBA &lt;jir@unicus.jp&gt;
Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Tested-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Tested-by: Jiro SEKIBA &lt;jir@unicus.jp&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>mm: add account_page_writeback()</title>
<updated>2010-10-26T23:52:06Z</updated>
<author>
<name>Michael Rubin</name>
</author>
<published>2010-10-26T21:21:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f'/>
<id>urn:sha1:f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f</id>
<content type='text'>
To help developers and applications gain visibility into writeback
behaviour this patch adds two counters to /proc/vmstat.

  # grep nr_dirtied /proc/vmstat
  nr_dirtied 3747
  # grep nr_written /proc/vmstat
  nr_written 3618

These entries allow user apps to understand writeback behaviour over time
and learn how it is impacting their performance.  Currently there is no
way to inspect dirty and writeback speed over time.  It's not possible for
nr_dirty/nr_writeback.

These entries are necessary to give visibility into writeback behaviour.
We have /proc/diskstats which lets us understand the io in the block
layer.  We have blktrace for more in depth understanding.  We have
e2fsprogs and debugsfs to give insight into the file systems behaviour,
but we don't offer our users the ability understand what writeback is
doing.  There is no way to know how active it is over the whole system, if
it's falling behind or to quantify it's efforts.  With these values
exported users can easily see how much data applications are sending
through writeback and also at what rates writeback is processing this
data.  Comparing the rates of change between the two allow developers to
see when writeback is not able to keep up with incoming traffic and the
rate of dirty memory being sent to the IO back end.  This allows folks to
understand their io workloads and track kernel issues.  Non kernel
engineers at Google often use these counters to solve puzzling performance
problems.

Patch #4 adds a pernode vmstat file with nr_dirtied and nr_written

Patch #5 add writeback thresholds to /proc/vmstat

Currently these values are in debugfs. But they should be promoted to
/proc since they are useful for developers who are writing databases
and file servers and are not debugging the kernel.

The output is as below:

 # grep threshold /proc/vmstat
 nr_pages_dirty_threshold 409111
 nr_pages_dirty_background_threshold 818223

This patch:

This allows code outside of the mm core to safely manipulate page
writeback state and not worry about the other accounting.  Not using these
routines means that some code will lose track of the accounting and we get
bugs.

Modify nilfs2 to use interface.

Signed-off-by: Michael Rubin &lt;mrubin@google.com&gt;
Reviewed-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Reviewed-by: Wu Fengguang &lt;fengguang.wu@intel.com&gt;
Cc: KONISHI Ryusuke &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Cc: Jiro SEKIBA &lt;jir@unicus.jp&gt;
Cc: Dave Chinner &lt;david@fromorbit.com&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&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>nilfs2: eliminate sparse warning - "context imbalance"</title>
<updated>2010-10-23T00:24:40Z</updated>
<author>
<name>Jiro SEKIBA</name>
</author>
<published>2010-10-14T04:52:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6b81e14e645016597c81e71cd27ee5c57c3a3c36'/>
<id>urn:sha1:6b81e14e645016597c81e71cd27ee5c57c3a3c36</id>
<content type='text'>
insert sparse annotations to fix following sparse warning.

fs/nilfs2/segment.c:2681:3: warning: context imbalance in 'nilfs_segctor_kill_thread' - unexpected unlock

nilfs_segctor_kill_thread is only called inside sc_state_lock lock.
sparse doesn't detect the context and warn "unexpected unlock".
__acquires/__releases pretend to lock/unlock the sc_state_lock for sparse.

Signed-off-by: Jiro SEKIBA &lt;jir@unicus.jp&gt;
Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: add bdev freeze/thaw support</title>
<updated>2010-10-23T00:24:39Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-09-20T09:19:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5beb6e0b2008386571fd342d0a4a14f5c8c0baf8'/>
<id>urn:sha1:5beb6e0b2008386571fd342d0a4a14f5c8c0baf8</id>
<content type='text'>
Nilfs hasn't supported the freeze/thaw feature because it didn't work
due to the peculiar design that multiple super block instances could
be allocated for a device.  This limitation was removed by the patch
"nilfs2: do not allocate multiple super block instances for a device".

So now this adds the freeze/thaw support to nilfs.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: get rid of back pointer to writable sb instance</title>
<updated>2010-10-23T00:24:38Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-09-05T07:17:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=090fd5b10165033d7c30afde0a7e59141d820602'/>
<id>urn:sha1:090fd5b10165033d7c30afde0a7e59141d820602</id>
<content type='text'>
Nilfs object holds a back pointer to a writable super block instance
in nilfs-&gt;ns_writer, and this became eliminable since sb is now made
per device and all inodes have a valid pointer to it.

This deletes the ns_writer pointer and a reader/writer semaphore
protecting it.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: get rid of GCDAT inode</title>
<updated>2010-10-23T00:24:38Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-08-29T03:44:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c1c1d7092072093ad960db2f6c08f06705c57fa4'/>
<id>urn:sha1:c1c1d7092072093ad960db2f6c08f06705c57fa4</id>
<content type='text'>
This applies prepared rollback function and redirect function of
metadata file to DAT file, and eliminates GCDAT inode.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: add routines to redirect access to buffers of DAT file</title>
<updated>2010-10-23T00:24:37Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-08-31T02:40:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b1f6a4f294088b3fcf9ae67915ca550a1ded2819'/>
<id>urn:sha1:b1f6a4f294088b3fcf9ae67915ca550a1ded2819</id>
<content type='text'>
During garbage collection (GC), DAT file, which converts virtual block
number to real block number, may return disk block number that is not
yet written to the device.

To avoid access to unwritten blocks, the current implementation stores
changes to the caches of GCDAT during GC and atomically commit the
changes into the DAT file after they are written to the device.

This patch, instead, adds a function that makes a copy of specified
buffer and stores it in nilfs_shadow_map, and a function to get the
backup copy as needed (nilfs_mdt_freeze_buffer and
nilfs_mdt_get_frozen_buffer respectively).

Before DAT changes block number in an entry block, it makes a copy and
redirect access to the buffer so that address conversion function
(i.e. nilfs_dat_translate) refers to the old address saved in the
copy.

This patch gives requisites for such redirection.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: move inode count and block count into root object</title>
<updated>2010-10-23T00:24:35Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-08-14T05:48:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b7c0634204993d7c6678c852e4bd118426599111'/>
<id>urn:sha1:b7c0634204993d7c6678c852e4bd118426599111</id>
<content type='text'>
This moves sbi-&gt;s_inodes_count and sbi-&gt;s_blocks_count into nilfs_root
object.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: use root object to get ifile</title>
<updated>2010-10-23T00:24:35Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-08-14T04:07:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e912a5b66837ee89fb025e67b5efeaa11930c2ce'/>
<id>urn:sha1:e912a5b66837ee89fb025e67b5efeaa11930c2ce</id>
<content type='text'>
This rewrites functions using ifile so that they get ifile from
nilfs_root object, and will remove sbi-&gt;s_ifile.  Some functions that
don't know the root object are extended to receive it from caller.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
<entry>
<title>nilfs2: remove own inode hash used for GC</title>
<updated>2010-10-23T00:24:34Z</updated>
<author>
<name>Ryusuke Konishi</name>
</author>
<published>2010-08-20T10:06:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=263d90cefc7d82a01c296c59532ff59d67c63509'/>
<id>urn:sha1:263d90cefc7d82a01c296c59532ff59d67c63509</id>
<content type='text'>
This uses inode hash function that vfs provides instead of the own
hash table for caching gc inodes.  This finally removes the own inode
hash from nilfs.

Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
</content>
</entry>
</feed>
