2008-01-30 04:37:32 +03:00
/* -*- mode: c; c-basic-offset: 8; -*-
* vim : noexpandtab sw = 8 ts = 8 sts = 0 :
*
* stackglue . h
*
* Glue to the underlying cluster stack .
*
* Copyright ( C ) 2007 Oracle . All rights reserved .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation , version 2.
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*/
# ifndef STACKGLUE_H
# define STACKGLUE_H
2008-02-01 23:14:57 +03:00
# include <linux/types.h>
# include <linux/list.h>
# include <linux/dlmconstants.h>
/*
* dlmconstants . h does not have a LOCAL flag . We hope to remove it
* some day , but right now we need it . Let ' s fake it . This value is larger
* than any flag in dlmconstants . h .
*/
# define DLM_LKF_LOCAL 0x00100000
# include "dlm/dlmapi.h"
2008-01-30 04:37:32 +03:00
struct ocfs2_locking_protocol {
void ( * lp_lock_ast ) ( void * astarg ) ;
void ( * lp_blocking_ast ) ( void * astarg , int level ) ;
2008-02-01 23:15:37 +03:00
void ( * lp_unlock_ast ) ( void * astarg , int error ) ;
2008-01-30 04:37:32 +03:00
} ;
2008-02-01 23:16:57 +03:00
union ocfs2_dlm_lksb {
struct dlm_lockstatus lksb_o2dlm ;
} ;
2008-02-01 23:15:37 +03:00
int ocfs2_dlm_lock ( struct dlm_ctxt * dlm ,
2008-01-30 04:37:32 +03:00
int mode ,
2008-02-01 23:16:57 +03:00
union ocfs2_dlm_lksb * lksb ,
2008-01-30 04:37:32 +03:00
u32 flags ,
void * name ,
unsigned int namelen ,
void * astarg ) ;
2008-02-01 23:15:37 +03:00
int ocfs2_dlm_unlock ( struct dlm_ctxt * dlm ,
2008-02-01 23:16:57 +03:00
union ocfs2_dlm_lksb * lksb ,
2008-01-30 04:37:32 +03:00
u32 flags ,
void * astarg ) ;
2008-02-01 23:16:57 +03:00
int ocfs2_dlm_lock_status ( union ocfs2_dlm_lksb * lksb ) ;
void * ocfs2_dlm_lvb ( union ocfs2_dlm_lksb * lksb ) ;
2008-01-30 04:37:32 +03:00
void o2cb_get_stack ( struct ocfs2_locking_protocol * proto ) ;
void o2cb_put_stack ( void ) ;
# endif /* STACKGLUE_H */