lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 01 Mar 2010 16:08:31 -0800 From: Sunil Mushran <sunil.mushran@...cle.com> To: Joel Becker <joel.becker@...cle.com> CC: ocfs2-devel@....oracle.com, mfasheh@...e.com, linux-kernel@...r.kernel.org Subject: Re: [Ocfs2-devel] [PATCH 11/11] ocfs2_dlmfs: Enable the use of user cluster stacks. Signed-off-by: Sunil Mushran <sunil.mushran@...cle.com> Joel Becker wrote: > Unlike ocfs2, dlmfs has no permanent storage. It can't store off a > cluster stack it is supposed to be using. So it can't specify the stack > name in ocfs2_cluster_connect(). > > Instead, we create ocfs2_cluster_connect_agnostic(), which simply uses > the stack that is currently enabled. This is find for dlmfs, which will > rely on the stack initialization. > > We add the "stackglue" capability to dlmfs's capability list. This lets > userspace know dlmfs can be used with all cluster stacks. > > Signed-off-by: Joel Becker <joel.becker@...cle.com> > --- > fs/ocfs2/dlmfs/dlmfs.c | 2 +- > fs/ocfs2/dlmfs/userdlm.c | 8 ++++---- > fs/ocfs2/ocfs2_lockingver.h | 2 ++ > fs/ocfs2/stackglue.c | 18 ++++++++++++++++++ > fs/ocfs2/stackglue.h | 11 +++++++++++ > 5 files changed, 36 insertions(+), 5 deletions(-) > > diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c > index 8697366..1b0de15 100644 > --- a/fs/ocfs2/dlmfs/dlmfs.c > +++ b/fs/ocfs2/dlmfs/dlmfs.c > @@ -87,7 +87,7 @@ struct workqueue_struct *user_dlm_worker; > * - bast : POLLIN against the file descriptor of a held lock > * signifies a bast fired on the lock. > */ > -#define DLMFS_CAPABILITIES "bast" > +#define DLMFS_CAPABILITIES "bast stackglue" > extern int param_set_dlmfs_capabilities(const char *val, > struct kernel_param *kp) > { > diff --git a/fs/ocfs2/dlmfs/userdlm.c b/fs/ocfs2/dlmfs/userdlm.c > index c1b6a56..2858ee6 100644 > --- a/fs/ocfs2/dlmfs/userdlm.c > +++ b/fs/ocfs2/dlmfs/userdlm.c > @@ -666,10 +666,10 @@ struct ocfs2_cluster_connection *user_dlm_register(struct qstr *name) > int rc; > struct ocfs2_cluster_connection *conn; > > - rc = ocfs2_cluster_connect("o2cb", name->name, name->len, > - &user_dlm_lproto, > - user_dlm_recovery_handler_noop, > - NULL, &conn); > + rc = ocfs2_cluster_connect_agnostic(name->name, name->len, > + &user_dlm_lproto, > + user_dlm_recovery_handler_noop, > + NULL, &conn); > if (rc) > mlog_errno(rc); > > diff --git a/fs/ocfs2/ocfs2_lockingver.h b/fs/ocfs2/ocfs2_lockingver.h > index 82d5eea..2e45c8d 100644 > --- a/fs/ocfs2/ocfs2_lockingver.h > +++ b/fs/ocfs2/ocfs2_lockingver.h > @@ -23,6 +23,8 @@ > /* > * The protocol version for ocfs2 cluster locking. See dlmglue.c for > * more details. > + * > + * 1.0 - Initial locking version from ocfs2 1.4. > */ > #define OCFS2_LOCKING_PROTOCOL_MAJOR 1 > #define OCFS2_LOCKING_PROTOCOL_MINOR 0 > diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c > index 31db2e8..39abf89 100644 > --- a/fs/ocfs2/stackglue.c > +++ b/fs/ocfs2/stackglue.c > @@ -373,6 +373,24 @@ out: > } > EXPORT_SYMBOL_GPL(ocfs2_cluster_connect); > > +/* The caller will ensure all nodes have the same cluster stack */ > +int ocfs2_cluster_connect_agnostic(const char *group, > + int grouplen, > + struct ocfs2_locking_protocol *lproto, > + void (*recovery_handler)(int node_num, > + void *recovery_data), > + void *recovery_data, > + struct ocfs2_cluster_connection **conn) > +{ > + char *stack_name = NULL; > + > + if (cluster_stack_name[0]) > + stack_name = cluster_stack_name; > + return ocfs2_cluster_connect(stack_name, group, grouplen, lproto, > + recovery_handler, recovery_data, conn); > +} > +EXPORT_SYMBOL_GPL(ocfs2_cluster_connect_agnostic); > + > /* If hangup_pending is 0, the stack driver will be dropped */ > int ocfs2_cluster_disconnect(struct ocfs2_cluster_connection *conn, > int hangup_pending) > diff --git a/fs/ocfs2/stackglue.h b/fs/ocfs2/stackglue.h > index b1981ba..8ce7398 100644 > --- a/fs/ocfs2/stackglue.h > +++ b/fs/ocfs2/stackglue.h > @@ -246,6 +246,17 @@ int ocfs2_cluster_connect(const char *stack_name, > void *recovery_data), > void *recovery_data, > struct ocfs2_cluster_connection **conn); > +/* > + * Used by callers that don't store their stack name. They must ensure > + * all nodes have the same stack. > + */ > +int ocfs2_cluster_connect_agnostic(const char *group, > + int grouplen, > + struct ocfs2_locking_protocol *lproto, > + void (*recovery_handler)(int node_num, > + void *recovery_data), > + void *recovery_data, > + struct ocfs2_cluster_connection **conn); > int ocfs2_cluster_disconnect(struct ocfs2_cluster_connection *conn, > int hangup_pending); > void ocfs2_cluster_hangup(const char *group, int grouplen); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists