From: Luis Henriques <lhenriques@suse.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: ceph-devel@vger.kernel.org, ukernel@gmail.com,
idryomov@gmail.com, sage@redhat.com, jfajerski@suse.com
Subject: Re: [PATCH] ceph: request expedited service when flushing caps
Date: Tue, 31 Mar 2020 14:37:56 +0100 [thread overview]
Message-ID: <20200331133756.GA67759@suse.com> (raw)
In-Reply-To: <20200331105223.9610-1-jlayton@kernel.org>
On Tue, Mar 31, 2020 at 06:52:23AM -0400, Jeff Layton wrote:
> Jan noticed some long stalls when flushing caps using sync() after
> doing small file creates. For instance, running this:
>
> $ time for i in $(seq -w 11 30); do echo "Hello World" > hello-$i.txt; sync -f ./hello-$i.txt; done
>
> Could take more than 90s in some cases. The sync() will flush out caps,
> but doesn't tell the MDS that it's waiting synchronously on the
> replies.
>
> When ceph_check_caps finds that CHECK_CAPS_FLUSH is set, then set the
> CEPH_CLIENT_CAPS_SYNC bit in the cap update request. This clues the MDS
> into that fact and it can then expedite the reply.
>
> URL: https://tracker.ceph.com/issues/44744
> Reported-and-Tested-by: Jan Fajerski <jfajerski@suse.com>
> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Feel free to add my Reviewed-by (and also tested). Also, it may be worth
adding a stable tag for this patch, although it would require some
massaging to use __send_cap instead of __prep_cap.
Cheers,
--
Luis
> ---
> fs/ceph/caps.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
> index 61808793e0c0..6403178f2376 100644
> --- a/fs/ceph/caps.c
> +++ b/fs/ceph/caps.c
> @@ -2111,8 +2111,11 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags,
>
> mds = cap->mds; /* remember mds, so we don't repeat */
>
> - __prep_cap(&arg, cap, CEPH_CAP_OP_UPDATE, 0, cap_used, want,
> - retain, flushing, flush_tid, oldest_flush_tid);
> + __prep_cap(&arg, cap, CEPH_CAP_OP_UPDATE,
> + (flags & CHECK_CAPS_FLUSH) ?
> + CEPH_CLIENT_CAPS_SYNC : 0,
> + cap_used, want, retain, flushing, flush_tid,
> + oldest_flush_tid);
> spin_unlock(&ci->i_ceph_lock);
>
> __send_cap(mdsc, &arg, ci);
> --
> 2.25.1
>
next prev parent reply other threads:[~2020-03-31 13:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-31 10:52 [PATCH] ceph: request expedited service when flushing caps Jeff Layton
2020-03-31 13:37 ` Luis Henriques [this message]
2020-03-31 13:48 ` Yan, Zheng
2020-03-31 14:00 ` Gregory Farnum
2020-03-31 14:56 ` Jeff Layton
2020-04-01 11:04 ` Yan, Zheng
2020-04-01 12:08 ` Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200331133756.GA67759@suse.com \
--to=lhenriques@suse.com \
--cc=ceph-devel@vger.kernel.org \
--cc=idryomov@gmail.com \
--cc=jfajerski@suse.com \
--cc=jlayton@kernel.org \
--cc=sage@redhat.com \
--cc=ukernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.