<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/fs/f2fs, branch v4.6.2</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>f2fs: fix deadlock when flush inline data</title>
<updated>2016-06-08T01:23:32+00:00</updated>
<author>
<name>Chao Yu</name>
<email>yuchao0@huawei.com</email>
</author>
<published>2016-05-11T11:48:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0e4c51d2532cc6fd1ff858365e893f2f39aa26b4'/>
<id>0e4c51d2532cc6fd1ff858365e893f2f39aa26b4</id>
<content type='text'>
commit ab47036d8f7227361cad7894adee8e66ab6f95b2 upstream.

Below backtrace info was reported by Yunlei He:

Call Trace:
 [&lt;ffffffff817a9395&gt;] schedule+0x35/0x80
 [&lt;ffffffff817abb7d&gt;] rwsem_down_read_failed+0xed/0x130
 [&lt;ffffffff813c12a8&gt;] call_rwsem_down_read_failed+0x18/0x
 [&lt;ffffffff817ab1d0&gt;] down_read+0x20/0x30
 [&lt;ffffffffa02a1a12&gt;] f2fs_evict_inode+0x242/0x3a0 [f2fs]
 [&lt;ffffffff81217057&gt;] evict+0xc7/0x1a0
 [&lt;ffffffff81217cd6&gt;] iput+0x196/0x200
 [&lt;ffffffff812134f9&gt;] __dentry_kill+0x179/0x1e0
 [&lt;ffffffff812136f9&gt;] dput+0x199/0x1f0
 [&lt;ffffffff811fe77b&gt;] __fput+0x18b/0x220
 [&lt;ffffffff811fe84e&gt;] ____fput+0xe/0x10
 [&lt;ffffffff81097427&gt;] task_work_run+0x77/0x90
 [&lt;ffffffff81074d62&gt;] exit_to_usermode_loop+0x73/0xa2
 [&lt;ffffffff81003b7a&gt;] do_syscall_64+0xfa/0x110
 [&lt;ffffffff817acf65&gt;] entry_SYSCALL64_slow_path+0x25/0x25

Call Trace:
 [&lt;ffffffff817a9395&gt;] schedule+0x35/0x80
 [&lt;ffffffff81216dc3&gt;] __wait_on_freeing_inode+0xa3/0xd0
 [&lt;ffffffff810bc300&gt;] ? autoremove_wake_function+0x40/0x4
 [&lt;ffffffff8121771d&gt;] find_inode_fast+0x7d/0xb0
 [&lt;ffffffff8121794a&gt;] ilookup+0x6a/0xd0
 [&lt;ffffffffa02bc740&gt;] sync_node_pages+0x210/0x650 [f2fs]
 [&lt;ffffffff8122e690&gt;] ? do_fsync+0x70/0x70
 [&lt;ffffffffa02b085e&gt;] block_operations+0x9e/0xf0 [f2fs]
 [&lt;ffffffff8137b795&gt;] ? bio_endio+0x55/0x60
 [&lt;ffffffffa02b0942&gt;] write_checkpoint+0x92/0xba0 [f2fs]
 [&lt;ffffffff8117da57&gt;] ? mempool_free_slab+0x17/0x20
 [&lt;ffffffff8117de8b&gt;] ? mempool_free+0x2b/0x80
 [&lt;ffffffff8122e690&gt;] ? do_fsync+0x70/0x70
 [&lt;ffffffffa02a53e3&gt;] f2fs_sync_fs+0x63/0xd0 [f2fs]
 [&lt;ffffffff8129630f&gt;] ? ext4_sync_fs+0xbf/0x190
 [&lt;ffffffff8122e6b0&gt;] sync_fs_one_sb+0x20/0x30
 [&lt;ffffffff812002e9&gt;] iterate_supers+0xb9/0x110
 [&lt;ffffffff8122e7b5&gt;] sys_sync+0x55/0x90
 [&lt;ffffffff81003ae9&gt;] do_syscall_64+0x69/0x110
 [&lt;ffffffff817acf65&gt;] entry_SYSCALL64_slow_path+0x25/0x25

With following excuting serials, we will set inline_node in inode page
after inode was unlinked, result in a deadloop described as below:
1. open file
2. write file
3. unlink file
4. write file
5. close file

Thread A				Thread B
 - dput
  - iput_final
   - inode-&gt;i_state |= I_FREEING
   - evict
    - f2fs_evict_inode
					 - f2fs_sync_fs
					  - write_checkpoint
					   - block_operations
					    - f2fs_lock_all (down_write(cp_rwsem))
     - f2fs_lock_op (down_read(cp_rwsem))
					    - sync_node_pages
					     - ilookup
					      - find_inode_fast
					       - __wait_on_freeing_inode
					         (wait on I_FREEING clear)

Here, we change to set inline_node flag only for linked inode for fixing.

Reported-by: Yunlei He &lt;heyunlei@huawei.com&gt;
Signed-off-by: Chao Yu &lt;yuchao0@huawei.com&gt;
Tested-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ab47036d8f7227361cad7894adee8e66ab6f95b2 upstream.

Below backtrace info was reported by Yunlei He:

Call Trace:
 [&lt;ffffffff817a9395&gt;] schedule+0x35/0x80
 [&lt;ffffffff817abb7d&gt;] rwsem_down_read_failed+0xed/0x130
 [&lt;ffffffff813c12a8&gt;] call_rwsem_down_read_failed+0x18/0x
 [&lt;ffffffff817ab1d0&gt;] down_read+0x20/0x30
 [&lt;ffffffffa02a1a12&gt;] f2fs_evict_inode+0x242/0x3a0 [f2fs]
 [&lt;ffffffff81217057&gt;] evict+0xc7/0x1a0
 [&lt;ffffffff81217cd6&gt;] iput+0x196/0x200
 [&lt;ffffffff812134f9&gt;] __dentry_kill+0x179/0x1e0
 [&lt;ffffffff812136f9&gt;] dput+0x199/0x1f0
 [&lt;ffffffff811fe77b&gt;] __fput+0x18b/0x220
 [&lt;ffffffff811fe84e&gt;] ____fput+0xe/0x10
 [&lt;ffffffff81097427&gt;] task_work_run+0x77/0x90
 [&lt;ffffffff81074d62&gt;] exit_to_usermode_loop+0x73/0xa2
 [&lt;ffffffff81003b7a&gt;] do_syscall_64+0xfa/0x110
 [&lt;ffffffff817acf65&gt;] entry_SYSCALL64_slow_path+0x25/0x25

Call Trace:
 [&lt;ffffffff817a9395&gt;] schedule+0x35/0x80
 [&lt;ffffffff81216dc3&gt;] __wait_on_freeing_inode+0xa3/0xd0
 [&lt;ffffffff810bc300&gt;] ? autoremove_wake_function+0x40/0x4
 [&lt;ffffffff8121771d&gt;] find_inode_fast+0x7d/0xb0
 [&lt;ffffffff8121794a&gt;] ilookup+0x6a/0xd0
 [&lt;ffffffffa02bc740&gt;] sync_node_pages+0x210/0x650 [f2fs]
 [&lt;ffffffff8122e690&gt;] ? do_fsync+0x70/0x70
 [&lt;ffffffffa02b085e&gt;] block_operations+0x9e/0xf0 [f2fs]
 [&lt;ffffffff8137b795&gt;] ? bio_endio+0x55/0x60
 [&lt;ffffffffa02b0942&gt;] write_checkpoint+0x92/0xba0 [f2fs]
 [&lt;ffffffff8117da57&gt;] ? mempool_free_slab+0x17/0x20
 [&lt;ffffffff8117de8b&gt;] ? mempool_free+0x2b/0x80
 [&lt;ffffffff8122e690&gt;] ? do_fsync+0x70/0x70
 [&lt;ffffffffa02a53e3&gt;] f2fs_sync_fs+0x63/0xd0 [f2fs]
 [&lt;ffffffff8129630f&gt;] ? ext4_sync_fs+0xbf/0x190
 [&lt;ffffffff8122e6b0&gt;] sync_fs_one_sb+0x20/0x30
 [&lt;ffffffff812002e9&gt;] iterate_supers+0xb9/0x110
 [&lt;ffffffff8122e7b5&gt;] sys_sync+0x55/0x90
 [&lt;ffffffff81003ae9&gt;] do_syscall_64+0x69/0x110
 [&lt;ffffffff817acf65&gt;] entry_SYSCALL64_slow_path+0x25/0x25

With following excuting serials, we will set inline_node in inode page
after inode was unlinked, result in a deadloop described as below:
1. open file
2. write file
3. unlink file
4. write file
5. close file

Thread A				Thread B
 - dput
  - iput_final
   - inode-&gt;i_state |= I_FREEING
   - evict
    - f2fs_evict_inode
					 - f2fs_sync_fs
					  - write_checkpoint
					   - block_operations
					    - f2fs_lock_all (down_write(cp_rwsem))
     - f2fs_lock_op (down_read(cp_rwsem))
					    - sync_node_pages
					     - ilookup
					      - find_inode_fast
					       - __wait_on_freeing_inode
					         (wait on I_FREEING clear)

Here, we change to set inline_node flag only for linked inode for fixing.

Reported-by: Yunlei He &lt;heyunlei@huawei.com&gt;
Signed-off-by: Chao Yu &lt;yuchao0@huawei.com&gt;
Tested-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>fscrypto/f2fs: allow fs-specific key prefix for fs encryption</title>
<updated>2016-06-01T19:17:59+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-05-05T05:05:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ea27481a427ee75cb77088b785ae8591eb74870c'/>
<id>ea27481a427ee75cb77088b785ae8591eb74870c</id>
<content type='text'>
commit b5a7aef1ef436ec005fef0efe31a676ec5f4ab31 upstream.

This patch allows fscrypto to handle a second key prefix given by filesystem.
The main reason is to provide backward compatibility, since previously f2fs
used "f2fs:" as a crypto prefix instead of "fscrypt:".
Later, ext4 should also provide key_prefix() to give "ext4:".

One concern decribed by Ted would be kinda double check overhead of prefixes.
In x86, for example, validate_user_key consumes 8 ms after boot-up, which turns
out derive_key_aes() consumed most of the time to load specific crypto module.
After such the cold miss, it shows almost zero latencies, which treats as a
negligible overhead.
Note that request_key() detects wrong prefix in prior to derive_key_aes() even.

Cc: Ted Tso &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b5a7aef1ef436ec005fef0efe31a676ec5f4ab31 upstream.

This patch allows fscrypto to handle a second key prefix given by filesystem.
The main reason is to provide backward compatibility, since previously f2fs
used "f2fs:" as a crypto prefix instead of "fscrypt:".
Later, ext4 should also provide key_prefix() to give "ext4:".

One concern decribed by Ted would be kinda double check overhead of prefixes.
In x86, for example, validate_user_key consumes 8 ms after boot-up, which turns
out derive_key_aes() consumed most of the time to load specific crypto module.
After such the cold miss, it shows almost zero latencies, which treats as a
negligible overhead.
Note that request_key() detects wrong prefix in prior to derive_key_aes() even.

Cc: Ted Tso &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>fscrypto: don't let data integrity writebacks fail with ENOMEM</title>
<updated>2016-04-12T17:25:30+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-04-11T22:51:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b32e4482aadfd1322357f46d4ed8a990603664d9'/>
<id>b32e4482aadfd1322357f46d4ed8a990603664d9</id>
<content type='text'>
This patch fixes the issue introduced by the ext4 crypto fix in a same manner.
For F2FS, however, we flush the pending IOs and wait for a while to acquire free
memory.

Fixes: c9af28fdd4492 ("ext4 crypto: don't let data integrity writebacks fail with ENOMEM")
Cc: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the issue introduced by the ext4 crypto fix in a same manner.
For F2FS, however, we flush the pending IOs and wait for a while to acquire free
memory.

Fixes: c9af28fdd4492 ("ext4 crypto: don't let data integrity writebacks fail with ENOMEM")
Cc: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: use dget_parent and file_dentry in f2fs_file_open</title>
<updated>2016-04-12T17:24:22+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-04-11T22:15:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=33b1395124c63ed4a42e33c1dd14859f9b3f29c2'/>
<id>33b1395124c63ed4a42e33c1dd14859f9b3f29c2</id>
<content type='text'>
This patch synced with the below two ext4 crypto fixes together.

In 4.6-rc1, f2fs newly introduced accessing f_path.dentry which crashes
overlayfs. To fix, now we need to use file_dentry() to access that field.

Fixes: c0a37d487884 ("ext4: use file_dentry()")
Fixes: 9dd78d8c9a7b ("ext4: use dget_parent() in ext4_file_open()")
Cc: Miklos Szeredi &lt;mszeredi@redhat.com&gt;
Cc: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch synced with the below two ext4 crypto fixes together.

In 4.6-rc1, f2fs newly introduced accessing f_path.dentry which crashes
overlayfs. To fix, now we need to use file_dentry() to access that field.

Fixes: c0a37d487884 ("ext4: use file_dentry()")
Fixes: 9dd78d8c9a7b ("ext4: use dget_parent() in ext4_file_open()")
Cc: Miklos Szeredi &lt;mszeredi@redhat.com&gt;
Cc: Theodore Ts'o &lt;tytso@mit.edu&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'f2fs-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs</title>
<updated>2016-04-04T20:00:39+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-04-04T20:00:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c7e82c648598b6fc8aa65b4bb99b55b6dd23faad'/>
<id>c7e82c648598b6fc8aa65b4bb99b55b6dd23faad</id>
<content type='text'>
Pull f2fs fixes from Jaegeuk Kim.

* tag 'f2fs-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs:
  f2fs: retrieve IO write stat from the right place
  f2fs crypto: fix corrupted symlink in encrypted case
  f2fs: cover large section in sanity check of super
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull f2fs fixes from Jaegeuk Kim.

* tag 'f2fs-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs:
  f2fs: retrieve IO write stat from the right place
  f2fs crypto: fix corrupted symlink in encrypted case
  f2fs: cover large section in sanity check of super
</pre>
</div>
</content>
</entry>
<entry>
<title>mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros</title>
<updated>2016-04-04T17:41:08+00:00</updated>
<author>
<name>Kirill A. Shutemov</name>
<email>kirill.shutemov@linux.intel.com</email>
</author>
<published>2016-04-01T12:29:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a'/>
<id>09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a</id>
<content type='text'>
PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
ago with promise that one day it will be possible to implement page
cache with bigger chunks than PAGE_SIZE.

This promise never materialized.  And unlikely will.

We have many places where PAGE_CACHE_SIZE assumed to be equal to
PAGE_SIZE.  And it's constant source of confusion on whether
PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
especially on the border between fs and mm.

Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
breakage to be doable.

Let's stop pretending that pages in page cache are special.  They are
not.

The changes are pretty straight-forward:

 - &lt;foo&gt; &lt;&lt; (PAGE_CACHE_SHIFT - PAGE_SHIFT) -&gt; &lt;foo&gt;;

 - &lt;foo&gt; &gt;&gt; (PAGE_CACHE_SHIFT - PAGE_SHIFT) -&gt; &lt;foo&gt;;

 - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -&gt; PAGE_{SIZE,SHIFT,MASK,ALIGN};

 - page_cache_get() -&gt; get_page();

 - page_cache_release() -&gt; put_page();

This patch contains automated changes generated with coccinelle using
script below.  For some reason, coccinelle doesn't patch header files.
I've called spatch for them manually.

The only adjustment after coccinelle is revert of changes to
PAGE_CAHCE_ALIGN definition: we are going to drop it later.

There are few places in the code where coccinelle didn't reach.  I'll
fix them manually in a separate patch.  Comments and documentation also
will be addressed with the separate patch.

virtual patch

@@
expression E;
@@
- E &lt;&lt; (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
expression E;
@@
- E &gt;&gt; (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
@@
- PAGE_CACHE_SHIFT
+ PAGE_SHIFT

@@
@@
- PAGE_CACHE_SIZE
+ PAGE_SIZE

@@
@@
- PAGE_CACHE_MASK
+ PAGE_MASK

@@
expression E;
@@
- PAGE_CACHE_ALIGN(E)
+ PAGE_ALIGN(E)

@@
expression E;
@@
- page_cache_get(E)
+ get_page(E)

@@
expression E;
@@
- page_cache_release(E)
+ put_page(E)

Signed-off-by: Kirill A. Shutemov &lt;kirill.shutemov@linux.intel.com&gt;
Acked-by: Michal Hocko &lt;mhocko@suse.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
ago with promise that one day it will be possible to implement page
cache with bigger chunks than PAGE_SIZE.

This promise never materialized.  And unlikely will.

We have many places where PAGE_CACHE_SIZE assumed to be equal to
PAGE_SIZE.  And it's constant source of confusion on whether
PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
especially on the border between fs and mm.

Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
breakage to be doable.

Let's stop pretending that pages in page cache are special.  They are
not.

The changes are pretty straight-forward:

 - &lt;foo&gt; &lt;&lt; (PAGE_CACHE_SHIFT - PAGE_SHIFT) -&gt; &lt;foo&gt;;

 - &lt;foo&gt; &gt;&gt; (PAGE_CACHE_SHIFT - PAGE_SHIFT) -&gt; &lt;foo&gt;;

 - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -&gt; PAGE_{SIZE,SHIFT,MASK,ALIGN};

 - page_cache_get() -&gt; get_page();

 - page_cache_release() -&gt; put_page();

This patch contains automated changes generated with coccinelle using
script below.  For some reason, coccinelle doesn't patch header files.
I've called spatch for them manually.

The only adjustment after coccinelle is revert of changes to
PAGE_CAHCE_ALIGN definition: we are going to drop it later.

There are few places in the code where coccinelle didn't reach.  I'll
fix them manually in a separate patch.  Comments and documentation also
will be addressed with the separate patch.

virtual patch

@@
expression E;
@@
- E &lt;&lt; (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
expression E;
@@
- E &gt;&gt; (PAGE_CACHE_SHIFT - PAGE_SHIFT)
+ E

@@
@@
- PAGE_CACHE_SHIFT
+ PAGE_SHIFT

@@
@@
- PAGE_CACHE_SIZE
+ PAGE_SIZE

@@
@@
- PAGE_CACHE_MASK
+ PAGE_MASK

@@
expression E;
@@
- PAGE_CACHE_ALIGN(E)
+ PAGE_ALIGN(E)

@@
expression E;
@@
- page_cache_get(E)
+ get_page(E)

@@
expression E;
@@
- page_cache_release(E)
+ put_page(E)

Signed-off-by: Kirill A. Shutemov &lt;kirill.shutemov@linux.intel.com&gt;
Acked-by: Michal Hocko &lt;mhocko@suse.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: retrieve IO write stat from the right place</title>
<updated>2016-03-30T20:21:16+00:00</updated>
<author>
<name>Shuoran Liu</name>
<email>liushuoran@huawei.com</email>
</author>
<published>2016-03-29T10:00:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b2dde6fca37e947628b82ae8f35e183ff112d07c'/>
<id>b2dde6fca37e947628b82ae8f35e183ff112d07c</id>
<content type='text'>
In the following patch,

    f2fs: split journal cache from curseg cache

journal cache is split from curseg cache. So IO write statistics should be
retrived from journal cache but not curseg-&gt;sum_blk. Otherwise, it will
get 0, and the stat is lost.

Signed-off-by: Shuoran Liu &lt;liushuoran@huawei.com&gt;
Reviewed-by: Chao Yu &lt;chao@kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the following patch,

    f2fs: split journal cache from curseg cache

journal cache is split from curseg cache. So IO write statistics should be
retrived from journal cache but not curseg-&gt;sum_blk. Otherwise, it will
get 0, and the stat is lost.

Signed-off-by: Shuoran Liu &lt;liushuoran@huawei.com&gt;
Reviewed-by: Chao Yu &lt;chao@kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs crypto: fix corrupted symlink in encrypted case</title>
<updated>2016-03-30T20:21:15+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-03-30T20:13:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c90e09f7fb498f81cd4e8bb6460d3a26ccebeca3'/>
<id>c90e09f7fb498f81cd4e8bb6460d3a26ccebeca3</id>
<content type='text'>
In the encrypted symlink case, we should check its corrupted symname after
decrypting it.
Otherwise, we can report -ENOENT incorrectly, if encrypted symname starts with
'\0'.

Cc: stable 4.5+ &lt;stable@vger.kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the encrypted symlink case, we should check its corrupted symname after
decrypting it.
Otherwise, we can report -ENOENT incorrectly, if encrypted symname starts with
'\0'.

Cc: stable 4.5+ &lt;stable@vger.kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: cover large section in sanity check of super</title>
<updated>2016-03-28T17:43:01+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-03-20T22:33:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fd694733d523df1e0a583cf5c4c08e41d7bf9fa3'/>
<id>fd694733d523df1e0a583cf5c4c08e41d7bf9fa3</id>
<content type='text'>
This patch fixes the bug which does not cover a large section case when checking
the sanity of superblock.
If f2fs detects misalignment, it will fix the superblock during the mount time,
so it doesn't need to trigger fsck.f2fs further.

Reported-by: Matthias Prager &lt;linux@matthiasprager.de&gt;
Reported-by: David Gnedt &lt;david.gnedt@davizone.at&gt;
Cc: stable 4.5+ &lt;stable@vger.kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the bug which does not cover a large section case when checking
the sanity of superblock.
If f2fs detects misalignment, it will fix the superblock during the mount time,
so it doesn't need to trigger fsck.f2fs further.

Reported-by: Matthias Prager &lt;linux@matthiasprager.de&gt;
Reported-by: David Gnedt &lt;david.gnedt@davizone.at&gt;
Cc: stable 4.5+ &lt;stable@vger.kernel.org&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: submit node page write bios when really required</title>
<updated>2016-03-18T04:19:47+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-03-11T23:33:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=12bb0a8fd47e6020a7b52dc283a2d855f03d6ef5'/>
<id>12bb0a8fd47e6020a7b52dc283a2d855f03d6ef5</id>
<content type='text'>
If many threads calls fsync with data writes, we don't need to flush every
bios having node page writes.
The f2fs_wait_on_page_writeback will flush its bios when the page is really
needed.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If many threads calls fsync with data writes, we don't need to flush every
bios having node page writes.
The f2fs_wait_on_page_writeback will flush its bios when the page is really
needed.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
