<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs, branch v3.13</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.13</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.13'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2014-01-18T01:29:36Z</updated>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace</title>
<updated>2014-01-18T01:29:36Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-01-18T01:29:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=48ba620aab90f4c7e9bb002e2f30863a4ea0f915'/>
<id>urn:sha1:48ba620aab90f4c7e9bb002e2f30863a4ea0f915</id>
<content type='text'>
Pull namespace fixes from Eric Biederman:
 "This is a set of 3 regression fixes.

  This fixes /proc/mounts when using "ip netns add &lt;netns&gt;" to display
  the actual mount point.

  This fixes a regression in clone that broke lxc-attach.

  This fixes a regression in the permission checks for mounting /proc
  that made proc unmountable if binfmt_misc was in use.  Oops.

  My apologies for sending this pull request so late.  Al Viro gave
  interesting review comments about the d_path fix that I wanted to
  address in detail before I sent this pull request.  Unfortunately a
  bad round of colds kept from addressing that in detail until today.
  The executive summary of the review was:

  Al: Is patching d_path really sufficient?
      The prepend_path, d_path, d_absolute_path, and __d_path family of
      functions is a really mess.

  Me: Yes, patching d_path is really sufficient.  Yes, the code is mess.
      No it is not appropriate to rewrite all of d_path for a regression
      that has existed for entirely too long already, when a two line
      change will do"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
  vfs: Fix a regression in mounting proc
  fork:  Allow CLONE_PARENT after setns(CLONE_NEWPID)
  vfs: In d_path don't call d_dname on a mount point
</content>
</entry>
<entry>
<title>Merge tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux</title>
<updated>2014-01-16T01:23:34Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-01-16T01:23:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=70b23ce347c025a06339abd995b1df4a9fe096ba'/>
<id>urn:sha1:70b23ce347c025a06339abd995b1df4a9fe096ba</id>
<content type='text'>
Pull writeback fix from Wu Fengguang:
 "Fix data corruption on NFS writeback.

  It has been in linux-next for one month"

* tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
  writeback: Fix data corruption on NFS
</content>
</entry>
<entry>
<title>nilfs2: fix segctor bug that causes file system corruption</title>
<updated>2014-01-15T07:19:42Z</updated>
<author>
<name>Andreas Rohner</name>
<email>andreas.rohner@gmx.net</email>
</author>
<published>2014-01-15T01:56:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=70f2fe3a26248724d8a5019681a869abdaf3e89a'/>
<id>urn:sha1:70f2fe3a26248724d8a5019681a869abdaf3e89a</id>
<content type='text'>
There is a bug in the function nilfs_segctor_collect, which results in
active data being written to a segment, that is marked as clean.  It is
possible, that this segment is selected for a later segment
construction, whereby the old data is overwritten.

The problem shows itself with the following kernel log message:

  nilfs_sufile_do_cancel_free: segment 6533 must be clean

Usually a few hours later the file system gets corrupted:

  NILFS: bad btree node (blocknr=8748107): level = 0, flags = 0x0, nchildren = 0
  NILFS error (device sdc1): nilfs_bmap_last_key: broken bmap (inode number=114660)

The issue can be reproduced with a file system that is nearly full and
with the cleaner running, while some IO intensive task is running.
Although it is quite hard to reproduce.

This is what happens:

 1. The cleaner starts the segment construction
 2. nilfs_segctor_collect is called
 3. sc_stage is on NILFS_ST_SUFILE and segments are freed
 4. sc_stage is on NILFS_ST_DAT current segment is full
 5. nilfs_segctor_extend_segments is called, which
    allocates a new segment
 6. The new segment is one of the segments freed in step 3
 7. nilfs_sufile_cancel_freev is called and produces an error message
 8. Loop around and the collection starts again
 9. sc_stage is on NILFS_ST_SUFILE and segments are freed
    including the newly allocated segment, which will contain active
    data and can be allocated at a later time
10. A few hours later another segment construction allocates the
    segment and causes file system corruption

This can be prevented by simply reordering the statements.  If
nilfs_sufile_cancel_freev is called before nilfs_segctor_extend_segments
the freed segments are marked as dirty and cannot be allocated any more.

Signed-off-by: Andreas Rohner &lt;andreas.rohner@gmx.net&gt;
Reviewed-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Tested-by: Andreas Rohner &lt;andreas.rohner@gmx.net&gt;
Signed-off-by: Ryusuke Konishi &lt;konishi.ryusuke@lab.ntt.co.jp&gt;
Cc: &lt;stable@vger.kernel.org&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>Merge tag 'xfs-for-linus-v3.13-rc8' of git://oss.sgi.com/xfs/xfs</title>
<updated>2014-01-10T23:33:03Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-01-10T23:33:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e2bc44706faa1852471cc101f3c5cdd757dddcd0'/>
<id>urn:sha1:e2bc44706faa1852471cc101f3c5cdd757dddcd0</id>
<content type='text'>
Pull xfs bugfixes from Ben Myers:
 "Here we have a bugfix for an off-by-one in the remote attribute
  verifier that results in a forced shutdown which you can hit with v5
  superblock by creating a 64k xattr, and a fix for a missing
  destroy_work_on_stack() in the allocation worker.

  It's a bit late, but they are both fairly straightforward"

* tag 'xfs-for-linus-v3.13-rc8' of git://oss.sgi.com/xfs/xfs:
  xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK()
  xfs: fix off-by-one error in xfs_attr3_rmt_verify
</content>
</entry>
<entry>
<title>xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK()</title>
<updated>2014-01-10T18:39:38Z</updated>
<author>
<name>Chuansheng Liu</name>
<email>chuansheng.liu@intel.com</email>
</author>
<published>2014-01-07T08:53:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1f4a63bf019524c96e79f088cd717b96ef00a249'/>
<id>urn:sha1:1f4a63bf019524c96e79f088cd717b96ef00a249</id>
<content type='text'>
In case CONFIG_DEBUG_OBJECTS_WORK is defined, it is needed to
call destroy_work_on_stack() which frees the debug object to pair
with INIT_WORK_ONSTACK().

Signed-off-by: Liu, Chuansheng &lt;chuansheng.liu@intel.com&gt;
Reviewed-by: Ben Myers &lt;bpm@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;

(cherry picked from commit 6f96b3063cdd473c68664a190524ed966ac0cd92)
</content>
</entry>
<entry>
<title>xfs: fix off-by-one error in xfs_attr3_rmt_verify</title>
<updated>2014-01-10T18:38:41Z</updated>
<author>
<name>Jie Liu</name>
<email>jeff.liu@oracle.com</email>
</author>
<published>2014-01-01T11:28:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bba719b5004234e55737e7074b81b337210c511d'/>
<id>urn:sha1:bba719b5004234e55737e7074b81b337210c511d</id>
<content type='text'>
With CRC check is enabled, if trying to set an attributes value just
equal to the maximum size of XATTR_SIZE_MAX would cause the v3 remote
attr write verification procedure failure, which would yield the back
trace like below:

&lt;snip&gt;
XFS (sda7): Internal error xfs_attr3_rmt_write_verify at line 191 of file fs/xfs/xfs_attr_remote.c
&lt;snip&gt;
Call Trace:
[&lt;ffffffff816f0042&gt;] dump_stack+0x45/0x56
[&lt;ffffffffa0d99c8b&gt;] xfs_error_report+0x3b/0x40 [xfs]
[&lt;ffffffffa0d96edd&gt;] ? _xfs_buf_ioapply+0x6d/0x390 [xfs]
[&lt;ffffffffa0d99ce5&gt;] xfs_corruption_error+0x55/0x80 [xfs]
[&lt;ffffffffa0dbef6b&gt;] xfs_attr3_rmt_write_verify+0x14b/0x1a0 [xfs]
[&lt;ffffffffa0d96edd&gt;] ? _xfs_buf_ioapply+0x6d/0x390 [xfs]
[&lt;ffffffffa0d97315&gt;] ? xfs_bdstrat_cb+0x55/0xb0 [xfs]
[&lt;ffffffffa0d96edd&gt;] _xfs_buf_ioapply+0x6d/0x390 [xfs]
[&lt;ffffffff81184cda&gt;] ? vm_map_ram+0x31a/0x460
[&lt;ffffffff81097230&gt;] ? wake_up_state+0x20/0x20
[&lt;ffffffffa0d97315&gt;] ? xfs_bdstrat_cb+0x55/0xb0 [xfs]
[&lt;ffffffffa0d9726b&gt;] xfs_buf_iorequest+0x6b/0xc0 [xfs]
[&lt;ffffffffa0d97315&gt;] xfs_bdstrat_cb+0x55/0xb0 [xfs]
[&lt;ffffffffa0d97906&gt;] xfs_bwrite+0x46/0x80 [xfs]
[&lt;ffffffffa0dbfa94&gt;] xfs_attr_rmtval_set+0x334/0x490 [xfs]
[&lt;ffffffffa0db84aa&gt;] xfs_attr_leaf_addname+0x24a/0x410 [xfs]
[&lt;ffffffffa0db8893&gt;] xfs_attr_set_int+0x223/0x470 [xfs]
[&lt;ffffffffa0db8b76&gt;] xfs_attr_set+0x96/0xb0 [xfs]
[&lt;ffffffffa0db13b2&gt;] xfs_xattr_set+0x42/0x70 [xfs]
[&lt;ffffffff811df9b2&gt;] generic_setxattr+0x62/0x80
[&lt;ffffffff811e0213&gt;] __vfs_setxattr_noperm+0x63/0x1b0
[&lt;ffffffff81307afe&gt;] ? evm_inode_setxattr+0xe/0x10
[&lt;ffffffff811e0415&gt;] vfs_setxattr+0xb5/0xc0
[&lt;ffffffff811e054e&gt;] setxattr+0x12e/0x1c0
[&lt;ffffffff811c6e82&gt;] ? final_putname+0x22/0x50
[&lt;ffffffff811c708b&gt;] ? putname+0x2b/0x40
[&lt;ffffffff811cc4bf&gt;] ? user_path_at_empty+0x5f/0x90
[&lt;ffffffff811bdfd9&gt;] ? __sb_start_write+0x49/0xe0
[&lt;ffffffff81168589&gt;] ? vm_mmap_pgoff+0x99/0xc0
[&lt;ffffffff811e07df&gt;] SyS_setxattr+0x8f/0xe0
[&lt;ffffffff81700c2d&gt;] system_call_fastpath+0x1a/0x1f

Tests:
    setfattr -n user.longxattr -v `perl -e 'print "A"x65536'` testfile

This patch fix it to check the remote EA size is greater than the
XATTR_SIZE_MAX rather than more than or equal to it, because it's
valid if the specified EA value size is equal to the limitation as
per VFS setxattr interface.

Signed-off-by: Jie Liu &lt;jeff.liu@oracle.com&gt;
Reviewed-by: Mark Tinguely &lt;tinguely@sgi.com&gt;
Signed-off-by: Ben Myers &lt;bpm@sgi.com&gt;

(cherry picked from commit 85dd0707f0cad26d60f2dc574d17a5ab948d10f7)
</content>
</entry>
<entry>
<title>Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4</title>
<updated>2014-01-07T00:22:42Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-01-07T00:22:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ef350bb7c5e0748f7d17f1d70c6b0eec5f64f446'/>
<id>urn:sha1:ef350bb7c5e0748f7d17f1d70c6b0eec5f64f446</id>
<content type='text'>
Pull ext4 bugfix from Ted Ts'o:
 "Fix a regression introduced in v3.13-rc6"

* tag 'ext4_for_linus_stable' of http://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
  ext4: fix bigalloc regression
</content>
</entry>
<entry>
<title>ext4: fix bigalloc regression</title>
<updated>2014-01-06T19:00:23Z</updated>
<author>
<name>Eric Whitney</name>
<email>enwlinux@gmail.com</email>
</author>
<published>2014-01-06T19:00:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d0abafac8c9162f39c4f6b2f8141b772a09b3770'/>
<id>urn:sha1:d0abafac8c9162f39c4f6b2f8141b772a09b3770</id>
<content type='text'>
Commit f5a44db5d2 introduced a regression on filesystems created with
the bigalloc feature (cluster size &gt; blocksize).  It causes xfstests
generic/006 and /013 to fail with an unexpected JBD2 failure and
transaction abort that leaves the test file system in a read only state.
Other xfstests run on bigalloc file systems are likely to fail as well.

The cause is the accidental use of a cluster mask where a cluster
offset was needed in ext4_ext_map_blocks().

Signed-off-by: Eric Whitney &lt;enwlinux@gmail.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'akpm' (incoming from Andrew)</title>
<updated>2014-01-02T22:40:38Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-01-02T22:40:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=06f055f394da2364b944d41b9609589763ae762a'/>
<id>urn:sha1:06f055f394da2364b944d41b9609589763ae762a</id>
<content type='text'>
Merge patches from Andrew Morton:
 "Ten fixes"

* emailed patches from Andrew Morton &lt;akpm@linux-foundation.org&gt;:
  epoll: do not take the nested ep-&gt;mtx on EPOLL_CTL_DEL
  sh: add EXPORT_SYMBOL(min_low_pfn) and EXPORT_SYMBOL(max_low_pfn) to sh_ksyms_32.c
  drivers/dma/ioat/dma.c: check DMA mapping error in ioat_dma_self_test()
  mm/memory-failure.c: transfer page count from head page to tail page after split thp
  MAINTAINERS: set up proper record for Xilinx Zynq
  mm: remove bogus warning in copy_huge_pmd()
  memcg: fix memcg_size() calculation
  mm: fix use-after-free in sys_remap_file_pages
  mm: munlock: fix deadlock in __munlock_pagevec()
  mm: munlock: fix a bug where THP tail page is encountered
</content>
</entry>
<entry>
<title>epoll: do not take the nested ep-&gt;mtx on EPOLL_CTL_DEL</title>
<updated>2014-01-02T22:40:30Z</updated>
<author>
<name>Jason Baron</name>
<email>jbaron@akamai.com</email>
</author>
<published>2014-01-02T20:58:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=4ff36ee94d93ddb4b7846177f1118d9aa33408e2'/>
<id>urn:sha1:4ff36ee94d93ddb4b7846177f1118d9aa33408e2</id>
<content type='text'>
The EPOLL_CTL_DEL path of epoll contains a classic, ab-ba deadlock.
That is, epoll_ctl(a, EPOLL_CTL_DEL, b, x), will deadlock with
epoll_ctl(b, EPOLL_CTL_DEL, a, x).  The deadlock was introduced with
commmit 67347fe4e632 ("epoll: do not take global 'epmutex' for simple
topologies").

The acquistion of the ep-&gt;mtx for the destination 'ep' was added such
that a concurrent EPOLL_CTL_ADD operation would see the correct state of
the ep (Specifically, the check for '!list_empty(&amp;f.file-&gt;f_ep_links')

However, by simply not acquiring the lock, we do not serialize behind
the ep-&gt;mtx from the add path, and thus may perform a full path check
when if we had waited a little longer it may not have been necessary.
However, this is a transient state, and performing the full loop
checking in this case is not harmful.

The important point is that we wouldn't miss doing the full loop
checking when required, since EPOLL_CTL_ADD always locks any 'ep's that
its operating upon.  The reason we don't need to do lock ordering in the
add path, is that we are already are holding the global 'epmutex'
whenever we do the double lock.  Further, the original posting of this
patch, which was tested for the intended performance gains, did not
perform this additional locking.

Signed-off-by: Jason Baron &lt;jbaron@akamai.com&gt;
Cc: Nathan Zimmer &lt;nzimmer@sgi.com&gt;
Cc: Eric Wong &lt;normalperson@yhbt.net&gt;
Cc: Nelson Elhage &lt;nelhage@nelhage.com&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Cc: Davide Libenzi &lt;davidel@xmailserver.org&gt;
Cc: "Paul E. McKenney" &lt;paulmck@us.ibm.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>
</feed>
