Motr  M0
file.c File Reference
#include "lib/trace.h"
#include "lib/arith.h"
#include "fid/fid_xc.h"
#include "xcode/xcode.h"
#include "rm/rm.h"
#include "file/file.h"
Include dependency graph for file.c:

Go to the source code of this file.

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_FILE
 
#define R_F(resource)   container_of(resource, struct m0_file, fi_res)
 

Functions

static bool file_lock_equal (const struct m0_rm_resource *resource0, const struct m0_rm_resource *resource1)
 
static m0_bcount_t file_lock_len (const struct m0_rm_resource *resource)
 
static int file_lock_encode (struct m0_bufvec_cursor *cur, const struct m0_rm_resource *resource)
 
static int file_lock_decode (struct m0_bufvec_cursor *cur, struct m0_rm_resource **resource)
 
static void file_lock_credit_init (struct m0_rm_resource *resource, struct m0_rm_credit *credit)
 
static void file_lock_resource_free (struct m0_rm_resource *resource)
 
static void file_lock_incoming_complete (struct m0_rm_incoming *in, int32_t rc)
 
static void file_lock_incoming_conflict (struct m0_rm_incoming *in)
 
static bool file_lock_cr_intersects (const struct m0_rm_credit *self, const struct m0_rm_credit *c1)
 
static m0_bcount_t file_lock_cr_len (const struct m0_rm_credit *c0)
 
static int file_lock_cr_join (struct m0_rm_credit *self, const struct m0_rm_credit *c1)
 
static int file_lock_cr_disjoin (struct m0_rm_credit *self, const struct m0_rm_credit *c1, struct m0_rm_credit *intersection)
 
static int file_lock_cr_copy (struct m0_rm_credit *dest, const struct m0_rm_credit *self)
 
static int file_lock_cr_diff (struct m0_rm_credit *self, const struct m0_rm_credit *c1)
 
static bool file_lock_cr_conflicts (const struct m0_rm_credit *self, const struct m0_rm_credit *c1)
 
static bool file_lock_cr_is_subset (const struct m0_rm_credit *self, const struct m0_rm_credit *c1)
 
static int file_lock_cr_encode (struct m0_rm_credit *self, struct m0_bufvec_cursor *cur)
 
static int file_lock_cr_decode (struct m0_rm_credit *self, struct m0_bufvec_cursor *cur)
 
static void file_lock_cr_free (struct m0_rm_credit *self)
 
static void file_lock_cr_initial_capital (struct m0_rm_credit *self)
 
static int file_lock_encdec (struct m0_file *file, struct m0_bufvec_cursor *cur, enum m0_xcode_what what)
 
static bool file_lock_credit_invariant (const struct m0_rm_credit *file_cr)
 
static int file_lock_cr_encdec (struct m0_rm_credit *self, struct m0_bufvec_cursor *cur, enum m0_xcode_what what)
 
M0_INTERNAL void m0_file_init (struct m0_file *file, const struct m0_fid *fid, struct m0_rm_domain *dom, enum m0_di_types di_type)
 
M0_INTERNAL void m0_file_fini (struct m0_file *file)
 
M0_INTERNAL void m0_file_owner_init (struct m0_rm_owner *owner, const struct m0_uint128 *grp_id, struct m0_file *file, struct m0_rm_remote *creditor)
 
M0_INTERNAL void m0_file_owner_fini (struct m0_rm_owner *owner)
 
M0_INTERNAL void m0_file_lock (struct m0_rm_owner *owner, struct m0_rm_incoming *req)
 
M0_INTERNAL void m0_file_unlock (struct m0_rm_incoming *req)
 
M0_INTERNAL int m0_file_lock_type_register (struct m0_rm_domain *dom, struct m0_rm_resource_type *flock_rt)
 
M0_INTERNAL void m0_file_lock_type_deregister (struct m0_rm_resource_type *flock_rt)
 
M0_INTERNAL int m0_file_mod_init (void)
 
M0_INTERNAL void m0_file_mod_fini (void)
 

Variables

const struct m0_rm_resource_type_ops file_lock_type_ops
 
const struct m0_rm_resource_ops file_lock_ops
 
const struct m0_rm_credit_ops file_lock_credit_ops
 
const struct m0_rm_incoming_ops file_lock_incoming_ops
 
const struct m0_fid_type m0_file_fid_type
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_FILE

Definition at line 24 of file file.c.