2008-09-05 16:13:11 -04:00
/*
* Copyright ( C ) 2008 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 v2 as published by the Free Software Foundation .
*
* 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 .
*
* You should have received a copy of the GNU General Public
* License along with this program ; if not , write to the
* Free Software Foundation , Inc . , 59 Temple Place - Suite 330 ,
* Boston , MA 021110 - 1307 , USA .
*/
# ifndef __TREE_LOG_
# define __TREE_LOG_
2009-10-13 13:21:08 -04:00
/* return value for btrfs_log_dentry_safe that means we don't need to log it at all */
# define BTRFS_NO_LOG_SYNC 256
2014-02-20 18:08:58 +08:00
struct btrfs_log_ctx {
int log_ret ;
2014-02-20 18:08:59 +08:00
int log_transid ;
2014-02-20 18:08:58 +08:00
struct list_head list ;
} ;
static inline void btrfs_init_log_ctx ( struct btrfs_log_ctx * ctx )
{
ctx - > log_ret = 0 ;
2014-02-20 18:08:59 +08:00
ctx - > log_transid = 0 ;
2014-02-20 18:08:58 +08:00
INIT_LIST_HEAD ( & ctx - > list ) ;
}
2008-09-05 16:13:11 -04:00
int btrfs_sync_log ( struct btrfs_trans_handle * trans ,
2014-02-20 18:08:58 +08:00
struct btrfs_root * root , struct btrfs_log_ctx * ctx ) ;
2008-09-05 16:13:11 -04:00
int btrfs_free_log ( struct btrfs_trans_handle * trans , struct btrfs_root * root ) ;
2010-05-16 10:49:59 -04:00
int btrfs_free_log_root_tree ( struct btrfs_trans_handle * trans ,
struct btrfs_fs_info * fs_info ) ;
2008-09-05 16:13:11 -04:00
int btrfs_recover_log_trees ( struct btrfs_root * tree_root ) ;
int btrfs_log_dentry_safe ( struct btrfs_trans_handle * trans ,
2014-02-20 18:08:58 +08:00
struct btrfs_root * root , struct dentry * dentry ,
struct btrfs_log_ctx * ctx ) ;
2008-09-05 16:13:11 -04:00
int btrfs_del_dir_entries_in_log ( struct btrfs_trans_handle * trans ,
struct btrfs_root * root ,
const char * name , int name_len ,
struct inode * dir , u64 index ) ;
int btrfs_del_inode_ref_in_log ( struct btrfs_trans_handle * trans ,
struct btrfs_root * root ,
const char * name , int name_len ,
struct inode * inode , u64 dirid ) ;
2012-03-01 14:56:26 +01:00
void btrfs_end_log_trans ( struct btrfs_root * root ) ;
2009-03-24 10:24:20 -04:00
int btrfs_pin_log_trans ( struct btrfs_root * root ) ;
void btrfs_record_unlink_dir ( struct btrfs_trans_handle * trans ,
struct inode * dir , struct inode * inode ,
int for_rename ) ;
int btrfs_log_new_name ( struct btrfs_trans_handle * trans ,
struct inode * inode , struct inode * old_dir ,
struct dentry * parent ) ;
2008-09-05 16:13:11 -04:00
# endif