diff options
author | Joel Becker <joel.becker@oracle.com> | 2008-02-01 18:03:57 -0500 |
---|---|---|
committer | Mark Fasheh <mfasheh@suse.com> | 2008-04-18 11:56:05 -0400 |
commit | 286eaa95c5c5915a6b72cc3f0a2534161fd7928b (patch) | |
tree | dce03b619389cc5b5e2508b30ca3e1411401cf4e /fs/ocfs2/dlmglue.c | |
parent | e3dad42bf993a0f24eb6e46152356c9b119c15e8 (diff) |
ocfs2: Break out stackglue into modules.
We define the ocfs2_stack_plugin structure to represent a stack driver.
The o2cb stack code is split into stack_o2cb.c. This becomes the
ocfs2_stack_o2cb.ko module.
The stackglue generic functions are similarly split into the
ocfs2_stackglue.ko module. This module now provides an interface to
register drivers. The ocfs2_stack_o2cb driver registers itself. As
part of this interface, ocfs2_stackglue can load drivers on demand.
This is accomplished in ocfs2_cluster_connect().
ocfs2_cluster_disconnect() is now notified when a _hangup() is pending.
If a hangup is pending, it will not release the driver module and will
let _hangup() do that.
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2/dlmglue.c')
-rw-r--r-- | fs/ocfs2/dlmglue.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 8a9c84909be3..f62a9e4fc315 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -2641,7 +2641,7 @@ int ocfs2_dlm_init(struct ocfs2_super *osb) | |||
2641 | mlog_errno(status); | 2641 | mlog_errno(status); |
2642 | mlog(ML_ERROR, | 2642 | mlog(ML_ERROR, |
2643 | "could not find this host's node number\n"); | 2643 | "could not find this host's node number\n"); |
2644 | ocfs2_cluster_disconnect(conn); | 2644 | ocfs2_cluster_disconnect(conn, 0); |
2645 | goto bail; | 2645 | goto bail; |
2646 | } | 2646 | } |
2647 | 2647 | ||
@@ -2663,7 +2663,8 @@ bail: | |||
2663 | return status; | 2663 | return status; |
2664 | } | 2664 | } |
2665 | 2665 | ||
2666 | void ocfs2_dlm_shutdown(struct ocfs2_super *osb) | 2666 | void ocfs2_dlm_shutdown(struct ocfs2_super *osb, |
2667 | int hangup_pending) | ||
2667 | { | 2668 | { |
2668 | mlog_entry_void(); | 2669 | mlog_entry_void(); |
2669 | 2670 | ||
@@ -2683,7 +2684,7 @@ void ocfs2_dlm_shutdown(struct ocfs2_super *osb) | |||
2683 | ocfs2_lock_res_free(&osb->osb_super_lockres); | 2684 | ocfs2_lock_res_free(&osb->osb_super_lockres); |
2684 | ocfs2_lock_res_free(&osb->osb_rename_lockres); | 2685 | ocfs2_lock_res_free(&osb->osb_rename_lockres); |
2685 | 2686 | ||
2686 | ocfs2_cluster_disconnect(osb->cconn); | 2687 | ocfs2_cluster_disconnect(osb->cconn, hangup_pending); |
2687 | osb->cconn = NULL; | 2688 | osb->cconn = NULL; |
2688 | 2689 | ||
2689 | ocfs2_dlm_shutdown_debug(osb); | 2690 | ocfs2_dlm_shutdown_debug(osb); |