Commit d9b9c893 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'ceph-for-5.3-rc1' of git://github.com/ceph/ceph-client

Pull ceph updates from Ilya Dryomov:
 "Lots of exciting things this time!

   - support for rbd object-map and fast-diff features (myself). This
     will speed up reads, discards and things like snap diffs on sparse
     images.

   - ceph.snap.btime vxattr to expose snapshot creation time (David
     Disseldorp). This will be used to integrate with "Restore Previous
     Versions" feature added in Windows 7 for folks who reexport ceph
     through SMB.

   - security xattrs for ceph (Zheng Yan). Only selinux is supported for
     now due to the limitations of ->dentry_init_security().

   - support for MSG_ADDR2, FS_BTIME and FS_CHANGE_ATTR features (Jeff
     Layton). This is actually a single feature bit which was missing
     because of the filesystem pieces. With this in, the kernel client
     will finally be reported as "luminous" by "ceph features" -- it is
     still being reported as "jewel" even though all required Luminous
     features were implemented in 4.13.

   - stop NULL-terminating ceph vxattrs (Jeff Layton). The convention
     with xattrs is to not terminate and this was causing
     inconsistencies with ceph-fuse.

   - change filesystem time granularity from 1 us to 1 ns, again fixing
     an inconsistency with ceph-fuse (Luis Henriques).

  On top of this there are some additional dentry name handling and cap
  flushing fixes from Zheng. Finally, Jeff is formally taking over for
  Zheng as the filesystem maintainer"

* tag 'ceph-for-5.3-rc1' of git://github.com/ceph/ceph-client: (71 commits)
  ceph: fix end offset in truncate_inode_pages_range call
  ceph: use generic_delete_inode() for ->drop_inode
  ceph: use ceph_evict_inode to cleanup inode's resource
  ceph: initialize superblock s_time_gran to 1
  MAINTAINERS: take over for Zheng as CephFS kernel client maintainer
  rbd: setallochint only if object doesn't exist
  rbd: support for object-map and fast-diff
  rbd: call rbd_dev_mapping_set() from rbd_dev_image_probe()
  libceph: export osd_req_op_data() macro
  libceph: change ceph_osdc_call() to take page vector for response
  libceph: bump CEPH_MSG_MAX_DATA_LEN (again)
  rbd: new exclusive lock wait/wake code
  rbd: quiescing lock should wait for image requests
  rbd: lock should be quiesced on reacquire
  rbd: introduce copyup state machine
  rbd: rename rbd_obj_setup_*() to rbd_obj_init_*()
  rbd: move OSD request allocation into object request state machines
  rbd: factor out __rbd_osd_setup_discard_ops()
  rbd: factor out rbd_osd_setup_copyup()
  rbd: introduce obj_req->osd_reqs list
  ...
parents 0fe49f70 d31d07b9
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3765,7 +3765,7 @@ F: arch/powerpc/platforms/cell/

CEPH COMMON CODE (LIBCEPH)
M:	Ilya Dryomov <idryomov@gmail.com>
M:	"Yan, Zheng" <zyan@redhat.com>
M:	Jeff Layton <jlayton@kernel.org>
M:	Sage Weil <sage@redhat.com>
L:	ceph-devel@vger.kernel.org
W:	http://ceph.com/
@@ -3777,7 +3777,7 @@ F: include/linux/ceph/
F:	include/linux/crush/

CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
M:	"Yan, Zheng" <zyan@redhat.com>
M:	Jeff Layton <jlayton@kernel.org>
M:	Sage Weil <sage@redhat.com>
M:	Ilya Dryomov <idryomov@gmail.com>
L:	ceph-devel@vger.kernel.org
+1727 −715

File changed.

Preview size limit exceeded, changes collapsed.

+10 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
/* For format version 2, rbd image 'foo' consists of objects
 *   rbd_id.foo		- id of image
 *   rbd_header.<id>	- image metadata
 *   rbd_object_map.<id> - optional image object map
 *   rbd_data.<id>.0000000000000000
 *   rbd_data.<id>.0000000000000001
 *   ...		- data
@@ -25,6 +26,7 @@
 */

#define RBD_HEADER_PREFIX      "rbd_header."
#define RBD_OBJECT_MAP_PREFIX  "rbd_object_map."
#define RBD_ID_PREFIX          "rbd_id."
#define RBD_V2_DATA_FORMAT     "%s.%016llx"

@@ -39,6 +41,14 @@ enum rbd_notify_op {
	RBD_NOTIFY_OP_HEADER_UPDATE      = 3,
};

#define OBJECT_NONEXISTENT	0
#define OBJECT_EXISTS		1
#define OBJECT_PENDING		2
#define OBJECT_EXISTS_CLEAN	3

#define RBD_FLAG_OBJECT_MAP_INVALID	(1ULL << 0)
#define RBD_FLAG_FAST_DIFF_INVALID	(1ULL << 1)

/*
 * For format version 1, rbd image 'foo' consists of objects
 *   foo.rbd		- image metadata
+12 −0
Original line number Diff line number Diff line
@@ -36,3 +36,15 @@ config CEPH_FS_POSIX_ACL
	  groups beyond the owner/group/world scheme.

	  If you don't know what Access Control Lists are, say N

config CEPH_FS_SECURITY_LABEL
	bool "CephFS Security Labels"
	depends on CEPH_FS && SECURITY
	help
	  Security labels support alternative access control models
	  implemented by security modules like SELinux. This option
	  enables an extended attribute handler for file security
	  labels in the Ceph filesystem.

	  If you are not using a security module that requires using
	  extended attributes for file security labels, say N.
+7 −15
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ out:
}

int ceph_pre_init_acls(struct inode *dir, umode_t *mode,
		       struct ceph_acls_info *info)
		       struct ceph_acl_sec_ctx *as_ctx)
{
	struct posix_acl *acl, *default_acl;
	size_t val_size1 = 0, val_size2 = 0;
@@ -234,9 +234,9 @@ int ceph_pre_init_acls(struct inode *dir, umode_t *mode,

	kfree(tmp_buf);

	info->acl = acl;
	info->default_acl = default_acl;
	info->pagelist = pagelist;
	as_ctx->acl = acl;
	as_ctx->default_acl = default_acl;
	as_ctx->pagelist = pagelist;
	return 0;

out_err:
@@ -248,18 +248,10 @@ out_err:
	return err;
}

void ceph_init_inode_acls(struct inode* inode, struct ceph_acls_info *info)
void ceph_init_inode_acls(struct inode *inode, struct ceph_acl_sec_ctx *as_ctx)
{
	if (!inode)
		return;
	ceph_set_cached_acl(inode, ACL_TYPE_ACCESS, info->acl);
	ceph_set_cached_acl(inode, ACL_TYPE_DEFAULT, info->default_acl);
}

void ceph_release_acls_info(struct ceph_acls_info *info)
{
	posix_acl_release(info->acl);
	posix_acl_release(info->default_acl);
	if (info->pagelist)
		ceph_pagelist_release(info->pagelist);
	ceph_set_cached_acl(inode, ACL_TYPE_ACCESS, as_ctx->acl);
	ceph_set_cached_acl(inode, ACL_TYPE_DEFAULT, as_ctx->default_acl);
}
Loading