]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: force a page fault if we have a shorty copy on a page boundary
authorJosef Bacik <josef@redhat.com>
Fri, 30 Sep 2011 19:23:54 +0000 (15:23 -0400)
committerChris Mason <chris.mason@oracle.com>
Fri, 30 Sep 2011 19:23:54 +0000 (15:23 -0400)
commita84f6eef0b23afbb3945aa90a08ee3613cc7e1e5
treef445576e448d3287d56650775bb7d0bc5a7d37c7
parent2cf8edd71382295e3639238f26c225521818ebc8
Btrfs: force a page fault if we have a shorty copy on a page boundary

A user reported a problem where ceph was getting into 100% cpu usage while doing
some writing.  It turns out it's because we were doing a short write on a not
uptodate page, which means we'd fall back at one page at a time and fault the
page in.  The problem is our position is on the page boundary, so our fault in
logic wasn't actually reading the page, so we'd just spin forever or until the
page got read in by somebody else.  This will force a readpage if we end up
doing a short copy.  Alexandre could reproduce this easily with ceph and reports
it fixes his problem.  I also wrote a reproducer that no longer hangs my box
with this patch.  Thanks,

Reported-and-tested-by: Alexandre Oliva <aoliva@redhat.com>
Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/file.c