nfs-ganesha 1.4
Defines | Functions | Variables

sal_functions.h File Reference

Management of the state abstraction layer. More...

#include "sal_data.h"
#include "nfs_exports.h"
#include "nfs_core.h"

Go to the source code of this file.

Defines

#define STATEID_NO_SPECIAL   0
#define STATEID_SPECIAL_ALL_0   2
#define STATEID_SPECIAL_ALL_1   4
#define STATEID_SPECIAL_CURRENT   8
#define STATEID_SPECIAL_ANY   0xFF
#define STATEID_SPECIAL_FOR_LOCK   (STATEID_SPECIAL_CURRENT)
#define OPEN4_SHARE_ACCESS_NONE   0

Functions

const char * state_err_str (state_status_t err)
state_status_t state_error_convert (fsal_status_t fsal_status)
state_status_t cache_inode_status_to_state_status (cache_inode_status_t status)
nfsstat4 nfs4_Errno_state (state_status_t error)
nfsstat3 nfs3_Errno_state (state_status_t error)
nfsstat2 nfs2_Errno_state (state_status_t error)
const char * state_owner_type_to_str (state_owner_type_t type)
int different_owners (state_owner_t *powner1, state_owner_t *powner2)
int DisplayOwner (state_owner_t *powner, char *buf)
void Hash_inc_state_owner_ref (hash_buffer_t *buffval)
int Hash_dec_state_owner_ref (hash_buffer_t *buffval)
void inc_state_owner_ref_locked (state_owner_t *powner)
void inc_state_owner_ref (state_owner_t *powner)
void dec_state_owner_ref_locked (state_owner_t *powner)
void dec_state_owner_ref (state_owner_t *powner)
int DisplayOpaqueValue (char *value, int len, char *str)
void state_wipe_file (cache_entry_t *pentry)
state_status_t get_clientid_owner (clientid4 clientid, state_owner_t **clientid_owner)
int nfs_Init_client_id (nfs_client_id_parameter_t *param)
int nfs_client_id_get_unconfirmed (clientid4 clientid, nfs_client_id_t **p_pclientid)
int nfs_client_id_get_confirmed (clientid4 clientid, nfs_client_id_t **p_pclientid)
nfs_client_id_tcreate_client_id (clientid4 clientid, nfs_client_record_t *pclient_record, sockaddr_t *pclient_addr, nfs_client_cred_t *pcredential)
int nfs_client_id_insert (nfs_client_id_t *pclientid)
int remove_unconfirmed_client_id (nfs_client_id_t *pclientid)
int nfs_client_id_confirm (nfs_client_id_t *pclientid, log_components_t component)
int nfs_client_id_expire (nfs_client_id_t *pclientid)
clientid4 new_clientid (void)
void new_clientifd_verifier (char *pverf)
int display_client_id_key (hash_buffer_t *pbuff, char *str)
int display_client_id_val (hash_buffer_t *pbuff, char *str)
int compare_client_id (hash_buffer_t *buff1, hash_buffer_t *buff2)
uint64_t client_id_rbt_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
uint32_t client_id_value_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
int display_client_id_rec (nfs_client_id_t *pclientid, char *str)
int display_clientid_name (nfs_client_id_t *pclientid, char *str)
void free_client_id (nfs_client_id_t *pclientid)
void inc_client_id_ref (nfs_client_id_t *pclientid)
void dec_client_id_ref (nfs_client_id_t *pclientid)
int display_client_record (nfs_client_record_t *precord, char *str)
void inc_client_record_ref (nfs_client_record_t *precord)
void dec_client_record_ref (nfs_client_record_t *precord)
int display_client_record_key (hash_buffer_t *pbuff, char *str)
int display_client_record_val (hash_buffer_t *pbuff, char *str)
int compare_client_record (hash_buffer_t *buff1, hash_buffer_t *buff2)
uint64_t client_record_rbt_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
uint32_t client_record_value_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
nfs_client_record_tget_client_record (char *value, int len)
void nfs4_BuildStateId_Other (char *other)
int nfs4_Check_Stateid (stateid4 *pstate, cache_entry_t *pentry, state_t **ppstate, compound_data_t *data, char flags, const char *tag)
void update_stateid (state_t *pstate, stateid4 *presp, compound_data_t *data, const char *tag)
int nfs4_check_special_stateid (cache_entry_t *pentry, const char *tag, int access)
int nfs4_Init_state_id (nfs_state_id_parameter_t param)
int nfs4_State_Set (char other[OTHERSIZE], state_t *pstate_data)
int nfs4_State_Get_Pointer (char other[OTHERSIZE], state_t **pstate_data)
int nfs4_State_Del (char other[OTHERSIZE])
void nfs_State_PrintAll (void)
int display_state_id_val (hash_buffer_t *pbuff, char *str)
int display_state_id_key (hash_buffer_t *pbuff, char *str)
uint32_t state_id_value_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
uint64_t state_id_rbt_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
int reserve_lease (nfs_client_id_t *pclientid)
void update_lease (nfs_client_id_t *pclientid)
int valid_lease (nfs_client_id_t *pclientid)
void remove_nfs4_owner (state_owner_t *powner, const char *str)
int display_nfs4_owner (state_owner_t *powner, char *str)
int display_nfs4_owner_val (hash_buffer_t *pbuff, char *str)
int display_nfs4_owner_key (hash_buffer_t *pbuff, char *str)
int compare_nfs4_owner (state_owner_t *powner1, state_owner_t *powner2)
int compare_nfs4_owner_key (hash_buffer_t *buff1, hash_buffer_t *buff2)
uint32_t nfs4_owner_value_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
uint64_t nfs4_owner_rbt_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
void convert_nfs4_open_owner (open_owner4 *pnfsowner, state_nfs4_owner_name_t *pname_owner, clientid4 clientid)
void convert_nfs4_lock_owner (lock_owner4 *pnfsowoner, state_nfs4_owner_name_t *pname_owner, clientid4 clientid)
void nfs4_owner_PrintAll (void)
int nfs4_owner_Get_Pointer (state_nfs4_owner_name_t *pname, state_owner_t **powner)
state_owner_tcreate_nfs4_owner (state_nfs4_owner_name_t *pname, nfs_client_id_t *pclientid, state_owner_type_t type, state_owner_t *related_owner, unsigned int init_seqid)
int Init_nfs4_owner (nfs4_owner_parameter_t param)
void Process_nfs4_conflict (LOCK4denied *denied, state_owner_t *holder, fsal_lock_param_t *conflict)
void Release_nfs4_denied (LOCK4denied *denied)
void Copy_nfs4_denied (LOCK4denied *denied_dst, LOCK4denied *denied_src)
void Copy_nfs4_state_req (state_owner_t *powner, seqid4 seqid, nfs_argop4 *args, compound_data_t *data, nfs_resop4 *resp, const char *tag)
bool_t Check_nfs4_seqid (state_owner_t *powner, seqid4 seqid, nfs_argop4 *args, compound_data_t *data, nfs_resop4 *resp, const char *tag)
state_status_t state_lock_init (state_status_t *pstatus)
void LogLock (log_components_t component, log_levels_t debug, const char *reason, cache_entry_t *pentry, fsal_op_context_t *pcontext, state_owner_t *powner, fsal_lock_param_t *plock)
void dump_all_locks (const char *label)
state_status_t state_test (cache_entry_t *pentry, fsal_op_context_t *pcontext, exportlist_t *pexport, state_owner_t *powner, fsal_lock_param_t *plock, state_owner_t **holder, fsal_lock_param_t *conflict, state_status_t *pstatus)
state_status_t state_lock (cache_entry_t *pentry, fsal_op_context_t *pcontext, exportlist_t *pexport, state_owner_t *powner, state_t *pstate, state_blocking_t blocking, state_block_data_t *block_data, fsal_lock_param_t *plock, state_owner_t **holder, fsal_lock_param_t *conflict, state_status_t *pstatus)
state_status_t state_unlock (cache_entry_t *pentry, fsal_op_context_t *pcontext, exportlist_t *pexport, state_owner_t *powner, state_t *pstate, fsal_lock_param_t *plock, state_status_t *pstatus)
state_status_t state_owner_unlock_all (fsal_op_context_t *pcontext, state_owner_t *powner, state_t *pstate, state_status_t *pstatus)
void state_lock_wipe (cache_entry_t *pentry)
int state_conflict (state_t *pstate, state_type_t state_type, state_data_t *pstate_data)
state_status_t state_add_impl (cache_entry_t *pentry, state_type_t state_type, state_data_t *pstate_data, state_owner_t *powner_input, fsal_op_context_t *pcontext, state_t **ppstate, state_status_t *pstatus)
state_status_t state_add (cache_entry_t *pentry, state_type_t state_type, state_data_t *pstate_data, state_owner_t *powner_input, fsal_op_context_t *pcontext, state_t **ppstate, state_status_t *pstatus)
state_status_t state_set (state_t *pstate, state_status_t *pstatus)
state_status_t state_del_locked (state_t *pstate, cache_entry_t *pentry)
state_status_t state_del (state_t *pstate, state_status_t *pstatus)
int display_lock_cookie_key (hash_buffer_t *pbuff, char *str)
int display_lock_cookie_val (hash_buffer_t *pbuff, char *str)
int compare_lock_cookie_key (hash_buffer_t *buff1, hash_buffer_t *buff2)
uint32_t lock_cookie_value_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
uint64_t lock_cookie_rbt_hash_func (hash_parameter_t *p_hparam, hash_buffer_t *buffclef)
void state_nfs4_state_wipe (cache_entry_t *pentry)
void release_lockstate (state_owner_t *plock_owner)
void release_openstate (state_owner_t *popen_owner)
state_status_t state_share_add (cache_entry_t *pentry, fsal_op_context_t *pcontext, state_owner_t *powner, state_t *pstate, state_status_t *pstatus)
state_status_t state_share_remove (cache_entry_t *pentry, fsal_op_context_t *pcontext, state_owner_t *powner, state_t *pstate, state_status_t *pstatus)
state_status_t state_share_upgrade (cache_entry_t *pentry, fsal_op_context_t *pcontext, state_data_t *pstate_data, state_owner_t *powner, state_t *pstate, state_status_t *pstatus)
state_status_t state_share_downgrade (cache_entry_t *pentry, fsal_op_context_t *pcontext, state_data_t *pstate_data, state_owner_t *powner, state_t *pstate, state_status_t *pstatus)
state_status_t state_share_set_prev (state_t *pstate, state_data_t *pstate_data)
state_status_t state_share_check_prev (state_t *pstate, state_data_t *pstate_data)
state_status_t state_share_check_conflict (cache_entry_t *pentry, int share_acccess, int share_deny, state_status_t *pstatus)
state_status_t state_share_anonymous_io_start (cache_entry_t *pentry, int share_access, state_status_t *pstatus)
void state_share_anonymous_io_done (cache_entry_t *pentry, int share_access)
state_status_t state_nlm_share (cache_entry_t *pentry, fsal_op_context_t *pcontext, exportlist_t *pexport, int share_access, int share_deny, state_owner_t *powner, state_status_t *pstatus)
state_status_t state_nlm_unshare (cache_entry_t *pentry, fsal_op_context_t *pcontext, int share_access, int share_deny, state_owner_t *powner, state_status_t *pstatus)
void nfs4_init_grace ()
void nfs4_start_grace (nfs_grace_start_t *gsp)
int nfs_in_grace ()
void nfs4_create_clid_name (nfs_client_record_t *, nfs_client_id_t *, struct svc_req *)
void nfs4_add_clid (nfs_client_id_t *)
void nfs4_rm_clid (char *)
void nfs4_chk_clid (nfs_client_id_t *)
void nfs4_load_recov_clids (ushort nodeid)
void nfs4_clean_old_recov_dir ()
void nfs4_create_recov_dir ()

Variables

pool_tnfs41_session_pool
 The management of the session id cache.

Detailed Description

Management of the state abstraction layer.

Management of the state abstraction layer

Definition in file sal_functions.h.


Define Documentation

#define OPEN4_SHARE_ACCESS_NONE   0

Definition at line 615 of file sal_functions.h.

#define STATEID_NO_SPECIAL   0

Definition at line 301 of file sal_functions.h.

#define STATEID_SPECIAL_ALL_0   2

Definition at line 302 of file sal_functions.h.

#define STATEID_SPECIAL_ALL_1   4

Definition at line 303 of file sal_functions.h.

#define STATEID_SPECIAL_ANY   0xFF

Definition at line 305 of file sal_functions.h.

#define STATEID_SPECIAL_CURRENT   8

Definition at line 304 of file sal_functions.h.

#define STATEID_SPECIAL_FOR_LOCK   (STATEID_SPECIAL_CURRENT)

Definition at line 306 of file sal_functions.h.


Function Documentation

state_status_t cache_inode_status_to_state_status ( cache_inode_status_t  status)

Definition at line 118 of file state_misc.c.

bool_t Check_nfs4_seqid ( state_owner_t powner,
seqid4  seqid,
nfs_argop4 args,
compound_data_t data,
nfs_resop4 resp,
const char *  tag 
)

Check_nfs4_seqid: Check NFS4 request for valid seqid for replay, next request, or BAD_SEQID.

Returns TRUE if the request is the next seqid. If the request is a replay, copies the saved response and returns FALSE. Otherwise, sets status to NFS4ERR_BAD_SEQID and returns FALSE.

In either case, on a FALSE return, the caller should send the resulting response back to the client.

Definition at line 714 of file nfs4_owner.c.

uint64_t client_id_rbt_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

client_id_rbt_hash_func: computes the rbt value for the entry in Client Id cache.

Computes the rbt value for the entry in Client Id cache. In fact, it just use the address value itself (which is an unsigned integer) as the rbt value. This function is called internal in the HasTable_* function

Parameters:
hparam[IN] hash table parameter.
buffcleff[in]pointer to the hash key buffer
Returns:
the computed rbt value.
See also:
HashTable_Init

Definition at line 238 of file nfs4_clientid.c.

uint32_t client_id_value_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

client_id_value_hash_func: computes the hash value for the entry in Client Id cache.

Computes the hash value for the entry in Client Id cache. In fact, it just use addresse as value (identity function) modulo the size of the hash. This function is called internal in the HasTable_* function

Parameters:
hparam[IN] hash table parameter.
buffcleff[IN] pointer to the hash key buffer
Returns:
the computed hash value.
See also:
HashTable_Init

Definition at line 212 of file nfs4_clientid.c.

uint64_t client_record_rbt_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

client_record_rbt_hash_func: computes the rbt value for the entry in Client Id cache.

Computes the rbt value for the entry in Client Record cache. This function is called internal in the HasTable_* function

Parameters:
hparam[IN] hash table parameter.
buffcleff[in]pointer to the hash key buffer
Returns:
the computed rbt value.
See also:
HashTable_Init

Definition at line 1129 of file nfs4_clientid.c.

uint32_t client_record_value_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

client_record_rbt_hash_func: computes the hash value for the entry in Client Record cache.

Computes the hash value for the entry in Client Record cache This function is called internal in the HasTable_* function

Parameters:
hparam[IN] hash table parameter.
buffcleff[IN] pointer to the hash key buffer
Returns:
the computed hash value.
See also:
HashTable_Init

Definition at line 1099 of file nfs4_clientid.c.

int compare_client_id ( hash_buffer_t buff1,
hash_buffer_t buff2 
)

compare_client_id: compares the ip address stored in the key buffers.

compare the ip address stored in the key buffers. This function is to be used as 'compare_key' field in the hashtable storing the client ids.

Parameters:
buff1[IN] first key
buff2[IN] second key
Returns:
0 if keys are identifical, 1 if they are different.

Definition at line 261 of file nfs4_clientid.c.

int compare_client_record ( hash_buffer_t buff1,
hash_buffer_t buff2 
)

compare_client_record: compares the cr_client_val the key buffers.

compare the cr_client_val stored in the key buffers. This function is to be used as 'compare_key' field in the hashtable storing the client records.

Parameters:
buff1[IN] first key
buff2[IN] second key
Returns:
0 if keys are identifical, 1 if they are different.

Definition at line 1156 of file nfs4_clientid.c.

int compare_lock_cookie_key ( hash_buffer_t buff1,
hash_buffer_t buff2 
)
int compare_nfs4_owner ( state_owner_t powner1,
state_owner_t powner2 
)

Definition at line 112 of file nfs4_owner.c.

int compare_nfs4_owner_key ( hash_buffer_t buff1,
hash_buffer_t buff2 
)

Definition at line 158 of file nfs4_owner.c.

void convert_nfs4_lock_owner ( lock_owner4 pnfsowoner,
state_nfs4_owner_name_t pname_owner,
clientid4  clientid 
)

Definition at line 462 of file nfs4_owner.c.

void convert_nfs4_open_owner ( open_owner4 pnfsowner,
state_nfs4_owner_name_t pname_owner,
clientid4  clientid 
)

Definition at line 441 of file nfs4_owner.c.

void Copy_nfs4_denied ( LOCK4denied denied_dst,
LOCK4denied denied_src 
)

Definition at line 637 of file nfs4_owner.c.

void Copy_nfs4_state_req ( state_owner_t powner,
seqid4  seqid,
nfs_argop4 args,
compound_data_t data,
nfs_resop4 resp,
const char *  tag 
)

Definition at line 658 of file nfs4_owner.c.

nfs_client_id_t* create_client_id ( clientid4  clientid,
nfs_client_record_t pclient_record,
sockaddr_t pclient_addr,
nfs_client_cred_t pcredential 
)

Definition at line 295 of file nfs4_clientid.c.

state_owner_t* create_nfs4_owner ( state_nfs4_owner_name_t pname,
nfs_client_id_t pclientid,
state_owner_type_t  type,
state_owner_t related_owner,
unsigned int  init_seqid 
)

Definition at line 483 of file nfs4_owner.c.

void dec_client_id_ref ( nfs_client_id_t pclientid)

Definition at line 155 of file nfs4_clientid.c.

void dec_client_record_ref ( nfs_client_record_t precord)

Definition at line 986 of file nfs4_clientid.c.

void dec_state_owner_ref ( state_owner_t powner)

Definition at line 927 of file state_misc.c.

void dec_state_owner_ref_locked ( state_owner_t powner)

Definition at line 873 of file state_misc.c.

int different_owners ( state_owner_t powner1,
state_owner_t powner2 
)

Definition at line 735 of file state_misc.c.

int display_client_id_key ( hash_buffer_t pbuff,
char *  str 
)

display_client_id_key: displays the client_id stored in the buffer.

displays the client_id stored in the buffer. This function is to be used as 'key_to_str' field in the hashtable storing the client ids.

Parameters:
buff1[IN] buffer to display
buff2[OUT] output string
Returns:
number of character written.

Definition at line 281 of file nfs4_clientid.c.

int display_client_id_rec ( nfs_client_id_t pclientid,
char *  str 
)

Definition at line 77 of file nfs4_clientid.c.

int display_client_id_val ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 290 of file nfs4_clientid.c.

int display_client_record ( nfs_client_record_t precord,
char *  str 
)

Definition at line 945 of file nfs4_clientid.c.

int display_client_record_key ( hash_buffer_t pbuff,
char *  str 
)

display_client_record: displays the client_record stored in the buffer.

displays the client_record stored in the buffer. This function is to be used as 'key_to_str' field in the hashtable storing the client ids.

Parameters:
buff1[IN] buffer to display
buff2[OUT] output string
Returns:
number of character written.

Definition at line 1182 of file nfs4_clientid.c.

int display_client_record_val ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 1187 of file nfs4_clientid.c.

int display_clientid_name ( nfs_client_id_t pclientid,
char *  str 
)

Definition at line 108 of file nfs4_clientid.c.

int display_lock_cookie_key ( hash_buffer_t pbuff,
char *  str 
)
int display_lock_cookie_val ( hash_buffer_t pbuff,
char *  str 
)
int display_nfs4_owner ( state_owner_t powner,
char *  str 
)

Definition at line 76 of file nfs4_owner.c.

int display_nfs4_owner_key ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 54 of file nfs4_owner.c.

int display_nfs4_owner_val ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 107 of file nfs4_owner.c.

int display_state_id_key ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 86 of file nfs4_state_id.c.

int display_state_id_val ( hash_buffer_t pbuff,
char *  str 
)

Definition at line 91 of file nfs4_state_id.c.

int DisplayOpaqueValue ( char *  value,
int  len,
char *  str 
)

Definition at line 964 of file state_misc.c.

int DisplayOwner ( state_owner_t powner,
char *  buf 
)

Definition at line 775 of file state_misc.c.

void dump_all_locks ( const char *  label)

Definition at line 397 of file state_lock.c.

void free_client_id ( nfs_client_id_t pclientid)

Definition at line 140 of file nfs4_clientid.c.

nfs_client_record_t* get_client_record ( char *  value,
int  len 
)

Definition at line 1192 of file nfs4_clientid.c.

state_status_t get_clientid_owner ( clientid4  clientid,
state_owner_t **  clientid_owner 
)
Todo:
FSF: I'm not really sure about the refcounting here...

Definition at line 792 of file nfs4_owner.c.

int Hash_dec_state_owner_ref ( hash_buffer_t buffval)

Definition at line 803 of file state_misc.c.

void Hash_inc_state_owner_ref ( hash_buffer_t buffval)

Definition at line 829 of file state_misc.c.

void inc_client_id_ref ( nfs_client_id_t pclientid)

Definition at line 125 of file nfs4_clientid.c.

void inc_client_record_ref ( nfs_client_record_t precord)

Definition at line 961 of file nfs4_clientid.c.

void inc_state_owner_ref ( state_owner_t powner)

Definition at line 866 of file state_misc.c.

void inc_state_owner_ref_locked ( state_owner_t powner)

Definition at line 849 of file state_misc.c.

int Init_nfs4_owner ( nfs4_owner_parameter_t  param)

nfs4_Init_nfs4_owner: Init the hashtable for NFS Open Owner cache.

Perform all the required initialization for hashtable State Id cache

Parameters:
param[IN] parameter used to init the duplicate request cache
Returns:
0 if successful, -1 otherwise

Definition at line 316 of file nfs4_owner.c.

uint64_t lock_cookie_rbt_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)
uint32_t lock_cookie_value_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)
void LogLock ( log_components_t  component,
log_levels_t  debug,
const char *  reason,
cache_entry_t pentry,
fsal_op_context_t pcontext,
state_owner_t powner,
fsal_lock_param_t plock 
)

Definition at line 353 of file state_lock.c.

clientid4 new_clientid ( void  )

new_clientid: Builds a new clientid4 value using counter and ServerEpoch.

Builds a new clientid4 value using counter and ServerEpoch.

Definition at line 906 of file nfs4_clientid.c.

void new_clientifd_verifier ( char *  pverf)

new_clientifd_verifier: Builds a new verifier4 value.

Builds a new verifier4 value.

Definition at line 927 of file nfs4_clientid.c.

nfsstat2 nfs2_Errno_state ( state_status_t  error)

nfs2_Errno_state: Converts a state status to a nfsv2 status.

Parameters:
error[IN] Input state error.
Returns:
the converted NFSv2 status.

Definition at line 596 of file state_misc.c.

nfsstat3 nfs3_Errno_state ( state_status_t  error)

nfs3_Errno_state: Converts a state status to a nfsv3 status.

Parameters:
error[IN] Input state error.
Returns:
the converted NFSv3 status.

Todo:
: Check if this works by making stress tests

Definition at line 449 of file state_misc.c.

void nfs4_add_clid ( nfs_client_id_t )

Definition at line 166 of file nfs4_recovery.c.

void nfs4_BuildStateId_Other ( char *  other)

nfs4_BuildStateId_Other

This routine builds the 12 byte "other" portion of a stateid from the ServerEpoch and a 64 bit global counter.

Parameters:
other[OUT] the stateid.other object (a char[OTHERSIZE] string)

Definition at line 184 of file nfs4_state_id.c.

int nfs4_check_special_stateid ( cache_entry_t pentry,
const char *  tag,
int  access 
)

nfs4_check_special_stateid

Special stateid, no open state, check to see if any share conflicts The stateid is all-0 or all-1

Returns:
NFS4_OK if ok, anything else if otherwise

Definition at line 559 of file nfs4_state_id.c.

int nfs4_Check_Stateid ( stateid4 pstate,
cache_entry_t pentry,
state_t **  ppstate,
compound_data_t data,
char  flags,
const char *  tag 
)

nfs4_Check_Stateid

This routine checks the availability of the stateid and returns a pointer to it

Parameters:
pstate[IN] pointer to the stateid to be checked.
Returns:
1 if ok, 0 otherwise.

Todo:
fsf: maybe change to simple comparison pstate->seqid < pstate2->state_seqid as good enough and maybe makes pynfs happy.

Definition at line 317 of file nfs4_state_id.c.

void nfs4_chk_clid ( nfs_client_id_t )

Definition at line 218 of file nfs4_recovery.c.

void nfs4_clean_old_recov_dir ( )

Definition at line 417 of file nfs4_recovery.c.

void nfs4_create_clid_name ( nfs_client_record_t ,
nfs_client_id_t ,
struct svc_req *   
)

Definition at line 133 of file nfs4_recovery.c.

void nfs4_create_recov_dir ( )

Definition at line 455 of file nfs4_recovery.c.

nfsstat4 nfs4_Errno_state ( state_status_t  error)

nfs4_Errno: Converts a state status to a nfsv4 status.

Parameters:
error[IN] Input state error.
Returns:
the converted NFSv4 status.

Definition at line 292 of file state_misc.c.

void nfs4_init_grace ( )

Definition at line 73 of file nfs4_recovery.c.

int nfs4_Init_state_id ( nfs_state_id_parameter_t  param)

nfs4_Init_state_id: Init the hashtable for Client Id cache.

Perform all the required initialization for hashtable State Id cache

Parameters:
param[IN] parameter used to init the duplicate request cache
Returns:
0 if successful, -1 otherwise

Definition at line 160 of file nfs4_state_id.c.

void nfs4_load_recov_clids ( ushort  nodeid)

Definition at line 407 of file nfs4_recovery.c.

int nfs4_owner_Get_Pointer ( state_nfs4_owner_name_t pname,
state_owner_t **  powner 
)

nfs4_owner_Get_Pointer

This routine gets a pointer to an open owner from the open owners's hashtable.

Parameters:
pstate[IN] pointer to the stateid to be checked.
ppstate_data[OUT] pointer's state found
Returns:
1 if ok, 0 otherwise.

Definition at line 390 of file nfs4_owner.c.

void nfs4_owner_PrintAll ( void  )

nfs4_owner_PrintAll

This routine displays the content of the hashtable used to store the open owners.

Returns:
nothing (void function)

Definition at line 436 of file nfs4_owner.c.

uint64_t nfs4_owner_rbt_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

Definition at line 217 of file nfs4_owner.c.

uint32_t nfs4_owner_value_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

Definition at line 190 of file nfs4_owner.c.

void nfs4_rm_clid ( char *  )

Definition at line 195 of file nfs4_recovery.c.

void nfs4_start_grace ( nfs_grace_start_t gsp)

Definition at line 86 of file nfs4_recovery.c.

int nfs4_State_Del ( char  other[OTHERSIZE])

nfs4_State_Del

This routine removes a state from the states's hashtable.

Parameters:
other[IN] stateid'other field, used as a hash key
Returns:
1 if ok, 0 otherwise.

Definition at line 284 of file nfs4_state_id.c.

int nfs4_State_Get_Pointer ( char  other[OTHERSIZE],
state_t **  pstate_data 
)

nfs4_State_Get_Pointer

This routine gets a pointer to a state from the states's hashtable.

Parameters:
pstate[IN] pointer to the stateid to be checked.
ppstate_data[OUT] pointer's state found
Returns:
1 if ok, 0 otherwise.

Definition at line 251 of file nfs4_state_id.c.

int nfs4_State_Set ( char  other[OTHERSIZE],
state_t pstate_data 
)

nfs4_State_Set

This routine sets a state into the states's hashtable.

Parameters:
pstate[IN] pointer to the stateid to be checked.
Returns:
1 if ok, 0 otherwise.

Definition at line 207 of file nfs4_state_id.c.

int nfs_client_id_confirm ( nfs_client_id_t pclientid,
log_components_t  component 
)

nfs_client_id_confirm: Confirms a client id record.

Confirms a client id record.

Parameters:
pclientid[IN] the client id record
Returns:
CLIENT_ID_SUCCESS if successfull.
CLIENT_ID_INVALID_ARGUMENT if unable to find record in unconfirmed table
CLIENT_ID_INSERT_MALLOC_ERROR if unable to insert record into confirmed table
CLIENT_ID_NETDB_ERROR if an error occured during the netdb query (via gethostbyaddr).

Definition at line 496 of file nfs4_clientid.c.

int nfs_client_id_expire ( nfs_client_id_t pclientid)

nfs_client_id_expire: client expires, need to take care of owners

assumes caller holds precord->cr_mutex and holds a reference to precord also.

Parameters:
pclientid[IN] the client id used to expire

Definition at line 575 of file nfs4_clientid.c.

int nfs_client_id_get_confirmed ( clientid4  clientid,
nfs_client_id_t **  p_pclientid 
)

nfs_client_id_get_confirmed: Tries to get a pointer to an confirmed entry for client_id cache.

Tries to get a pointer to an confirmed entry for client_id cache.

Parameters:
clientid[IN] the client id
p_pclientid[OUT] the found client id
Returns:
the result previously set if *pstatus == CLIENT_ID_SUCCESS

Definition at line 833 of file nfs4_clientid.c.

int nfs_client_id_get_unconfirmed ( clientid4  clientid,
nfs_client_id_t **  p_pclientid 
)

nfs_client_id_get_unconfirmed: Tries to get a pointer to an unconfirmed entry for client_id cache.

Tries to get a pointer to an unconfirmed entry for client_id cache.

Parameters:
clientid[IN] the client id
p_pclientid[OUT] the found client id
Returns:
the result previously set if *pstatus == CLIENT_ID_SUCCESS

Definition at line 815 of file nfs4_clientid.c.

int nfs_client_id_insert ( nfs_client_id_t pclientid)

nfs_client_id_insert: Inserts an entry describing a clientid4 into the cache.

Inserts an entry describing a clientid4 into the cache.

Parameters:
pclientid[IN] the client id record
Returns:
CLIENT_ID_SUCCESS if successfull
.
CLIENT_ID_INSERT_MALLOC_ERROR if an error occured during the insertion process
CLIENT_ID_NETDB_ERROR if an error occured during the netdb query (via gethostbyaddr).

Definition at line 389 of file nfs4_clientid.c.

int nfs_in_grace ( )

Definition at line 112 of file nfs4_recovery.c.

int nfs_Init_client_id ( nfs_client_id_parameter_t param)

nfs_Init_client_id: Init the hashtable for Client Id cache.

Perform all the required initialization for hashtable Client Id cache

Parameters:
param[IN] parameter used to init the duplicate request cache
Returns:
0 if successful, -1 otherwise

Definition at line 850 of file nfs4_clientid.c.

void nfs_State_PrintAll ( void  )

nfs4_State_PrintAll

This routine displays the content of the hashtable used to store the states.

Returns:
nothing (void function)

Definition at line 513 of file nfs4_state_id.c.

void Process_nfs4_conflict ( LOCK4denied denied,
state_owner_t holder,
fsal_lock_param_t conflict 
)

Definition at line 584 of file nfs4_owner.c.

void release_lockstate ( state_owner_t plock_owner)

release_lockstate: Remove every state belonging to the lock owner.

Remove every state belonging to the lock owner.

Parameters:
plock_owner[IN] lock owner to release state for.

Definition at line 402 of file nfs4_state.c.

void Release_nfs4_denied ( LOCK4denied denied)

Definition at line 630 of file nfs4_owner.c.

void release_openstate ( state_owner_t popen_owner)

release_openstate: Remove every state belonging to the open owner.

Remove every state belonging to the open owner.

Parameters:
popen_owner[IN] open owner to release state for.

Definition at line 444 of file nfs4_state.c.

void remove_nfs4_owner ( state_owner_t powner,
const char *  str 
)

Definition at line 242 of file nfs4_owner.c.

int remove_unconfirmed_client_id ( nfs_client_id_t pclientid)

remove_unconfirmed_client_id: Removes an unconfirmed client id record.

Removes an unconfirmed client id record.

Parameters:
pclientid[IN] the client id record
Returns:
hash table error code

Definition at line 447 of file nfs4_clientid.c.

int reserve_lease ( nfs_client_id_t pclientid)

reserve_lease_lock: Check if lease is valid and reserve it and retain cid_mutex.

Check if lease is valid and reserve it and retain cid_mutex.

Lease reservation prevents any other thread from expiring the lease. Caller must call update lease to release the reservation.

Parameters:
pclientid[IN] clientid record to check lease for.
Returns:
1 if lease is valid, 0 if not.

Definition at line 115 of file nfs4_lease.c.

state_status_t state_add ( cache_entry_t pentry,
state_type_t  state_type,
state_data_t pstate_data,
state_owner_t powner_input,
fsal_op_context_t pcontext,
state_t **  ppstate,
state_status_t pstatus 
)

state_add: adds a new state to a file pentry

Adds a new state to a file pentry

Parameters:
pentry[INOUT] cache entry to operate on
state_type[IN] state to be defined
pstate_data[IN] data related to this state
powner_input[IN] related open_owner
pcontext[IN] FSAL credentials
ppstate[OUT] pointer to a pointer to the new state
pstatus[OUT] returned status
Returns:
the same as *pstatus

Definition at line 270 of file nfs4_state.c.

state_status_t state_add_impl ( cache_entry_t pentry,
state_type_t  state_type,
state_data_t pstate_data,
state_owner_t powner_input,
fsal_op_context_t pcontext,
state_t **  ppstate,
state_status_t pstatus 
)

state_add_impl: adds a new state to a file pentry

Adds a new state to a file pentry. This version of the function does not take the state lock on the entry. It exists to allow callers to integrate state into a larger operation.

Parameters:
pentry[INOUT] cache entry to operate on
state_type[IN] state to be defined
pstate_data[IN] data related to this state
powner_input[IN] related open_owner
pcontext[IN] FSAL credentials
ppstate[OUT] pointer to a pointer to the new state
pstatus[OUT] returned status
Returns:
the same as *pstatus

Definition at line 126 of file nfs4_state.c.

int state_conflict ( state_t pstate,
state_type_t  state_type,
state_data_t pstate_data 
)

state_conflict : checks for a conflict between an existing state and a candidate state.

Checks for a conflict between an existing state and a candidate state.

Parameters:
pstate[IN] existing state
state_type[IN] type of candidate state
pstate_data[IN] data for the candidate state
Returns:
TRUE if there is a conflict, FALSE if no conflict has been found

layout conflict is managed by the FSAL

Definition at line 72 of file nfs4_state.c.

state_status_t state_del ( state_t pstate,
state_status_t pstatus 
)

state_del: deletes a state from the hash's state

Deletes a state from the hash's state

Parameters:
pstate[OUT] pointer to the new state
pstatus[OUT] returned status
Returns:
the same as *pstatus

Definition at line 363 of file nfs4_state.c.

state_status_t state_del_locked ( state_t pstate,
cache_entry_t pentry 
)

Definition at line 300 of file nfs4_state.c.

const char* state_err_str ( state_status_t  err)

Definition at line 63 of file state_misc.c.

state_status_t state_error_convert ( fsal_status_t  fsal_status)

state_error_convert: converts an FSAL error to the corresponding state error.

Converts an FSAL error to the corresponding state error.

Parameters:
fsal_status[IN] fsal error to be converted.
Returns:
the result of the conversion.

Definition at line 178 of file state_misc.c.

uint64_t state_id_rbt_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

Definition at line 138 of file nfs4_state_id.c.

uint32_t state_id_value_hash_func ( hash_parameter_t p_hparam,
hash_buffer_t buffclef 
)

Definition at line 126 of file nfs4_state_id.c.

state_status_t state_lock ( cache_entry_t pentry,
fsal_op_context_t pcontext,
exportlist_t pexport,
state_owner_t powner,
state_t pstate,
state_blocking_t  blocking,
state_block_data_t block_data,
fsal_lock_param_t plock,
state_owner_t **  holder,
fsal_lock_param_t conflict,
state_status_t pstatus 
)

state_lock: Attempt to acquire a lock

This function acquires the state lock on a file.

Definition at line 2061 of file state_lock.c.

state_status_t state_lock_init ( state_status_t pstatus)

Definition at line 109 of file state_lock.c.

void state_lock_wipe ( cache_entry_t pentry)

Definition at line 3094 of file state_lock.c.

void state_nfs4_state_wipe ( cache_entry_t pentry)

Definition at line 377 of file nfs4_state.c.

state_status_t state_nlm_share ( cache_entry_t pentry,
fsal_op_context_t pcontext,
exportlist_t pexport,
int  share_access,
int  share_deny,
state_owner_t powner,
state_status_t pstatus 
)
state_status_t state_nlm_unshare ( cache_entry_t pentry,
fsal_op_context_t pcontext,
int  share_access,
int  share_deny,
state_owner_t powner,
state_status_t pstatus 
)
const char* state_owner_type_to_str ( state_owner_type_t  type)

Definition at line 717 of file state_misc.c.

state_status_t state_owner_unlock_all ( fsal_op_context_t pcontext,
state_owner_t powner,
state_t pstate,
state_status_t pstatus 
)

state_owner_unlock_all: Release all locks held by a lock owner

Definition at line 2915 of file state_lock.c.

state_status_t state_set ( state_t pstate,
state_status_t pstatus 
)
state_status_t state_share_add ( cache_entry_t pentry,
fsal_op_context_t pcontext,
state_owner_t powner,
state_t pstate,
state_status_t pstatus 
)

Definition at line 109 of file state_share.c.

void state_share_anonymous_io_done ( cache_entry_t pentry,
int  share_access 
)

Definition at line 619 of file state_share.c.

state_status_t state_share_anonymous_io_start ( cache_entry_t pentry,
int  share_access,
state_status_t pstatus 
)

Definition at line 592 of file state_share.c.

state_status_t state_share_check_conflict ( cache_entry_t pentry,
int  share_acccess,
int  share_deny,
state_status_t pstatus 
)

Definition at line 480 of file state_share.c.

state_status_t state_share_check_prev ( state_t pstate,
state_data_t pstate_data 
)

Definition at line 462 of file state_share.c.

state_status_t state_share_downgrade ( cache_entry_t pentry,
fsal_op_context_t pcontext,
state_data_t pstate_data,
state_owner_t powner,
state_t pstate,
state_status_t pstatus 
)

Definition at line 362 of file state_share.c.

state_status_t state_share_remove ( cache_entry_t pentry,
fsal_op_context_t pcontext,
state_owner_t powner,
state_t pstate,
state_status_t pstatus 
)

Definition at line 194 of file state_share.c.

state_status_t state_share_set_prev ( state_t pstate,
state_data_t pstate_data 
)

Definition at line 445 of file state_share.c.

state_status_t state_share_upgrade ( cache_entry_t pentry,
fsal_op_context_t pcontext,
state_data_t pstate_data,
state_owner_t powner,
state_t pstate,
state_status_t pstatus 
)

Definition at line 266 of file state_share.c.

state_status_t state_test ( cache_entry_t pentry,
fsal_op_context_t pcontext,
exportlist_t pexport,
state_owner_t powner,
fsal_lock_param_t plock,
state_owner_t **  holder,
fsal_lock_param_t conflict,
state_status_t pstatus 
)

state_test: Test for lock availability

This function acquires the state lock on an entry and thus is only suitable for operations like lockt. If one wishes to use it as part of a larger lock or state operation one would need to split it out.

Definition at line 1967 of file state_lock.c.

state_status_t state_unlock ( cache_entry_t pentry,
fsal_op_context_t pcontext,
exportlist_t pexport,
state_owner_t powner,
state_t pstate,
fsal_lock_param_t plock,
state_status_t pstatus 
)

state_unlock: Release a lock

Definition at line 2457 of file state_lock.c.

void state_wipe_file ( cache_entry_t pentry)

Definition at line 934 of file state_misc.c.

void update_lease ( nfs_client_id_t pclientid)

update_lease: Release a lease reservation, and update lease.

Release a lease reservation, and update lease. Caller must hold cid_mutex.

Lease reservation prevents any other thread from expiring the lease. This function releases the lease reservation. Before releasing the last reservation, cid_last_renew will be updated.

Parameters:
pclientid[IN] clientid record to check lease for.
Returns:
1 if lease is valid, 0 if not.

Definition at line 152 of file nfs4_lease.c.

void update_stateid ( state_t pstate,
stateid4 presp,
compound_data_t data,
const char *  tag 
)

Definition at line 519 of file nfs4_state_id.c.

int valid_lease ( nfs_client_id_t pclientid)

valid_lease: Check if lease is valid, caller holds cid_mutex.

Check if lease is valid, caller holds cid_mutex.

Parameters:
pclientid[IN] clientid record to check lease for.
Returns:
1 if lease is valid, 0 if not.

Definition at line 82 of file nfs4_lease.c.


Variable Documentation

The management of the session id cache.

Definition at line 39 of file nfs41_session_id.c.