2006-01-16 19:50:04 +03:00
/*
* Copyright ( C ) Sistina Software , Inc . 1997 - 2003 All rights reserved .
2006-05-18 23:09:15 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2006-01-16 19:50:04 +03:00
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2006-09-01 19:05:15 +04:00
* of the GNU General Public License version 2.
2006-01-16 19:50:04 +03:00
*/
# ifndef __LOG_DOT_H__
# define __LOG_DOT_H__
2006-09-05 18:39:21 +04:00
# include <linux/list.h>
# include <linux/spinlock.h>
# include "incore.h"
2006-01-16 19:50:04 +03:00
/**
* gfs2_log_lock - acquire the right to mess with the log manager
* @ sdp : the filesystem
*
*/
static inline void gfs2_log_lock ( struct gfs2_sbd * sdp )
2008-05-30 05:27:51 +04:00
__acquires ( & sdp - > sd_log_lock )
2006-01-16 19:50:04 +03:00
{
spin_lock ( & sdp - > sd_log_lock ) ;
}
/**
* gfs2_log_unlock - release the right to mess with the log manager
* @ sdp : the filesystem
*
*/
static inline void gfs2_log_unlock ( struct gfs2_sbd * sdp )
2008-05-30 05:27:51 +04:00
__releases ( & sdp - > sd_log_lock )
2006-01-16 19:50:04 +03:00
{
spin_unlock ( & sdp - > sd_log_lock ) ;
}
static inline void gfs2_log_pointers_init ( struct gfs2_sbd * sdp ,
unsigned int value )
{
if ( + + value = = sdp - > sd_jdesc - > jd_blocks ) {
value = 0 ;
}
sdp - > sd_log_head = sdp - > sd_log_tail = value ;
}
unsigned int gfs2_struct2blk ( struct gfs2_sbd * sdp , unsigned int nstruct ,
unsigned int ssize ) ;
int gfs2_log_reserve ( struct gfs2_sbd * sdp , unsigned int blks ) ;
void gfs2_log_release ( struct gfs2_sbd * sdp , unsigned int blks ) ;
2007-09-17 13:59:52 +04:00
void gfs2_log_incr_head ( struct gfs2_sbd * sdp ) ;
2006-01-16 19:50:04 +03:00
struct buffer_head * gfs2_log_get_buf ( struct gfs2_sbd * sdp ) ;
struct buffer_head * gfs2_log_fake_buf ( struct gfs2_sbd * sdp ,
struct buffer_head * real ) ;
2007-11-08 17:25:12 +03:00
void __gfs2_log_flush ( struct gfs2_sbd * sdp , struct gfs2_glock * gl ) ;
static inline void gfs2_log_flush ( struct gfs2_sbd * sbd , struct gfs2_glock * gl )
{
if ( ! gl | | test_bit ( GLF_LFLUSH , & gl - > gl_flags ) )
__gfs2_log_flush ( sbd , gl ) ;
}
2006-01-16 19:50:04 +03:00
void gfs2_log_commit ( struct gfs2_sbd * sdp , struct gfs2_trans * trans ) ;
2007-10-15 19:29:05 +04:00
void gfs2_remove_from_ail ( struct gfs2_bufdata * bd ) ;
2006-01-16 19:50:04 +03:00
void gfs2_log_shutdown ( struct gfs2_sbd * sdp ) ;
2006-11-23 19:06:35 +03:00
void gfs2_meta_syncfs ( struct gfs2_sbd * sdp ) ;
2007-11-09 13:01:41 +03:00
int gfs2_logd ( void * data ) ;
2006-01-16 19:50:04 +03:00
# endif /* __LOG_DOT_H__ */