From: Tejun Heo <tj@kernel.org>
To: Imran Khan <imran.f.khan@oracle.com>
Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] kernfs: Reduce contention around global per-fs kernfs_rwsem.
Date: Thu, 13 Jan 2022 06:42:01 -1000 [thread overview]
Message-ID: <YeBWWWa030xTftWe@slm.duckdns.org> (raw)
In-Reply-To: <20220113104259.1584491-3-imran.f.khan@oracle.com>
Hello,
On Thu, Jan 13, 2022 at 09:42:59PM +1100, Imran Khan wrote:
> @@ -748,11 +749,14 @@ int kernfs_add_one(struct kernfs_node *kn)
> goto out_unlock;
>
> /* Update timestamps on the parent */
> + rwsem = iattr_rwsem_ptr(parent);
> + down_write(rwsem);
> ps_iattr = parent->iattr;
> if (ps_iattr) {
> ktime_get_real_ts64(&ps_iattr->ia_ctime);
> ps_iattr->ia_mtime = ps_iattr->ia_ctime;
> }
> + up_write(rwsem);
>
> up_write(&root->kernfs_rwsem);
Hmmm, so the additions / removals are still fs-global lock protected. Would
it be possible to synchronize them through hashed locks too? We can provide
double locking helpers - look up locks for both parent and child and if
different lock in the defined order (parent first most likely) and record
what happened in a token so that it can be undone later.
Without going through the code carefully, I don't remember whether there's
something which depends on global locking but I'm sure we can fix them too.
It'd be really nice if we can make all operations similarly scalable cuz
with heavy stacking addition/removals can get pretty hot too.
Thanks.
--
tejun
next prev parent reply other threads:[~2022-01-13 16:42 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-13 10:42 [PATCH v3 0/2] kernfs: use hashed mutex and spinlock in place of global ones Imran Khan
2022-01-13 10:42 ` [PATCH v3 1/2] " Imran Khan
2022-01-13 15:08 ` kernel test robot
2022-01-13 16:37 ` Tejun Heo
2022-01-17 18:54 ` kernel test robot
2022-01-13 10:42 ` [PATCH v3 2/2] kernfs: Reduce contention around global per-fs kernfs_rwsem Imran Khan
2022-01-13 10:58 ` Greg KH
2022-01-13 16:42 ` Tejun Heo [this message]
2022-01-14 17:08 ` Imran Khan
2022-01-14 17:44 ` Tejun Heo
2022-02-02 15:10 ` Imran Khan
2022-01-25 2:55 ` [kernfs] 8652224976: WARNING:at_kernel/locking/rwsem.c:#up_write kernel test robot
2022-01-25 2:55 ` kernel test robot
2022-01-13 10:57 ` [PATCH v3 0/2] kernfs: use hashed mutex and spinlock in place of global ones Greg KH
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=YeBWWWa030xTftWe@slm.duckdns.org \
--to=tj@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=imran.f.khan@oracle.com \
--cc=linux-kernel@vger.kernel.org \
/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.