<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ceph/super.h, branch linux-4.7.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.7.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.7.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-06-01T08:31:50Z</updated>
<entry>
<title>ceph: improve fscache revalidation</title>
<updated>2016-06-01T08:31:50Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-05-18T12:31:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f7f7e7a0635dedd5064fba255cb3facfa87b06d6'/>
<id>urn:sha1:f7f7e7a0635dedd5064fba255cb3facfa87b06d6</id>
<content type='text'>
There are several issues in fscache revalidation code.
- In ceph_revalidate_work(), fscache_invalidate() is called when
  fscache_check_consistency() return 0. This is complete wrong
  because 0 means cache is valid.
- Handle_cap_grant() calls ceph_queue_revalidate() if client
  already has CAP_FILE_CACHE. This code is confusing. Client
  should revalidate the cache each time it got CAP_FILE_CACHE
  anew.
- In Handle_cap_grant(), fscache_invalidate() is called if MDS
  revokes CAP_FILE_CACHE. This is inconsistency with the case
  that inode get evicted. In the later case, the cache is not
  discarded. Client may use the cache when inode is reloaded.

This patch moves the fscache revalidation into ceph_get_caps().
Client revalidates the cache after it gets CAP_FILE_CACHE.
i_rdcache_gen should keep constance while CAP_FILE_CACHE is
used. If i_fscache_gen is not equal to i_rdcache_gen, client
needs to check cache's consistency.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client</title>
<updated>2016-05-26T21:10:32Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2016-05-26T21:10:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a10c38a4f385f5d7c173a263ff6bb2d36021b3bb'/>
<id>urn:sha1:a10c38a4f385f5d7c173a263ff6bb2d36021b3bb</id>
<content type='text'>
Pull Ceph updates from Sage Weil:
 "This changeset has a few main parts:

   - Ilya has finished a huge refactoring effort to sync up the
     client-side logic in libceph with the user-space client code, which
     has evolved significantly over the last couple years, with lots of
     additional behaviors (e.g., how requests are handled when cluster
     is full and transitions from full to non-full).

     This structure of the code is more closely aligned with userspace
     now such that it will be much easier to maintain going forward when
     behavior changes take place.  There are some locking improvements
     bundled in as well.

   - Zheng adds multi-filesystem support (multiple namespaces within the
     same Ceph cluster)

   - Zheng has changed the readdir offsets and directory enumeration so
     that dentry offsets are hash-based and therefore stable across
     directory fragmentation events on the MDS.

   - Zheng has a smorgasbord of bug fixes across fs/ceph"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (71 commits)
  ceph: fix wake_up_session_cb()
  ceph: don't use truncate_pagecache() to invalidate read cache
  ceph: SetPageError() for writeback pages if writepages fails
  ceph: handle interrupted ceph_writepage()
  ceph: make ceph_update_writeable_page() uninterruptible
  libceph: make ceph_osdc_wait_request() uninterruptible
  ceph: handle -EAGAIN returned by ceph_update_writeable_page()
  ceph: make fault/page_mkwrite return VM_FAULT_OOM for -ENOMEM
  ceph: block non-fatal signals for fault/page_mkwrite
  ceph: make logical calculation functions return bool
  ceph: tolerate bad i_size for symlink inode
  ceph: improve fragtree change detection
  ceph: keep leaf frag when updating fragtree
  ceph: fix dir_auth check in ceph_fill_dirfrag()
  ceph: don't assume frag tree splits in mds reply are sorted
  ceph: fix inode reference leak
  ceph: using hash value to compose dentry offset
  ceph: don't forbid marking directory complete after forward seek
  ceph: record 'offset' for each entry of readdir result
  ceph: define 'end/complete' in readdir reply as bit flags
  ...
</content>
</entry>
<entry>
<title>ceph: improve fragtree change detection</title>
<updated>2016-05-25T23:15:38Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-05-04T03:40:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1b1bc16d66a7c7af3b4f30d1cf5a363168b217f4'/>
<id>urn:sha1:1b1bc16d66a7c7af3b4f30d1cf5a363168b217f4</id>
<content type='text'>
check if number of splits in i_fragtree is equal to number of splits
in mds reply

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: using hash value to compose dentry offset</title>
<updated>2016-05-25T23:15:36Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-04-29T03:27:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f3c4ebe65ea149ec892f94474233cfebe9cbe299'/>
<id>urn:sha1:f3c4ebe65ea149ec892f94474233cfebe9cbe299</id>
<content type='text'>
If MDS sorts dentries in dirfrag in hash order, we use hash value to
compose dentry offset. dentry offset is:

  (0xff &lt;&lt; 52) | ((24 bits hash) &lt;&lt; 28) |
  (the nth entry hash hash collision)

This offset is stable across directory fragmentation. This alos means
there is no need to reset readdir offset if directory get fragmented
in the middle of readdir.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: record 'offset' for each entry of readdir result</title>
<updated>2016-05-25T23:15:35Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-04-28T07:17:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8974eebd38737c9534d81c4131c5fdb1fe24d3e9'/>
<id>urn:sha1:8974eebd38737c9534d81c4131c5fdb1fe24d3e9</id>
<content type='text'>
This is preparation for using hash value as dentry 'offset'

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: report mount root in session metadata</title>
<updated>2016-05-25T23:15:33Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-04-21T03:09:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3f38495409b613071021fca86629df7ae81820ad'/>
<id>urn:sha1:3f38495409b613071021fca86629df7ae81820ad</id>
<content type='text'>
Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: renew caps for read/write if mds session got killed.</title>
<updated>2016-05-25T23:15:31Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-04-08T07:27:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77310320c299b0dc050037ff8fc29fd1861fb005'/>
<id>urn:sha1:77310320c299b0dc050037ff8fc29fd1861fb005</id>
<content type='text'>
When mds session gets killed, read/write operation may hang.
Client waits for Frw caps, but mds does not know what caps client
wants. To recover this, client sends an open request to mds. The
request will tell mds what caps client wants.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
</content>
</entry>
<entry>
<title>ceph: multiple filesystem support</title>
<updated>2016-05-25T23:15:31Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2016-03-30T09:18:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=235a09821c2bc71d9d07f12217ce2ac00db99eba'/>
<id>urn:sha1:235a09821c2bc71d9d07f12217ce2ac00db99eba</id>
<content type='text'>
To access non-default filesystem, we just need to subscribe to
mdsmap.&lt;MDS_NAMESPACE_ID&gt; and add a new mount option for mds
namespace id.

Signed-off-by: Yan, Zheng &lt;zyan@redhat.com&gt;
[idryomov@gmail.com: switch to a new libceph API]
Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
</content>
</entry>
<entry>
<title>ceph: Switch to generic xattr handlers</title>
<updated>2016-04-23T19:41:30Z</updated>
<author>
<name>Andreas Gruenbacher</name>
</author>
<published>2016-04-13T22:30:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2cdeb1e472cf03dec4dc614623fd2e6bd8e5f271'/>
<id>urn:sha1:2cdeb1e472cf03dec4dc614623fd2e6bd8e5f271</id>
<content type='text'>
Add a catch-all xattr handler at the end of ceph_xattr_handlers.  Check
for valid attribute names there, and remove those checks from
__ceph_{get,set,remove}xattr instead.  No "system.*" xattrs need to be
handled by the catch-all handler anymore.

The set xattr handler is called with a NULL value to indicate that the
attribute should be removed; __ceph_setxattr already handles that case
correctly (ceph_set_acl could already calling __ceph_setxattr with a NULL
value).

Move the check for snapshots from ceph_{set,remove}xattr into
__ceph_{set,remove}xattr.  With that, ceph_{get,set,remove}xattr can be
replaced with the generic iops.

Signed-off-by: Andreas Gruenbacher &lt;agruenba@redhat.com&gt;
Signed-off-by: "Yan, Zheng" &lt;zyan@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ceph: Get rid of d_find_alias in ceph_set_acl</title>
<updated>2016-04-23T19:41:30Z</updated>
<author>
<name>Andreas Gruenbacher</name>
</author>
<published>2016-04-13T22:30:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a26feccaba296bd0ae410eabce79cb3443c8a701'/>
<id>urn:sha1:a26feccaba296bd0ae410eabce79cb3443c8a701</id>
<content type='text'>
Create a variant of ceph_setattr that takes an inode instead of a
dentry.  Change __ceph_setxattr (and also __ceph_removexattr) to take an
inode instead of a dentry.  Use those in ceph_set_acl so that we no
longer need a dentry there.

Signed-off-by: Andreas Gruenbacher &lt;agruenba@redhat.com&gt;
Signed-off-by: "Yan, Zheng" &lt;zyan@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
