<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/ceph, branch v3.0.36</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/ceph?h=v3.0.36</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/ceph?h=v3.0.36'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-07-17T03:43:58Z</updated>
<entry>
<title>ceph analog of cifs build_path_from_dentry() race fix</title>
<updated>2011-07-17T03:43:58Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-07-17T03:43:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1b71fe2efa31cd18c865db474a4cd473b6ab5281'/>
<id>urn:sha1:1b71fe2efa31cd18c865db474a4cd473b6ab5281</id>
<content type='text'>
... unfortunately, cifs bug got copied.  Fix is essentially the same.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<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.amat.us/linux/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.amat.us/linux/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: unwind canceled flock state</title>
<updated>2011-06-08T04:36:45Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-25T21:56:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0c1f91f27140cf3b6e38dc4e892adac241c73a20'/>
<id>urn:sha1:0c1f91f27140cf3b6e38dc4e892adac241c73a20</id>
<content type='text'>
If we request a lock and then abort (e.g., ^C), we need to send a matching
unlock request to the MDS to unwind our lock attempt to avoid indefinitely
blocking other clients.

Reported-by: Brian Chrisman &lt;brchrisman@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.amat.us/linux/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.amat.us/linux/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.amat.us/linux/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: fix cap flush race reentrancy</title>
<updated>2011-05-24T18:52:12Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-24T18:46:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=db3540522e955c1ebb391f4f5324dff4f20ecd09'/>
<id>urn:sha1:db3540522e955c1ebb391f4f5324dff4f20ecd09</id>
<content type='text'>
In e9964c10 we change cap flushing to do a delicate dance because some
inodes on the cap_dirty list could be in a migrating state (got EXPORT but
not IMPORT) in which we couldn't actually flush and move from
dirty-&gt;flushing, breaking the while (!empty) { process first } loop
structure.  It worked for a single sync thread, but was not reentrant and
triggered infinite loops when multiple syncers came along.

Instead, move inodes with dirty to a separate cap_dirty_migrating list
when in the limbo export-but-no-import state, allowing us to go back to
the simple loop structure (which was reentrant).  This is cleaner and more
robust.

Audited the cap_dirty users and this looks fine:
list_empty(&amp;ci-&gt;i_dirty_item) is still a reliable indicator of whether we
have dirty caps (which list we're on is irrelevant) and list_del_init()
calls still do the right thing.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: avoid inode lookup on nfs fh reconnect</title>
<updated>2011-05-24T18:52:06Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-04-06T16:35:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=45e3d3eeb6578e523e100622266945ecd71723bb'/>
<id>urn:sha1:45e3d3eeb6578e523e100622266945ecd71723bb</id>
<content type='text'>
If we get the inode from the MDS, we have a reference in req; don't do a
fresh lookup.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: use LOOKUPINO to make unconnected nfs fh more reliable</title>
<updated>2011-05-24T18:52:05Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-04-06T16:31:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3c454cf21645bc96668e286f6352ac2c4c895fa2'/>
<id>urn:sha1:3c454cf21645bc96668e286f6352ac2c4c895fa2</id>
<content type='text'>
If we are unable to locate an inode by ino, ask the MDS using the new
LOOKUPINO command.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
</feed>
