<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/fs/ceph/file.c, branch v3.0.76</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.0.76</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.0.76'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2011-06-13T23:26:22Z</updated>
<entry>
<title>ceph: fix sync and dio writes across stripe boundaries</title>
<updated>2011-06-13T23:26:22Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-06-13T23:22:18Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d7f124f129a6aea99938e0d4172c741b56fefeda'/>
<id>urn:sha1:d7f124f129a6aea99938e0d4172c741b56fefeda</id>
<content type='text'>
We were iterating across stripe boundaries properly, but not moving the
write buffer pointer forward.  This caused us to rewrite the same data
after the break.  Fix by adjusting the data pointer forward, and
recalculating the io and buffer alignment after the break.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix page alignment corrections</title>
<updated>2011-06-13T23:26:10Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-06-08T03:57:14Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=773e9b442693b250aa6c452cb0cf5a9343f51cef'/>
<id>urn:sha1:773e9b442693b250aa6c452cb0cf5a9343f51cef</id>
<content type='text'>
 dd if=/dev/urandom of=/mnt/fs_depot/dd10 bs=500 seek=8388 count=1
 dd if=/mnt/fs_depot/dd10 of=/root/dd10out bs=500 skip=8388 count=1

Reported-by: Henry C Chang &lt;henry.cy.chang@gmail.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix ENOENT logic in striped_read</title>
<updated>2011-06-08T04:34:16Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-06-08T03:40:35Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=0e98728fa32d338907631349a8cc2afa07c0cb9a'/>
<id>urn:sha1:0e98728fa32d338907631349a8cc2afa07c0cb9a</id>
<content type='text'>
Getting ENOENT is equivalent to reading 0 bytes.  Make that correction
before setting up the hit_stripe and was_short flags.

Fixes the following case:
 dd if=/dev/zero of=/mnt/fs_depot/dd3 bs=1 seek=1048576 count=0
 dd if=/mnt/fs_depot/dd3 of=/root/ddout1 skip=8 bs=500 count=2 iflag=direct

Reported-by: Henry C Chang &lt;henry.cy.chang@gmail.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix short sync reads from the OSD</title>
<updated>2011-06-08T04:34:14Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-06-01T23:08:44Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=c3cd62839aaa2cdb2b99687c9e44f1b300a4aece'/>
<id>urn:sha1:c3cd62839aaa2cdb2b99687c9e44f1b300a4aece</id>
<content type='text'>
If we get a short read from the OSD because the object is small, we need to
zero the remainder of the buffer.  For O_DIRECT reads, the attempted range
is not trimmed to i_size by the VFS, so we were actually looping
indefinitely.

Fix by trimming by i_size, and the unconditionally zeroing the trailing
range.

Reported-by: Jeff Wu &lt;cpwu@tnsoft.com.cn&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: use ihold when we already have an inode ref</title>
<updated>2011-06-08T04:34:11Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-27T16:24:26Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=70b666c3b4cb2b96098d80e6f515e4bc6d37db5a'/>
<id>urn:sha1:70b666c3b4cb2b96098d80e6f515e4bc6d37db5a</id>
<content type='text'>
We should use ihold whenever we already have a stable inode ref, even
when we aren't holding i_lock.  This avoids adding new and unnecessary
locking dependencies.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: do not call __mark_dirty_inode under i_lock</title>
<updated>2011-05-04T19:56:45Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-04T18:33:47Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=fca65b4ad72d28cbb43a029114d04b89f06faadb'/>
<id>urn:sha1:fca65b4ad72d28cbb43a029114d04b89f06faadb</id>
<content type='text'>
The __mark_dirty_inode helper now takes i_lock as of 250df6ed.  Fix the
one ceph callers that held i_lock (__ceph_mark_dirty_caps) to return the
flags value so that the callers can do it outside of i_lock.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: add request to the tail of unsafe write list</title>
<updated>2011-03-21T19:24:25Z</updated>
<author>
<name>Henry C Chang</name>
<email>henry.cy.chang@gmail.com</email>
</author>
<published>2011-03-15T09:18:02Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=49bcb93236ce1c60d9b7eb21a0aea1999f4d8709'/>
<id>urn:sha1:49bcb93236ce1c60d9b7eb21a0aea1999f4d8709</id>
<content type='text'>
In sync_write_wait(), we assume that the newest request is at the
tail of unsafe write list. We should maintain the semantics here.

Signed-off-by: Henry C Chang &lt;henry_c_chang@tcloudcomputing.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: remove request from unsafe list if it is canceled/timed out</title>
<updated>2011-03-21T19:24:24Z</updated>
<author>
<name>Henry C Chang</name>
<email>henry.cy.chang@gmail.com</email>
</author>
<published>2011-03-15T09:18:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=78a255654fa7f01945dea0dcedcf5113b3ad9f93'/>
<id>urn:sha1:78a255654fa7f01945dea0dcedcf5113b3ad9f93</id>
<content type='text'>
This fixes the list corruption warning like this:

------------[ cut here ]------------
WARNING: at lib/list_debug.c:30 __list_add+0x68/0x81()
Hardware name: X8DTU
list_add corruption. prev-&gt;next should be next (ffff880618931250), but was (null). (prev=ffff880c188b9130).
Modules linked in: nfsd lockd nfs_acl auth_rpcgss exportfs ceph libceph libcrc32c sunrpc ipv6 fuse igb i2c_i801 ioatdma i2c_core iTCO_wdt iTCO_vendor_support joydev dca serio_raw usb_storage [last unloaded: scsi_wait_scan]
Pid: 10977, comm: smbd Tainted: G        W  2.6.32.23-170.Elaster.xendom0.fc12.x86_64 #1
Call Trace:
[&lt;ffffffff8105753c&gt;] warn_slowpath_common+0x7c/0x94
[&lt;ffffffff810575ab&gt;] warn_slowpath_fmt+0x41/0x43
[&lt;ffffffff812351a3&gt;] __list_add+0x68/0x81
[&lt;ffffffffa014799d&gt;] ceph_aio_write+0x614/0x8a2 [ceph]
[&lt;ffffffff8111d2a0&gt;] do_sync_write+0xe8/0x125
[&lt;ffffffff81075a1f&gt;] ? autoremove_wake_function+0x0/0x39
[&lt;ffffffff811f21ec&gt;] ? selinux_file_permission+0x5c/0xb3
[&lt;ffffffff811e8521&gt;] ? security_file_permission+0x16/0x18
[&lt;ffffffff8111d864&gt;] vfs_write+0xae/0x10b
[&lt;ffffffff8111d91b&gt;] sys_pwrite64+0x5a/0x76
[&lt;ffffffff81012d32&gt;] system_call_fastpath+0x16/0x1b
---[ end trace 08573eb9f07ff6f4 ]---

Signed-off-by: Henry C Chang &lt;henry_c_chang@tcloudcomputing.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: mark user pages dirty on direct-io reads</title>
<updated>2010-12-17T17:54:40Z</updated>
<author>
<name>Henry C Chang</name>
<email>henry_c_chang@tcloudcomputing.com</email>
</author>
<published>2010-12-16T04:45:41Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b6aa5901c7a2bd90d0b6b9866300d2648b2568f3'/>
<id>urn:sha1:b6aa5901c7a2bd90d0b6b9866300d2648b2568f3</id>
<content type='text'>
For read operation, we have to set the argument _write_ of get_user_pages
to 1 since we will write data to pages. Also, we need to SetPageDirty before
releasing these pages.

Signed-off-by: Henry C Chang &lt;henry_c_chang@tcloudcomputing.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix direct-io on non-page-aligned buffers</title>
<updated>2010-12-16T04:46:16Z</updated>
<author>
<name>Henry C Chang</name>
<email>henry_c_chang@tcloudcomputing.com</email>
</author>
<published>2010-12-16T04:41:54Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ab226e21ad34f6ef52e00d2ab399d2364b4cdfee'/>
<id>urn:sha1:ab226e21ad34f6ef52e00d2ab399d2364b4cdfee</id>
<content type='text'>
The user buffer may be 512-byte aligned, not page-aligned.  We were
assuming the buffer was page-aligned and only accounting for
non-page-aligned io offsets.

Signed-off-by: Henry C Chang &lt;henry_c_chang@tcloudcomputing.com&gt;
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
</feed>
