<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/ceph, branch v3.0-rc2</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/ceph?h=v3.0-rc2</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/ceph?h=v3.0-rc2'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-05-24T18:52:12Z</updated>
<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>
<entry>
<title>ceph: check return value for start_request in writepages</title>
<updated>2011-05-19T18:25:05Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T22:48:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9d6fcb081a4770c3772c51c59c7251c22716d7bb'/>
<id>urn:sha1:9d6fcb081a4770c3772c51c59c7251c22716d7bb</id>
<content type='text'>
Since we pass the nofail arg, we should never get an error; BUG if we do.
(And fix the function to not return an error if __map_request fails.)

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: remove useless check</title>
<updated>2011-05-19T18:25:05Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T22:43:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6b4a3b517a767c483d16a200730b2967e0e23b83'/>
<id>urn:sha1:6b4a3b517a767c483d16a200730b2967e0e23b83</id>
<content type='text'>
rc is only ever 0 or negative in this method.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix broken comparison in readdir loop</title>
<updated>2011-05-19T18:25:04Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T22:28:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=da39822c6565095a0151ccf9d6b95e2ae5612885'/>
<id>urn:sha1:da39822c6565095a0151ccf9d6b95e2ae5612885</id>
<content type='text'>
Both off and fi-&gt;offset are unsigned, so the difference is always &gt;= 0.
Compare them directly instead of the sign of the difference.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: fix rare potential cap leak</title>
<updated>2011-05-19T18:25:03Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T22:13:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3540303f87115cbdae6ed2cab44ce6a7676d48d3'/>
<id>urn:sha1:3540303f87115cbdae6ed2cab44ce6a7676d48d3</id>
<content type='text'>
If we grab new_cap, retake the lock, and find we already have a cap now
for the given mds, release new_cap.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: use snprintf for dirstat content</title>
<updated>2011-05-19T18:25:02Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T21:28:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ae598083015e22d1802617c18d3408971b1bddc0'/>
<id>urn:sha1:ae598083015e22d1802617c18d3408971b1bddc0</id>
<content type='text'>
We allocate a buffer for rstats if the dirstat option is enabled.  Use
snprintf.

Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>libceph: remove unused variable</title>
<updated>2011-05-19T18:24:17Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-12T21:14:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1b36698577c1008dc1e63f0bf4b6f3d9deada94a'/>
<id>urn:sha1:1b36698577c1008dc1e63f0bf4b6f3d9deada94a</id>
<content type='text'>
Signed-off-by: Sage Weil &lt;sage@newdream.net&gt;
</content>
</entry>
<entry>
<title>ceph: take reference on mds request r_unsafe_dir</title>
<updated>2011-05-19T18:20:07Z</updated>
<author>
<name>Sage Weil</name>
<email>sage@newdream.net</email>
</author>
<published>2011-05-18T23:12:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3b663780347ce532b08be1c859b1df14f0eea4c8'/>
<id>urn:sha1:3b663780347ce532b08be1c859b1df14f0eea4c8</id>
<content type='text'>
We put ourselves on an inode list for the parent directory of metadata
operations so that an fsync on the directory will wait for metadata updates
to commit to disk.  We weren't holding a reference to that directory,
however, and under certain workloads (fsstress in this case) the directory
can go away.

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