All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH 1/6] Add dlm operations placeholders
@ 2013-09-06  3:27 Goldwyn Rodrigues
  2013-09-09 21:38 ` Mark Fasheh
  0 siblings, 1 reply; 3+ messages in thread
From: Goldwyn Rodrigues @ 2013-09-06  3:27 UTC (permalink / raw)
  To: ocfs2-devel


Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
---
 fs/ocfs2/stack_user.c | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
index 286edf1..1b18193 100644
--- a/fs/ocfs2/stack_user.c
+++ b/fs/ocfs2/stack_user.c
@@ -799,11 +799,31 @@ static int fs_protocol_compare(struct ocfs2_protocol_version *existing,
 	return 0;
 }
 
+static void user_recover_prep(void *arg)
+{
+}
+
+static void user_recover_slot(void *arg, struct dlm_slot *slot)
+{
+}
+
+static void user_recover_done(void *arg, struct dlm_slot *slots,
+			      int num_slots, int our_slot,
+			      uint32_t generation)
+{
+}
+
+const struct dlm_lockspace_ops ocfs2_ls_ops = {
+	.recover_prep = user_recover_prep,
+	.recover_slot = user_recover_slot,
+	.recover_done = user_recover_done,
+};
+
 static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
 {
 	dlm_lockspace_t *fsdlm;
 	struct ocfs2_live_connection *uninitialized_var(control);
-	int rc = 0;
+	int rc = 0, ops_rv;
 
 	BUG_ON(conn == NULL);
 
@@ -828,12 +848,18 @@ static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
 	}
 
 	rc = dlm_new_lockspace(conn->cc_name, NULL, DLM_LSFL_FS, DLM_LVB_LEN,
-			       NULL, NULL, NULL, &fsdlm);
+			       &ocfs2_ls_ops, conn, &ops_rv, &fsdlm);
 	if (rc) {
 		ocfs2_live_connection_drop(control);
 		goto out;
 	}
 
+	if (ops_rv < 0) {
+		printk(KERN_ERR "ocfs2: dlm lockspace ops could not be used. You may be using an older dlm_controld\n");
+		rc = -EINVAL;
+		goto out;
+	}
+
 	conn->cc_private = control;
 	conn->cc_lockspace = fsdlm;
 out:
-- 
1.8.1.4


-- 
Goldwyn

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Ocfs2-devel] [PATCH 1/6] Add dlm operations placeholders
  2013-09-06  3:27 [Ocfs2-devel] [PATCH 1/6] Add dlm operations placeholders Goldwyn Rodrigues
@ 2013-09-09 21:38 ` Mark Fasheh
  2013-09-26 22:23   ` Goldwyn Rodrigues
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Fasheh @ 2013-09-09 21:38 UTC (permalink / raw)
  To: ocfs2-devel

This looks good, other than the backwards compatibility issue I mention
below.

I see we're goign to get some recovery calllbacks node? Any chance you can
give a short description of what their purpose is?
	--Mark

On Thu, Sep 05, 2013 at 10:27:21PM -0500, Goldwyn Rodrigues wrote:
> 
> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
> ---
>  fs/ocfs2/stack_user.c | 30 ++++++++++++++++++++++++++++--
>  1 file changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
> index 286edf1..1b18193 100644
> --- a/fs/ocfs2/stack_user.c
> +++ b/fs/ocfs2/stack_user.c
> @@ -799,11 +799,31 @@ static int fs_protocol_compare(struct ocfs2_protocol_version *existing,
>  	return 0;
>  }
>  
> +static void user_recover_prep(void *arg)
> +{
> +}
> +
> +static void user_recover_slot(void *arg, struct dlm_slot *slot)
> +{
> +}
> +
> +static void user_recover_done(void *arg, struct dlm_slot *slots,
> +			      int num_slots, int our_slot,
> +			      uint32_t generation)
> +{
> +}
> +
> +const struct dlm_lockspace_ops ocfs2_ls_ops = {
> +	.recover_prep = user_recover_prep,
> +	.recover_slot = user_recover_slot,
> +	.recover_done = user_recover_done,
> +};
> +
>  static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
>  {
>  	dlm_lockspace_t *fsdlm;
>  	struct ocfs2_live_connection *uninitialized_var(control);
> -	int rc = 0;
> +	int rc = 0, ops_rv;
>  
>  	BUG_ON(conn == NULL);
>  
> @@ -828,12 +848,18 @@ static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
>  	}
>  
>  	rc = dlm_new_lockspace(conn->cc_name, NULL, DLM_LSFL_FS, DLM_LVB_LEN,
> -			       NULL, NULL, NULL, &fsdlm);
> +			       &ocfs2_ls_ops, conn, &ops_rv, &fsdlm);
>  	if (rc) {
>  		ocfs2_live_connection_drop(control);
>  		goto out;
>  	}
>  
> +	if (ops_rv < 0) {
> +		printk(KERN_ERR "ocfs2: dlm lockspace ops could not be used. You may be using an older dlm_controld\n");
> +		rc = -EINVAL;
> +		goto out;
> +	}

Presumably we're going to figure out how to support all versions of
userspace, so this would go?
	--Mark

--
Mark Fasheh

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Ocfs2-devel] [PATCH 1/6] Add dlm operations placeholders
  2013-09-09 21:38 ` Mark Fasheh
@ 2013-09-26 22:23   ` Goldwyn Rodrigues
  0 siblings, 0 replies; 3+ messages in thread
From: Goldwyn Rodrigues @ 2013-09-26 22:23 UTC (permalink / raw)
  To: ocfs2-devel

On 09/09/2013 04:38 PM, Mark Fasheh wrote:
> This looks good, other than the backwards compatibility issue I mention
> below.
>
> I see we're goign to get some recovery calllbacks node? Any chance you can
> give a short description of what their purpose is?
> 	--Mark
>
> On Thu, Sep 05, 2013 at 10:27:21PM -0500, Goldwyn Rodrigues wrote:
>>
>> Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
>> ---
>>   fs/ocfs2/stack_user.c | 30 ++++++++++++++++++++++++++++--
>>   1 file changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c
>> index 286edf1..1b18193 100644
>> --- a/fs/ocfs2/stack_user.c
>> +++ b/fs/ocfs2/stack_user.c
>> @@ -799,11 +799,31 @@ static int fs_protocol_compare(struct ocfs2_protocol_version *existing,
>>   	return 0;
>>   }
>>
>> +static void user_recover_prep(void *arg)
>> +{
>> +}
>> +
>> +static void user_recover_slot(void *arg, struct dlm_slot *slot)
>> +{
>> +}
>> +
>> +static void user_recover_done(void *arg, struct dlm_slot *slots,
>> +			      int num_slots, int our_slot,
>> +			      uint32_t generation)
>> +{
>> +}
>> +
>> +const struct dlm_lockspace_ops ocfs2_ls_ops = {
>> +	.recover_prep = user_recover_prep,
>> +	.recover_slot = user_recover_slot,
>> +	.recover_done = user_recover_done,
>> +};
>> +
>>   static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
>>   {
>>   	dlm_lockspace_t *fsdlm;
>>   	struct ocfs2_live_connection *uninitialized_var(control);
>> -	int rc = 0;
>> +	int rc = 0, ops_rv;
>>
>>   	BUG_ON(conn == NULL);
>>
>> @@ -828,12 +848,18 @@ static int user_cluster_connect(struct ocfs2_cluster_connection *conn)
>>   	}
>>
>>   	rc = dlm_new_lockspace(conn->cc_name, NULL, DLM_LSFL_FS, DLM_LVB_LEN,
>> -			       NULL, NULL, NULL, &fsdlm);
>> +			       &ocfs2_ls_ops, conn, &ops_rv, &fsdlm);
>>   	if (rc) {
>>   		ocfs2_live_connection_drop(control);
>>   		goto out;
>>   	}
>>
>> +	if (ops_rv < 0) {
>> +		printk(KERN_ERR "ocfs2: dlm lockspace ops could not be used. You may be using an older dlm_controld\n");
>> +		rc = -EINVAL;
>> +		goto out;
>> +	}
>
> Presumably we're going to figure out how to support all versions of
> userspace, so this would go?

Yes, as I mentioned in the previous mail, this is feasible so we will 
try to get a new lockspace twice, once with the ops. If that fails, we 
try without the recovery ops.


-- 
Goldwyn

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-09-26 22:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-06  3:27 [Ocfs2-devel] [PATCH 1/6] Add dlm operations placeholders Goldwyn Rodrigues
2013-09-09 21:38 ` Mark Fasheh
2013-09-26 22:23   ` Goldwyn Rodrigues

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.