All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yan, Zheng" <ukernel@gmail.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: ceph-devel <ceph-devel@vger.kernel.org>,
	idridryomov@gmail.com, Sage Weil <sage@redhat.com>,
	Zheng Yan <zyan@redhat.com>
Subject: Re: [RFC PATCH v3 00/10] ceph: asynchronous file create support
Date: Thu, 23 Jan 2020 01:04:35 +0800	[thread overview]
Message-ID: <CAAM7YAnYoCuxu2Oj3vK1ZyWyAgh_vWWTYRxE2ZqEhU9vT+YTKg@mail.gmail.com> (raw)
In-Reply-To: <20200121192928.469316-1-jlayton@kernel.org>

On Wed, Jan 22, 2020 at 3:31 AM Jeff Layton <jlayton@kernel.org> wrote:
>
> v3:
> - move some cephfs-specific code into ceph.ko
> - present and track inode numbers as u64 values
> - fix up check for dentry and cap eligibility checks
> - set O_CEPH_EXCL on async creates
> - attempt to handle errors better on async create (invalidate dentries
>   and dir completeness).
> - ensure that fsync waits for async create to complete
>
> v2:
> - move cached layout to dedicated field in inode
> - protect cached layout with i_ceph_lock
> - wipe cached layout in __check_cap_issue
> - set max_size of file to layout.stripe_unit
> - set truncate_size to (u64)-1
> - use dedicated CephFS feature bit instead of CEPHFS_FEATURE_OCTOPUS
> - set cap_id to 1 in async created inode
> - allocate inode number before submitting request
> - rework the prep for an async create to be more efficient
> - don't allow MDS or cap messages involving an inode until we get async
>   create reply
>
> Still not quite ready for merge, but I've cleaned up a number of warts
> in the v2 set. Performance numbers still look about the same.
>
> There is definitely still a race of some sort that causes the client to
> try to asynchronously create a dentry that already exists. I'm still
> working on tracking that down.
>
> Jeff Layton (10):
>   ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c
>   ceph: make ceph_fill_inode non-static
>   ceph: make dentry_lease_is_valid non-static
>   ceph: make __take_cap_refs non-static
>   ceph: decode interval_sets for delegated inos
>   ceph: add flag to designate that a request is asynchronous
>   ceph: add infrastructure for waiting for async create to complete
>   ceph: add new MDS req field to hold delegated inode number
>   ceph: cache layout in parent dir on first sync create
>   ceph: attempt to do async create when possible
>
>  fs/ceph/Makefile                     |   2 +-
>  fs/ceph/caps.c                       |  38 +++--
>  fs/ceph/dir.c                        |  13 +-
>  fs/ceph/file.c                       | 240 +++++++++++++++++++++++++--
>  fs/ceph/inode.c                      |  50 +++---
>  fs/ceph/mds_client.c                 | 123 ++++++++++++--
>  fs/ceph/mds_client.h                 |  17 +-
>  fs/ceph/super.h                      |  16 +-
>  net/ceph/ceph_fs.c => fs/ceph/util.c |   4 -
>  include/linux/ceph/ceph_fs.h         |   8 +-
>  net/ceph/Makefile                    |   2 +-
>  11 files changed, 443 insertions(+), 70 deletions(-)
>  rename net/ceph/ceph_fs.c => fs/ceph/util.c (94%)
>
> --
> 2.24.1
>

I realized that there still are two issues:
-  we needs to clear delegated inos when mds failover
- we needs to clear caps for async dir operations when reconnecting to
mds. (see last commit of https://github.com/ceph/ceph/pull/32576)

Regards
Yan, Zheng

  parent reply	other threads:[~2020-01-22 17:04 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-21 19:29 [RFC PATCH v3 00/10] ceph: asynchronous file create support Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 01/10] ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c Jeff Layton
2020-01-24 19:04   ` Jeff Layton
2020-01-25  8:08     ` Ilya Dryomov
2020-01-21 19:29 ` [RFC PATCH v3 02/10] ceph: make ceph_fill_inode non-static Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 03/10] ceph: make dentry_lease_is_valid non-static Jeff Layton
2020-01-22  7:20   ` Yan, Zheng
2020-01-22 11:26     ` Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 04/10] ceph: make __take_cap_refs non-static Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 05/10] ceph: decode interval_sets for delegated inos Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 06/10] ceph: add flag to designate that a request is asynchronous Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 07/10] ceph: add infrastructure for waiting for async create to complete Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 08/10] ceph: add new MDS req field to hold delegated inode number Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 09/10] ceph: cache layout in parent dir on first sync create Jeff Layton
2020-01-21 19:29 ` [RFC PATCH v3 10/10] ceph: attempt to do async create when possible Jeff Layton
2020-01-22  7:29 ` [RFC PATCH v3 00/10] ceph: asynchronous file create support Yan, Zheng
2020-01-22 17:04 ` Yan, Zheng [this message]
2020-01-24 17:19   ` Jeff Layton
2020-01-25  1:58     ` Yan, Zheng
2020-01-25  1:58     ` Yan, Zheng

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=CAAM7YAnYoCuxu2Oj3vK1ZyWyAgh_vWWTYRxE2ZqEhU9vT+YTKg@mail.gmail.com \
    --to=ukernel@gmail.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=idridryomov@gmail.com \
    --cc=jlayton@kernel.org \
    --cc=sage@redhat.com \
    --cc=zyan@redhat.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.