Merge tag 'ceph-for-5.4-rc1' of git://github.com/ceph/ceph-client
Pull ceph updates from Ilya Dryomov: "The highlights are: - automatic recovery of a blacklisted filesystem session (Zheng Yan). This is disabled by default and can be enabled by mounting with the new "recover_session=clean" option. - serialize buffered reads and O_DIRECT writes (Jeff Layton). Care is taken to avoid serializing O_DIRECT reads and writes with each other, this is based on the exclusion scheme from NFS. - handle large osdmaps better in the face of fragmented memory (myself) - don't limit what security.* xattrs can be get or set (Jeff Layton). We were overly restrictive here, unnecessarily preventing things like file capability sets stored in security.capability from working. - allow copy_file_range() within the same inode and across different filesystems within the same cluster (Luis Henriques)" * tag 'ceph-for-5.4-rc1' of git://github.com/ceph/ceph-client: (41 commits) ceph: call ceph_mdsc_destroy from destroy_fs_client libceph: use ceph_kvmalloc() for osdmap arrays libceph: avoid a __vmalloc() deadlock in ceph_kvmalloc() ceph: allow object copies across different filesystems in the same cluster ceph: include ceph_debug.h in cache.c ceph: move static keyword to the front of declarations rbd: pull rbd_img_request_create() dout out into the callers ceph: reconnect connection if session hang in opening state libceph: drop unused con parameter of calc_target() ceph: use release_pages() directly rbd: fix response length parameter for encoded strings ceph: allow arbitrary security.* xattrs ceph: only set CEPH_I_SEC_INITED if we got a MAC label ceph: turn ceph_security_invalidate_secctx into static inline ceph: add buffered/direct exclusionary locking for reads and writes libceph: handle OSD op ceph_pagelist_append() errors ceph: don't return a value from void function ceph: don't freeze during write page faults ceph: update the mtime when truncating up ceph: fix indentation in __get_snap_name() ...
This commit is contained in:
@@ -1754,8 +1754,6 @@ static struct rbd_img_request *rbd_img_request_create(
|
||||
mutex_init(&img_request->state_mutex);
|
||||
kref_init(&img_request->kref);
|
||||
|
||||
dout("%s: rbd_dev %p %s -> img %p\n", __func__, rbd_dev,
|
||||
obj_op_name(op_type), img_request);
|
||||
return img_request;
|
||||
}
|
||||
|
||||
@@ -2944,6 +2942,9 @@ static int rbd_obj_read_from_parent(struct rbd_obj_request *obj_req)
|
||||
__set_bit(IMG_REQ_CHILD, &child_img_req->flags);
|
||||
child_img_req->obj_request = obj_req;
|
||||
|
||||
dout("%s child_img_req %p for obj_req %p\n", __func__, child_img_req,
|
||||
obj_req);
|
||||
|
||||
if (!rbd_img_is_write(img_req)) {
|
||||
switch (img_req->data_type) {
|
||||
case OBJ_REQUEST_BIO:
|
||||
@@ -4877,6 +4878,9 @@ static void rbd_queue_workfn(struct work_struct *work)
|
||||
img_request->rq = rq;
|
||||
snapc = NULL; /* img_request consumes a ref */
|
||||
|
||||
dout("%s rbd_dev %p img_req %p %s %llu~%llu\n", __func__, rbd_dev,
|
||||
img_request, obj_op_name(op_type), offset, length);
|
||||
|
||||
if (op_type == OBJ_OP_DISCARD || op_type == OBJ_OP_ZEROOUT)
|
||||
result = rbd_img_fill_nodata(img_request, offset, length);
|
||||
else
|
||||
@@ -5669,17 +5673,20 @@ static int rbd_dev_v2_image_size(struct rbd_device *rbd_dev)
|
||||
|
||||
static int rbd_dev_v2_object_prefix(struct rbd_device *rbd_dev)
|
||||
{
|
||||
size_t size;
|
||||
void *reply_buf;
|
||||
int ret;
|
||||
void *p;
|
||||
|
||||
reply_buf = kzalloc(RBD_OBJ_PREFIX_LEN_MAX, GFP_KERNEL);
|
||||
/* Response will be an encoded string, which includes a length */
|
||||
size = sizeof(__le32) + RBD_OBJ_PREFIX_LEN_MAX;
|
||||
reply_buf = kzalloc(size, GFP_KERNEL);
|
||||
if (!reply_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = rbd_obj_method_sync(rbd_dev, &rbd_dev->header_oid,
|
||||
&rbd_dev->header_oloc, "get_object_prefix",
|
||||
NULL, 0, reply_buf, RBD_OBJ_PREFIX_LEN_MAX);
|
||||
NULL, 0, reply_buf, size);
|
||||
dout("%s: rbd_obj_method_sync returned %d\n", __func__, ret);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
@@ -6696,7 +6703,6 @@ static int rbd_dev_image_id(struct rbd_device *rbd_dev)
|
||||
dout("rbd id object name is %s\n", oid.name);
|
||||
|
||||
/* Response will be an encoded string, which includes a length */
|
||||
|
||||
size = sizeof (__le32) + RBD_IMAGE_ID_LEN_MAX;
|
||||
response = kzalloc(size, GFP_NOIO);
|
||||
if (!response) {
|
||||
@@ -6708,7 +6714,7 @@ static int rbd_dev_image_id(struct rbd_device *rbd_dev)
|
||||
|
||||
ret = rbd_obj_method_sync(rbd_dev, &oid, &rbd_dev->header_oloc,
|
||||
"get_id", NULL, 0,
|
||||
response, RBD_IMAGE_ID_LEN_MAX);
|
||||
response, size);
|
||||
dout("%s: rbd_obj_method_sync returned %d\n", __func__, ret);
|
||||
if (ret == -ENOENT) {
|
||||
image_id = kstrdup("", GFP_KERNEL);
|
||||
|
Reference in New Issue
Block a user