2017-07-21 09:20:36

by Yanhu Cao

[permalink] [raw]
Subject: [PATCH] ceph: kernel client startsync can be removed

kernel client is still sending write,startsync.
that startsync is a no-op (has been for years) and can probably be removed

Link: http://tracker.ceph.com/issues/20604

Signed-off-by: Yanhu Cao <[email protected]>
---
fs/ceph/addr.c | 9 ++-------
fs/ceph/file.c | 5 +----
include/linux/ceph/rados.h | 1 -
net/ceph/osd_client.c | 5 -----
4 files changed, 3 insertions(+), 17 deletions(-)

diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index 5083628..f9a1805 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -939,7 +939,7 @@ static int ceph_writepages_start(struct address_space *mapping,
break;
}

- num_ops = 1 + do_sync;
+ num_ops = 1;
strip_unit_end = page->index +
((len - 1) >> PAGE_SHIFT);

@@ -1045,7 +1045,7 @@ static int ceph_writepages_start(struct address_space *mapping,
for (i = 0; i < locked_pages; i++) {
u64 cur_offset = page_offset(pages[i]);
if (offset + len != cur_offset) {
- if (op_idx + do_sync + 1 == req->r_num_ops)
+ if (op_idx + 1 == req->r_num_ops)
break;
osd_req_op_extent_dup_last(req, op_idx,
cur_offset - offset);
@@ -1082,17 +1082,12 @@ static int ceph_writepages_start(struct address_space *mapping,
0, !!pool, false);
osd_req_op_extent_update(req, op_idx, len);

- if (do_sync) {
- op_idx++;
- osd_req_op_init(req, op_idx, CEPH_OSD_OP_STARTSYNC, 0);
- }
BUG_ON(op_idx + 1 != req->r_num_ops);

pool = NULL;
if (i < locked_pages) {
BUG_ON(num_ops <= req->r_num_ops);
num_ops -= req->r_num_ops;
- num_ops += do_sync;
locked_pages -= i;

/* allocate new pages array for next request */
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 3d48c41..405c99b 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -800,7 +800,6 @@ static void ceph_aio_retry_work(struct work_struct *work)
}

req->r_ops[0] = orig_req->r_ops[0];
- osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC, 0);

req->r_mtime = aio_req->mtime;
req->r_data_offset = req->r_ops[0].extent.offset;
@@ -874,8 +873,7 @@ static void ceph_aio_retry_work(struct work_struct *work)
vino = ceph_vino(inode);
req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout,
vino, pos, &size, 0,
- /*include a 'startsync' command*/
- write ? 2 : 1,
+ 1,
write ? CEPH_OSD_OP_WRITE :
CEPH_OSD_OP_READ,
flags, snapc,
@@ -922,7 +920,6 @@ static void ceph_aio_retry_work(struct work_struct *work)
truncate_inode_pages_range(inode->i_mapping, pos,
(pos+len) | (PAGE_SIZE - 1));

- osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC, 0);
req->r_mtime = mtime;
}

diff --git a/include/linux/ceph/rados.h b/include/linux/ceph/rados.h
index 385db08..ba5adf0 100644
--- a/include/linux/ceph/rados.h
+++ b/include/linux/ceph/rados.h
@@ -226,7 +226,6 @@ struct ceph_eversion {
\
/* fancy write */ \
f(APPEND, __CEPH_OSD_OP(WR, DATA, 6), "append") \
- f(STARTSYNC, __CEPH_OSD_OP(WR, DATA, 7), "startsync") \
f(SETTRUNC, __CEPH_OSD_OP(WR, DATA, 8), "settrunc") \
f(TRIMTRUNC, __CEPH_OSD_OP(WR, DATA, 9), "trimtrunc") \
\
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 901bb82..5c9d696 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -863,8 +863,6 @@ static u32 osd_req_encode_op(struct ceph_osd_op *dst,
dst->cls.method_len = src->cls.method_len;
dst->cls.indata_len = cpu_to_le32(src->cls.indata_len);
break;
- case CEPH_OSD_OP_STARTSYNC:
- break;
case CEPH_OSD_OP_WATCH:
dst->watch.cookie = cpu_to_le64(src->watch.cookie);
dst->watch.ver = cpu_to_le64(0);
@@ -916,9 +914,6 @@ static u32 osd_req_encode_op(struct ceph_osd_op *dst,
* if the file was recently truncated, we include information about its
* old and new size so that the object can be updated appropriately. (we
* avoid synchronously deleting truncated objects because it's slow.)
- *
- * if @do_sync, include a 'startsync' command so that the osd will flush
- * data quickly.
*/
struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
struct ceph_file_layout *layout,
--
1.8.3.1


2017-07-24 01:45:55

by Yan, Zheng

[permalink] [raw]
Subject: Re: [PATCH] ceph: kernel client startsync can be removed


> On 21 Jul 2017, at 17:20, Yanhu Cao <[email protected]> wrote:
>
> kernel client is still sending write,startsync.
> that startsync is a no-op (has been for years) and can probably be removed
>
> Link: http://tracker.ceph.com/issues/20604
>
> Signed-off-by: Yanhu Cao <[email protected]>
> ---
> fs/ceph/addr.c | 9 ++-------
> fs/ceph/file.c | 5 +----
> include/linux/ceph/rados.h | 1 -
> net/ceph/osd_client.c | 5 -----
> 4 files changed, 3 insertions(+), 17 deletions(-)
>
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
> index 5083628..f9a1805 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -939,7 +939,7 @@ static int ceph_writepages_start(struct address_space *mapping,
> break;
> }
>
> - num_ops = 1 + do_sync;
> + num_ops = 1;
> strip_unit_end = page->index +
> ((len - 1) >> PAGE_SHIFT);
>
> @@ -1045,7 +1045,7 @@ static int ceph_writepages_start(struct address_space *mapping,
> for (i = 0; i < locked_pages; i++) {
> u64 cur_offset = page_offset(pages[i]);
> if (offset + len != cur_offset) {
> - if (op_idx + do_sync + 1 == req->r_num_ops)
> + if (op_idx + 1 == req->r_num_ops)
> break;
> osd_req_op_extent_dup_last(req, op_idx,
> cur_offset - offset);
> @@ -1082,17 +1082,12 @@ static int ceph_writepages_start(struct address_space *mapping,
> 0, !!pool, false);
> osd_req_op_extent_update(req, op_idx, len);
>
> - if (do_sync) {
> - op_idx++;
> - osd_req_op_init(req, op_idx, CEPH_OSD_OP_STARTSYNC, 0);
> - }
> BUG_ON(op_idx + 1 != req->r_num_ops);
>
> pool = NULL;
> if (i < locked_pages) {
> BUG_ON(num_ops <= req->r_num_ops);
> num_ops -= req->r_num_ops;
> - num_ops += do_sync;
> locked_pages -= i;
>
> /* allocate new pages array for next request */
> diff --git a/fs/ceph/file.c b/fs/ceph/file.c
> index 3d48c41..405c99b 100644
> --- a/fs/ceph/file.c
> +++ b/fs/ceph/file.c
> @@ -800,7 +800,6 @@ static void ceph_aio_retry_work(struct work_struct *work)
> }
>
> req->r_ops[0] = orig_req->r_ops[0];
> - osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC, 0);
>
> req->r_mtime = aio_req->mtime;
> req->r_data_offset = req->r_ops[0].extent.offset;
> @@ -874,8 +873,7 @@ static void ceph_aio_retry_work(struct work_struct *work)
> vino = ceph_vino(inode);
> req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout,
> vino, pos, &size, 0,
> - /*include a 'startsync' command*/
> - write ? 2 : 1,
> + 1,
> write ? CEPH_OSD_OP_WRITE :
> CEPH_OSD_OP_READ,
> flags, snapc,
> @@ -922,7 +920,6 @@ static void ceph_aio_retry_work(struct work_struct *work)
> truncate_inode_pages_range(inode->i_mapping, pos,
> (pos+len) | (PAGE_SIZE - 1));
>
> - osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC, 0);
> req->r_mtime = mtime;
> }
>
> diff --git a/include/linux/ceph/rados.h b/include/linux/ceph/rados.h
> index 385db08..ba5adf0 100644
> --- a/include/linux/ceph/rados.h
> +++ b/include/linux/ceph/rados.h
> @@ -226,7 +226,6 @@ struct ceph_eversion {
> \
> /* fancy write */ \
> f(APPEND, __CEPH_OSD_OP(WR, DATA, 6), "append") \
> - f(STARTSYNC, __CEPH_OSD_OP(WR, DATA, 7), "startsync") \
> f(SETTRUNC, __CEPH_OSD_OP(WR, DATA, 8), "settrunc") \
> f(TRIMTRUNC, __CEPH_OSD_OP(WR, DATA, 9), "trimtrunc") \
> \
> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> index 901bb82..5c9d696 100644
> --- a/net/ceph/osd_client.c
> +++ b/net/ceph/osd_client.c
> @@ -863,8 +863,6 @@ static u32 osd_req_encode_op(struct ceph_osd_op *dst,
> dst->cls.method_len = src->cls.method_len;
> dst->cls.indata_len = cpu_to_le32(src->cls.indata_len);
> break;
> - case CEPH_OSD_OP_STARTSYNC:
> - break;
> case CEPH_OSD_OP_WATCH:
> dst->watch.cookie = cpu_to_le64(src->watch.cookie);
> dst->watch.ver = cpu_to_le64(0);
> @@ -916,9 +914,6 @@ static u32 osd_req_encode_op(struct ceph_osd_op *dst,
> * if the file was recently truncated, we include information about its
> * old and new size so that the object can be updated appropriately. (we
> * avoid synchronously deleting truncated objects because it's slow.)
> - *
> - * if @do_sync, include a 'startsync' command so that the osd will flush
> - * data quickly.
> */
> struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
> struct ceph_file_layout *layout,
> --
> 1.8.3.1
>

Applied, thanks.

Yan, Zheng