<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/ext4, branch v3.18-rc2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs</title>
<updated>2014-10-26T18:19:18+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-10-26T18:19:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d1e14f1d63eb15ebe97d1a8544ddc143486b0204'/>
<id>d1e14f1d63eb15ebe97d1a8544ddc143486b0204</id>
<content type='text'>
Pull vfs updates from Al Viro:
 "overlayfs merge + leak fix for d_splice_alias() failure exits"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  overlayfs: embed middle into overlay_readdir_data
  overlayfs: embed root into overlay_readdir_data
  overlayfs: make ovl_cache_entry-&gt;name an array instead of pointer
  overlayfs: don't hold -&gt;i_mutex over opening the real directory
  fix inode leaks on d_splice_alias() failure exits
  fs: limit filesystem stacking depth
  overlay: overlay filesystem documentation
  overlayfs: implement show_options
  overlayfs: add statfs support
  overlay filesystem
  shmem: support RENAME_WHITEOUT
  ext4: support RENAME_WHITEOUT
  vfs: add RENAME_WHITEOUT
  vfs: add whiteout support
  vfs: export check_sticky()
  vfs: introduce clone_private_mount()
  vfs: export __inode_permission() to modules
  vfs: export do_splice_direct() to modules
  vfs: add i_op-&gt;dentry_open()
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull vfs updates from Al Viro:
 "overlayfs merge + leak fix for d_splice_alias() failure exits"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  overlayfs: embed middle into overlay_readdir_data
  overlayfs: embed root into overlay_readdir_data
  overlayfs: make ovl_cache_entry-&gt;name an array instead of pointer
  overlayfs: don't hold -&gt;i_mutex over opening the real directory
  fix inode leaks on d_splice_alias() failure exits
  fs: limit filesystem stacking depth
  overlay: overlay filesystem documentation
  overlayfs: implement show_options
  overlayfs: add statfs support
  overlay filesystem
  shmem: support RENAME_WHITEOUT
  ext4: support RENAME_WHITEOUT
  vfs: add RENAME_WHITEOUT
  vfs: add whiteout support
  vfs: export check_sticky()
  vfs: introduce clone_private_mount()
  vfs: export __inode_permission() to modules
  vfs: export do_splice_direct() to modules
  vfs: add i_op-&gt;dentry_open()
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: support RENAME_WHITEOUT</title>
<updated>2014-10-23T22:14:37+00:00</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-10-23T22:14:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=cd808deced431b66b5fa4e5c193cb7ec0059eaff'/>
<id>cd808deced431b66b5fa4e5c193cb7ec0059eaff</id>
<content type='text'>
Add whiteout support to ext4_rename().  A whiteout inode (chrdev/0,0) is
created before the rename takes place.  The whiteout inode is added to the
old entry instead of deleting it.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add whiteout support to ext4_rename().  A whiteout inode (chrdev/0,0) is
created before the rename takes place.  The whiteout inode is added to the
old entry instead of deleting it.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4</title>
<updated>2014-10-20T16:50:11+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-10-20T16:50:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c2661b806092d8ea2dccb7b02b65776555e0ee47'/>
<id>c2661b806092d8ea2dccb7b02b65776555e0ee47</id>
<content type='text'>
Pull ext4 updates from Ted Ts'o:
 "A large number of cleanups and bug fixes, with some (minor) journal
  optimizations"

[ This got sent to me before -rc1, but was stuck in my spam folder.   - Linus ]

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (67 commits)
  ext4: check s_chksum_driver when looking for bg csum presence
  ext4: move error report out of atomic context in ext4_init_block_bitmap()
  ext4: Replace open coded mdata csum feature to helper function
  ext4: delete useless comments about ext4_move_extents
  ext4: fix reservation overflow in ext4_da_write_begin
  ext4: add ext4_iget_normal() which is to be used for dir tree lookups
  ext4: don't orphan or truncate the boot loader inode
  ext4: grab missed write_count for EXT4_IOC_SWAP_BOOT
  ext4: optimize block allocation on grow indepth
  ext4: get rid of code duplication
  ext4: fix over-defensive complaint after journal abort
  ext4: fix return value of ext4_do_update_inode
  ext4: fix mmap data corruption when blocksize &lt; pagesize
  vfs: fix data corruption when blocksize &lt; pagesize for mmaped data
  ext4: fold ext4_nojournal_sops into ext4_sops
  ext4: support freezing ext2 (nojournal) file systems
  ext4: fold ext4_sync_fs_nojournal() into ext4_sync_fs()
  ext4: don't check quota format when there are no quota files
  jbd2: simplify calling convention around __jbd2_journal_clean_checkpoint_list
  jbd2: avoid pointless scanning of checkpoint lists
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull ext4 updates from Ted Ts'o:
 "A large number of cleanups and bug fixes, with some (minor) journal
  optimizations"

[ This got sent to me before -rc1, but was stuck in my spam folder.   - Linus ]

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (67 commits)
  ext4: check s_chksum_driver when looking for bg csum presence
  ext4: move error report out of atomic context in ext4_init_block_bitmap()
  ext4: Replace open coded mdata csum feature to helper function
  ext4: delete useless comments about ext4_move_extents
  ext4: fix reservation overflow in ext4_da_write_begin
  ext4: add ext4_iget_normal() which is to be used for dir tree lookups
  ext4: don't orphan or truncate the boot loader inode
  ext4: grab missed write_count for EXT4_IOC_SWAP_BOOT
  ext4: optimize block allocation on grow indepth
  ext4: get rid of code duplication
  ext4: fix over-defensive complaint after journal abort
  ext4: fix return value of ext4_do_update_inode
  ext4: fix mmap data corruption when blocksize &lt; pagesize
  vfs: fix data corruption when blocksize &lt; pagesize for mmaped data
  ext4: fold ext4_nojournal_sops into ext4_sops
  ext4: support freezing ext2 (nojournal) file systems
  ext4: fold ext4_sync_fs_nojournal() into ext4_sync_fs()
  ext4: don't check quota format when there are no quota files
  jbd2: simplify calling convention around __jbd2_journal_clean_checkpoint_list
  jbd2: avoid pointless scanning of checkpoint lists
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu</title>
<updated>2014-10-15T05:48:18+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-10-15T05:48:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0429fbc0bdc297d64188483ba029a23773ae07b0'/>
<id>0429fbc0bdc297d64188483ba029a23773ae07b0</id>
<content type='text'>
Pull percpu consistent-ops changes from Tejun Heo:
 "Way back, before the current percpu allocator was implemented, static
  and dynamic percpu memory areas were allocated and handled separately
  and had their own accessors.  The distinction has been gone for many
  years now; however, the now duplicate two sets of accessors remained
  with the pointer based ones - this_cpu_*() - evolving various other
  operations over time.  During the process, we also accumulated other
  inconsistent operations.

  This pull request contains Christoph's patches to clean up the
  duplicate accessor situation.  __get_cpu_var() uses are replaced with
  with this_cpu_ptr() and __this_cpu_ptr() with raw_cpu_ptr().

  Unfortunately, the former sometimes is tricky thanks to C being a bit
  messy with the distinction between lvalues and pointers, which led to
  a rather ugly solution for cpumask_var_t involving the introduction of
  this_cpu_cpumask_var_ptr().

  This converts most of the uses but not all.  Christoph will follow up
  with the remaining conversions in this merge window and hopefully
  remove the obsolete accessors"

* 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (38 commits)
  irqchip: Properly fetch the per cpu offset
  percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t -fix
  ia64: sn_nodepda cannot be assigned to after this_cpu conversion. Use __this_cpu_write.
  percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t
  Revert "powerpc: Replace __get_cpu_var uses"
  percpu: Remove __this_cpu_ptr
  clocksource: Replace __this_cpu_ptr with raw_cpu_ptr
  sparc: Replace __get_cpu_var uses
  avr32: Replace __get_cpu_var with __this_cpu_write
  blackfin: Replace __get_cpu_var uses
  tile: Use this_cpu_ptr() for hardware counters
  tile: Replace __get_cpu_var uses
  powerpc: Replace __get_cpu_var uses
  alpha: Replace __get_cpu_var
  ia64: Replace __get_cpu_var uses
  s390: cio driver &amp;__get_cpu_var replacements
  s390: Replace __get_cpu_var uses
  mips: Replace __get_cpu_var uses
  MIPS: Replace __get_cpu_var uses in FPU emulator.
  arm: Replace __this_cpu_ptr with raw_cpu_ptr
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull percpu consistent-ops changes from Tejun Heo:
 "Way back, before the current percpu allocator was implemented, static
  and dynamic percpu memory areas were allocated and handled separately
  and had their own accessors.  The distinction has been gone for many
  years now; however, the now duplicate two sets of accessors remained
  with the pointer based ones - this_cpu_*() - evolving various other
  operations over time.  During the process, we also accumulated other
  inconsistent operations.

  This pull request contains Christoph's patches to clean up the
  duplicate accessor situation.  __get_cpu_var() uses are replaced with
  with this_cpu_ptr() and __this_cpu_ptr() with raw_cpu_ptr().

  Unfortunately, the former sometimes is tricky thanks to C being a bit
  messy with the distinction between lvalues and pointers, which led to
  a rather ugly solution for cpumask_var_t involving the introduction of
  this_cpu_cpumask_var_ptr().

  This converts most of the uses but not all.  Christoph will follow up
  with the remaining conversions in this merge window and hopefully
  remove the obsolete accessors"

* 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (38 commits)
  irqchip: Properly fetch the per cpu offset
  percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t -fix
  ia64: sn_nodepda cannot be assigned to after this_cpu conversion. Use __this_cpu_write.
  percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t
  Revert "powerpc: Replace __get_cpu_var uses"
  percpu: Remove __this_cpu_ptr
  clocksource: Replace __this_cpu_ptr with raw_cpu_ptr
  sparc: Replace __get_cpu_var uses
  avr32: Replace __get_cpu_var with __this_cpu_write
  blackfin: Replace __get_cpu_var uses
  tile: Use this_cpu_ptr() for hardware counters
  tile: Replace __get_cpu_var uses
  powerpc: Replace __get_cpu_var uses
  alpha: Replace __get_cpu_var
  ia64: Replace __get_cpu_var uses
  s390: cio driver &amp;__get_cpu_var replacements
  s390: Replace __get_cpu_var uses
  mips: Replace __get_cpu_var uses
  MIPS: Replace __get_cpu_var uses in FPU emulator.
  arm: Replace __this_cpu_ptr with raw_cpu_ptr
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: check s_chksum_driver when looking for bg csum presence</title>
<updated>2014-10-14T06:35:49+00:00</updated>
<author>
<name>Darrick J. Wong</name>
<email>darrick.wong@oracle.com</email>
</author>
<published>2014-10-14T06:35:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=813d32f91333e4c33d5a19b67167c4bae42dae75'/>
<id>813d32f91333e4c33d5a19b67167c4bae42dae75</id>
<content type='text'>
Convert the ext4_has_group_desc_csum predicate to look for a checksum
driver instead of the metadata_csum flag and change the bg checksum
calculation function to look for GDT_CSUM before taking the crc16
path.

Without this patch, if we mount with ^uninit_bg,^metadata_csum and
later metadata_csum gets turned on by accident, the block group
checksum functions will incorrectly assume that checksumming is
enabled (metadata_csum) but that crc16 should be used
(!s_chksum_driver).  This is totally wrong, so fix the predicate
and the checksum formula selection.

(Granted, if the metadata_csum feature bit gets enabled on a live FS
then something underhanded is going on, but we could at least avoid
writing garbage into the on-disk fields.)

Signed-off-by: Darrick J. Wong &lt;darrick.wong@oracle.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Reviewed-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Convert the ext4_has_group_desc_csum predicate to look for a checksum
driver instead of the metadata_csum flag and change the bg checksum
calculation function to look for GDT_CSUM before taking the crc16
path.

Without this patch, if we mount with ^uninit_bg,^metadata_csum and
later metadata_csum gets turned on by accident, the block group
checksum functions will incorrectly assume that checksumming is
enabled (metadata_csum) but that crc16 should be used
(!s_chksum_driver).  This is totally wrong, so fix the predicate
and the checksum formula selection.

(Granted, if the metadata_csum feature bit gets enabled on a live FS
then something underhanded is going on, but we could at least avoid
writing garbage into the on-disk fields.)

Signed-off-by: Darrick J. Wong &lt;darrick.wong@oracle.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Reviewed-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: move error report out of atomic context in ext4_init_block_bitmap()</title>
<updated>2014-10-13T07:42:12+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-10-13T07:42:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=aef4885ae14f1df75b58395c5314d71f613d26d9'/>
<id>aef4885ae14f1df75b58395c5314d71f613d26d9</id>
<content type='text'>
Error report likely result in IO so it is bad idea to do it from
atomic context.

This patch should fix following issue:

BUG: sleeping function called from invalid context at include/linux/buffer_head.h:349
in_atomic(): 1, irqs_disabled(): 0, pid: 137, name: kworker/u128:1
5 locks held by kworker/u128:1/137:
 #0:  ("writeback"){......}, at: [&lt;ffffffff81085618&gt;] process_one_work+0x228/0x4d0
 #1:  ((&amp;(&amp;wb-&gt;dwork)-&gt;work)){......}, at: [&lt;ffffffff81085618&gt;] process_one_work+0x228/0x4d0
 #2:  (jbd2_handle){......}, at: [&lt;ffffffff81242622&gt;] start_this_handle+0x712/0x7b0
 #3:  (&amp;ei-&gt;i_data_sem){......}, at: [&lt;ffffffff811fa387&gt;] ext4_map_blocks+0x297/0x430
 #4:  (&amp;(&amp;bgl-&gt;locks[i].lock)-&gt;rlock){......}, at: [&lt;ffffffff811f3180&gt;] ext4_read_block_bitmap_nowait+0x5d0/0x630
CPU: 3 PID: 137 Comm: kworker/u128:1 Not tainted 3.17.0-rc2-00184-g82752e4 #165
Hardware name: Intel Corporation W2600CR/W2600CR, BIOS SE5C600.86B.99.99.x028.061320111235 06/13/2011
Workqueue: writeback bdi_writeback_workfn (flush-1:0)
 0000000000000411 ffff880813777288 ffffffff815c7fdc ffff880813777288
 ffff880813a8bba0 ffff8808137772a8 ffffffff8108fb30 ffff880803e01e38
 ffff880803e01e38 ffff8808137772c8 ffffffff811a8d53 ffff88080ecc6000
Call Trace:
 [&lt;ffffffff815c7fdc&gt;] dump_stack+0x51/0x6d
 [&lt;ffffffff8108fb30&gt;] __might_sleep+0xf0/0x100
 [&lt;ffffffff811a8d53&gt;] __sync_dirty_buffer+0x43/0xe0
 [&lt;ffffffff811a8e03&gt;] sync_dirty_buffer+0x13/0x20
 [&lt;ffffffff8120f581&gt;] ext4_commit_super+0x1d1/0x230
 [&lt;ffffffff8120fa03&gt;] save_error_info+0x23/0x30
 [&lt;ffffffff8120fd06&gt;] __ext4_error+0xb6/0xd0
 [&lt;ffffffff8120f260&gt;] ? ext4_group_desc_csum+0x140/0x190
 [&lt;ffffffff811f2d8c&gt;] ext4_read_block_bitmap_nowait+0x1dc/0x630
 [&lt;ffffffff8122e23a&gt;] ext4_mb_init_cache+0x21a/0x8f0
 [&lt;ffffffff8113ae95&gt;] ? lru_cache_add+0x55/0x60
 [&lt;ffffffff8112e16c&gt;] ? add_to_page_cache_lru+0x6c/0x80
 [&lt;ffffffff8122eaa0&gt;] ext4_mb_init_group+0x190/0x280
 [&lt;ffffffff8122ec51&gt;] ext4_mb_good_group+0xc1/0x190
 [&lt;ffffffff8123309a&gt;] ext4_mb_regular_allocator+0x17a/0x410
 [&lt;ffffffff8122c821&gt;] ? ext4_mb_use_preallocated+0x31/0x380
 [&lt;ffffffff81233535&gt;] ? ext4_mb_new_blocks+0x205/0x8e0
 [&lt;ffffffff8116ed5c&gt;] ? kmem_cache_alloc+0xfc/0x180
 [&lt;ffffffff812335b0&gt;] ext4_mb_new_blocks+0x280/0x8e0
 [&lt;ffffffff8116f2c4&gt;] ? __kmalloc+0x144/0x1c0
 [&lt;ffffffff81221797&gt;] ? ext4_find_extent+0x97/0x320
 [&lt;ffffffff812257f4&gt;] ext4_ext_map_blocks+0xbc4/0x1050
 [&lt;ffffffff811fa387&gt;] ? ext4_map_blocks+0x297/0x430
 [&lt;ffffffff811fa3ab&gt;] ext4_map_blocks+0x2bb/0x430
 [&lt;ffffffff81200e43&gt;] ? ext4_init_io_end+0x23/0x50
 [&lt;ffffffff811feb44&gt;] ext4_writepages+0x564/0xaf0
 [&lt;ffffffff815cde3b&gt;] ? _raw_spin_unlock+0x2b/0x40
 [&lt;ffffffff810ac7bd&gt;] ? lock_release_non_nested+0x2fd/0x3c0
 [&lt;ffffffff811a009e&gt;] ? writeback_sb_inodes+0x10e/0x490
 [&lt;ffffffff811a009e&gt;] ? writeback_sb_inodes+0x10e/0x490
 [&lt;ffffffff811377e3&gt;] do_writepages+0x23/0x40
 [&lt;ffffffff8119c8ce&gt;] __writeback_single_inode+0x9e/0x280
 [&lt;ffffffff811a026b&gt;] writeback_sb_inodes+0x2db/0x490
 [&lt;ffffffff811a0664&gt;] wb_writeback+0x174/0x2d0
 [&lt;ffffffff810ac359&gt;] ? lock_release_holdtime+0x29/0x190
 [&lt;ffffffff811a0863&gt;] wb_do_writeback+0xa3/0x200
 [&lt;ffffffff811a0a40&gt;] bdi_writeback_workfn+0x80/0x230
 [&lt;ffffffff81085618&gt;] ? process_one_work+0x228/0x4d0
 [&lt;ffffffff810856cd&gt;] process_one_work+0x2dd/0x4d0
 [&lt;ffffffff81085618&gt;] ? process_one_work+0x228/0x4d0
 [&lt;ffffffff81085c1d&gt;] worker_thread+0x35d/0x460
 [&lt;ffffffff810858c0&gt;] ? process_one_work+0x4d0/0x4d0
 [&lt;ffffffff810858c0&gt;] ? process_one_work+0x4d0/0x4d0
 [&lt;ffffffff8108a885&gt;] kthread+0xf5/0x100
 [&lt;ffffffff810990e5&gt;] ? local_clock+0x25/0x30
 [&lt;ffffffff8108a790&gt;] ? __init_kthread_worker+0x70/0x70
 [&lt;ffffffff815ce2ac&gt;] ret_from_fork+0x7c/0xb0
 [&lt;ffffffff8108a790&gt;] ? __init_kthread_work

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Error report likely result in IO so it is bad idea to do it from
atomic context.

This patch should fix following issue:

BUG: sleeping function called from invalid context at include/linux/buffer_head.h:349
in_atomic(): 1, irqs_disabled(): 0, pid: 137, name: kworker/u128:1
5 locks held by kworker/u128:1/137:
 #0:  ("writeback"){......}, at: [&lt;ffffffff81085618&gt;] process_one_work+0x228/0x4d0
 #1:  ((&amp;(&amp;wb-&gt;dwork)-&gt;work)){......}, at: [&lt;ffffffff81085618&gt;] process_one_work+0x228/0x4d0
 #2:  (jbd2_handle){......}, at: [&lt;ffffffff81242622&gt;] start_this_handle+0x712/0x7b0
 #3:  (&amp;ei-&gt;i_data_sem){......}, at: [&lt;ffffffff811fa387&gt;] ext4_map_blocks+0x297/0x430
 #4:  (&amp;(&amp;bgl-&gt;locks[i].lock)-&gt;rlock){......}, at: [&lt;ffffffff811f3180&gt;] ext4_read_block_bitmap_nowait+0x5d0/0x630
CPU: 3 PID: 137 Comm: kworker/u128:1 Not tainted 3.17.0-rc2-00184-g82752e4 #165
Hardware name: Intel Corporation W2600CR/W2600CR, BIOS SE5C600.86B.99.99.x028.061320111235 06/13/2011
Workqueue: writeback bdi_writeback_workfn (flush-1:0)
 0000000000000411 ffff880813777288 ffffffff815c7fdc ffff880813777288
 ffff880813a8bba0 ffff8808137772a8 ffffffff8108fb30 ffff880803e01e38
 ffff880803e01e38 ffff8808137772c8 ffffffff811a8d53 ffff88080ecc6000
Call Trace:
 [&lt;ffffffff815c7fdc&gt;] dump_stack+0x51/0x6d
 [&lt;ffffffff8108fb30&gt;] __might_sleep+0xf0/0x100
 [&lt;ffffffff811a8d53&gt;] __sync_dirty_buffer+0x43/0xe0
 [&lt;ffffffff811a8e03&gt;] sync_dirty_buffer+0x13/0x20
 [&lt;ffffffff8120f581&gt;] ext4_commit_super+0x1d1/0x230
 [&lt;ffffffff8120fa03&gt;] save_error_info+0x23/0x30
 [&lt;ffffffff8120fd06&gt;] __ext4_error+0xb6/0xd0
 [&lt;ffffffff8120f260&gt;] ? ext4_group_desc_csum+0x140/0x190
 [&lt;ffffffff811f2d8c&gt;] ext4_read_block_bitmap_nowait+0x1dc/0x630
 [&lt;ffffffff8122e23a&gt;] ext4_mb_init_cache+0x21a/0x8f0
 [&lt;ffffffff8113ae95&gt;] ? lru_cache_add+0x55/0x60
 [&lt;ffffffff8112e16c&gt;] ? add_to_page_cache_lru+0x6c/0x80
 [&lt;ffffffff8122eaa0&gt;] ext4_mb_init_group+0x190/0x280
 [&lt;ffffffff8122ec51&gt;] ext4_mb_good_group+0xc1/0x190
 [&lt;ffffffff8123309a&gt;] ext4_mb_regular_allocator+0x17a/0x410
 [&lt;ffffffff8122c821&gt;] ? ext4_mb_use_preallocated+0x31/0x380
 [&lt;ffffffff81233535&gt;] ? ext4_mb_new_blocks+0x205/0x8e0
 [&lt;ffffffff8116ed5c&gt;] ? kmem_cache_alloc+0xfc/0x180
 [&lt;ffffffff812335b0&gt;] ext4_mb_new_blocks+0x280/0x8e0
 [&lt;ffffffff8116f2c4&gt;] ? __kmalloc+0x144/0x1c0
 [&lt;ffffffff81221797&gt;] ? ext4_find_extent+0x97/0x320
 [&lt;ffffffff812257f4&gt;] ext4_ext_map_blocks+0xbc4/0x1050
 [&lt;ffffffff811fa387&gt;] ? ext4_map_blocks+0x297/0x430
 [&lt;ffffffff811fa3ab&gt;] ext4_map_blocks+0x2bb/0x430
 [&lt;ffffffff81200e43&gt;] ? ext4_init_io_end+0x23/0x50
 [&lt;ffffffff811feb44&gt;] ext4_writepages+0x564/0xaf0
 [&lt;ffffffff815cde3b&gt;] ? _raw_spin_unlock+0x2b/0x40
 [&lt;ffffffff810ac7bd&gt;] ? lock_release_non_nested+0x2fd/0x3c0
 [&lt;ffffffff811a009e&gt;] ? writeback_sb_inodes+0x10e/0x490
 [&lt;ffffffff811a009e&gt;] ? writeback_sb_inodes+0x10e/0x490
 [&lt;ffffffff811377e3&gt;] do_writepages+0x23/0x40
 [&lt;ffffffff8119c8ce&gt;] __writeback_single_inode+0x9e/0x280
 [&lt;ffffffff811a026b&gt;] writeback_sb_inodes+0x2db/0x490
 [&lt;ffffffff811a0664&gt;] wb_writeback+0x174/0x2d0
 [&lt;ffffffff810ac359&gt;] ? lock_release_holdtime+0x29/0x190
 [&lt;ffffffff811a0863&gt;] wb_do_writeback+0xa3/0x200
 [&lt;ffffffff811a0a40&gt;] bdi_writeback_workfn+0x80/0x230
 [&lt;ffffffff81085618&gt;] ? process_one_work+0x228/0x4d0
 [&lt;ffffffff810856cd&gt;] process_one_work+0x2dd/0x4d0
 [&lt;ffffffff81085618&gt;] ? process_one_work+0x228/0x4d0
 [&lt;ffffffff81085c1d&gt;] worker_thread+0x35d/0x460
 [&lt;ffffffff810858c0&gt;] ? process_one_work+0x4d0/0x4d0
 [&lt;ffffffff810858c0&gt;] ? process_one_work+0x4d0/0x4d0
 [&lt;ffffffff8108a885&gt;] kthread+0xf5/0x100
 [&lt;ffffffff810990e5&gt;] ? local_clock+0x25/0x30
 [&lt;ffffffff8108a790&gt;] ? __init_kthread_worker+0x70/0x70
 [&lt;ffffffff815ce2ac&gt;] ret_from_fork+0x7c/0xb0
 [&lt;ffffffff8108a790&gt;] ? __init_kthread_work

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Replace open coded mdata csum feature to helper function</title>
<updated>2014-10-13T07:36:16+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-10-13T07:36:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9aa5d32ba269bec0e7eaba2697a986a7b0bc8528'/>
<id>9aa5d32ba269bec0e7eaba2697a986a7b0bc8528</id>
<content type='text'>
Besides the fact that this replacement improves code readability
it also protects from errors caused direct EXT4_S(sb)-&gt;s_es manipulation
which may result attempt to use uninitialized  csum machinery.

#Testcase_BEGIN
IMG=/dev/ram0
MNT=/mnt
mkfs.ext4 $IMG
mount $IMG $MNT
#Enable feature directly on disk, on mounted fs
tune2fs -O metadata_csum  $IMG
# Provoke metadata update, likey result in OOPS
touch $MNT/test
umount $MNT
#Testcase_END

# Replacement script
@@
expression E;
@@
- EXT4_HAS_RO_COMPAT_FEATURE(E, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)
+ ext4_has_metadata_csum(E)

https://bugzilla.kernel.org/show_bug.cgi?id=82201

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Besides the fact that this replacement improves code readability
it also protects from errors caused direct EXT4_S(sb)-&gt;s_es manipulation
which may result attempt to use uninitialized  csum machinery.

#Testcase_BEGIN
IMG=/dev/ram0
MNT=/mnt
mkfs.ext4 $IMG
mount $IMG $MNT
#Enable feature directly on disk, on mounted fs
tune2fs -O metadata_csum  $IMG
# Provoke metadata update, likey result in OOPS
touch $MNT/test
umount $MNT
#Testcase_END

# Replacement script
@@
expression E;
@@
- EXT4_HAS_RO_COMPAT_FEATURE(E, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)
+ ext4_has_metadata_csum(E)

https://bugzilla.kernel.org/show_bug.cgi?id=82201

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: delete useless comments about ext4_move_extents</title>
<updated>2014-10-11T23:56:34+00:00</updated>
<author>
<name>Xiaoguang Wang</name>
<email>wangxg.fnst@cn.fujitsu.com</email>
</author>
<published>2014-10-11T23:56:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=65dd8327eb055a393a413a2214f70a9a10ff7ad6'/>
<id>65dd8327eb055a393a413a2214f70a9a10ff7ad6</id>
<content type='text'>
In patch 'ext4: refactor ext4_move_extents code base',  Dmitry Monakhov has
refactored ext4_move_extents' implementation, but forgot to update the
corresponding comments, this patch will try to delete some useless comments.

Reviewed-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Xiaoguang Wang &lt;wangxg.fnst@cn.fujitsu.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In patch 'ext4: refactor ext4_move_extents code base',  Dmitry Monakhov has
refactored ext4_move_extents' implementation, but forgot to update the
corresponding comments, this patch will try to delete some useless comments.

Reviewed-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Xiaoguang Wang &lt;wangxg.fnst@cn.fujitsu.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: fix reservation overflow in ext4_da_write_begin</title>
<updated>2014-10-11T23:51:17+00:00</updated>
<author>
<name>Eric Sandeen</name>
<email>sandeen@redhat.com</email>
</author>
<published>2014-10-11T23:51:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0ff8947fc5f700172b37cbca811a38eb9cb81e08'/>
<id>0ff8947fc5f700172b37cbca811a38eb9cb81e08</id>
<content type='text'>
Delalloc write journal reservations only reserve 1 credit,
to update the inode if necessary.  However, it may happen
once in a filesystem's lifetime that a file will cross
the 2G threshold, and require the LARGE_FILE feature to
be set in the superblock as well, if it was not set already.

This overruns the transaction reservation, and can be
demonstrated simply on any ext4 filesystem without the LARGE_FILE
feature already set:

dd if=/dev/zero of=testfile bs=1 seek=2147483646 count=1 \
	conv=notrunc of=testfile
sync
dd if=/dev/zero of=testfile bs=1 seek=2147483647 count=1 \
	conv=notrunc of=testfile

leads to:

EXT4-fs: ext4_do_update_inode:4296: aborting transaction: error 28 in __ext4_handle_dirty_super
EXT4-fs error (device loop0) in ext4_do_update_inode:4301: error 28
EXT4-fs error (device loop0) in ext4_reserve_inode_write:4757: Readonly filesystem
EXT4-fs error (device loop0) in ext4_dirty_inode:4876: error 28
EXT4-fs error (device loop0) in ext4_da_write_end:2685: error 28

Adjust the number of credits based on whether the flag is
already set, and whether the current write may extend past the
LARGE_FILE limit.

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Reviewed-by: Andreas Dilger &lt;adilger@dilger.ca&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Delalloc write journal reservations only reserve 1 credit,
to update the inode if necessary.  However, it may happen
once in a filesystem's lifetime that a file will cross
the 2G threshold, and require the LARGE_FILE feature to
be set in the superblock as well, if it was not set already.

This overruns the transaction reservation, and can be
demonstrated simply on any ext4 filesystem without the LARGE_FILE
feature already set:

dd if=/dev/zero of=testfile bs=1 seek=2147483646 count=1 \
	conv=notrunc of=testfile
sync
dd if=/dev/zero of=testfile bs=1 seek=2147483647 count=1 \
	conv=notrunc of=testfile

leads to:

EXT4-fs: ext4_do_update_inode:4296: aborting transaction: error 28 in __ext4_handle_dirty_super
EXT4-fs error (device loop0) in ext4_do_update_inode:4301: error 28
EXT4-fs error (device loop0) in ext4_reserve_inode_write:4757: Readonly filesystem
EXT4-fs error (device loop0) in ext4_dirty_inode:4876: error 28
EXT4-fs error (device loop0) in ext4_da_write_end:2685: error 28

Adjust the number of credits based on whether the flag is
already set, and whether the current write may extend past the
LARGE_FILE limit.

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Reviewed-by: Andreas Dilger &lt;adilger@dilger.ca&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: add ext4_iget_normal() which is to be used for dir tree lookups</title>
<updated>2014-10-06T02:56:00+00:00</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2014-10-06T02:56:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f4bb2981024fc91b23b4d09a8817c415396dbabb'/>
<id>f4bb2981024fc91b23b4d09a8817c415396dbabb</id>
<content type='text'>
If there is a corrupted file system which has directory entries that
point at reserved, metadata inodes, prohibit them from being used by
treating them the same way we treat Boot Loader inodes --- that is,
mark them to be bad inodes.  This prohibits them from being opened,
deleted, or modified via chmod, chown, utimes, etc.

In particular, this prevents a corrupted file system which has a
directory entry which points at the journal inode from being deleted
and its blocks released, after which point Much Hilarity Ensues.

Reported-by: Sami Liedes &lt;sami.liedes@iki.fi&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If there is a corrupted file system which has directory entries that
point at reserved, metadata inodes, prohibit them from being used by
treating them the same way we treat Boot Loader inodes --- that is,
mark them to be bad inodes.  This prohibits them from being opened,
deleted, or modified via chmod, chown, utimes, etc.

In particular, this prevents a corrupted file system which has a
directory entry which points at the journal inode from being deleted
and its blocks released, after which point Much Hilarity Ensues.

Reported-by: Sami Liedes &lt;sami.liedes@iki.fi&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
</feed>
