[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240814143414.1877505-2-aahringo@redhat.com>
Date: Wed, 14 Aug 2024 10:34:03 -0400
From: Alexander Aring <aahringo@...hat.com>
To: teigland@...hat.com
Cc: gfs2@...ts.linux.dev,
song@...nel.org,
yukuai3@...wei.com,
agruenba@...hat.com,
mark@...heh.com,
jlbec@...lplan.org,
joseph.qi@...ux.alibaba.com,
gregkh@...uxfoundation.org,
rafael@...nel.org,
akpm@...ux-foundation.org,
linux-kernel@...r.kernel.org,
linux-raid@...r.kernel.org,
ocfs2-devel@...ts.linux.dev,
lucien.xin@...il.com,
aahringo@...hat.com
Subject: [RFC dlm/next 01/12] dlm: introduce dlm_find_lockspace_name()
A DLM lockspace can be either identified by it's unique id or name. Later
patches will introduce a new netlink api that is using a unique
lockspace name to identify a lockspace in the lslist. This is mostly
required for sysfs functionality that is currently solved by a per
lockspace kobject allocation. The new netlink api cannot simple lookup
the lockspace by a container_of() call to do whatever sysfs is
providing so we introduce dlm_find_lockspace_name() to offer such
functionality.
Signed-off-by: Alexander Aring <aahringo@...hat.com>
---
fs/dlm/lockspace.c | 18 ++++++++++++++++++
fs/dlm/lockspace.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
index 8afac6e2dff0..00d37125bc44 100644
--- a/fs/dlm/lockspace.c
+++ b/fs/dlm/lockspace.c
@@ -238,6 +238,24 @@ void dlm_lockspace_exit(void)
kset_unregister(dlm_kset);
}
+struct dlm_ls *dlm_find_lockspace_name(const char *lsname)
+{
+ struct dlm_ls *ls;
+
+ spin_lock_bh(&lslist_lock);
+
+ list_for_each_entry(ls, &lslist, ls_list) {
+ if (!strncmp(ls->ls_name, lsname, DLM_LOCKSPACE_LEN)) {
+ atomic_inc(&ls->ls_count);
+ goto out;
+ }
+ }
+ ls = NULL;
+ out:
+ spin_unlock_bh(&lslist_lock);
+ return ls;
+}
+
struct dlm_ls *dlm_find_lockspace_global(uint32_t id)
{
struct dlm_ls *ls;
diff --git a/fs/dlm/lockspace.h b/fs/dlm/lockspace.h
index 47ebd4411926..7898a906aab9 100644
--- a/fs/dlm/lockspace.h
+++ b/fs/dlm/lockspace.h
@@ -22,6 +22,7 @@
int dlm_lockspace_init(void);
void dlm_lockspace_exit(void);
+struct dlm_ls *dlm_find_lockspace_name(const char *lsname);
struct dlm_ls *dlm_find_lockspace_global(uint32_t id);
struct dlm_ls *dlm_find_lockspace_local(void *id);
struct dlm_ls *dlm_find_lockspace_device(int minor);
--
2.43.0
Powered by blists - more mailing lists