diff options
Diffstat (limited to 'fs/btrfs/tree-log.h')
| -rw-r--r-- | fs/btrfs/tree-log.h | 34 | 
1 files changed, 32 insertions, 2 deletions
diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h index 1d4ae0d15a7..7f5b41bd537 100644 --- a/fs/btrfs/tree-log.h +++ b/fs/btrfs/tree-log.h @@ -19,17 +19,47 @@  #ifndef __TREE_LOG_  #define __TREE_LOG_ +#include "ctree.h" +#include "transaction.h" +  /* return value for btrfs_log_dentry_safe that means we don't need to log it at all */  #define BTRFS_NO_LOG_SYNC 256 +struct btrfs_log_ctx { +	int log_ret; +	int log_transid; +	struct list_head list; +}; + +static inline void btrfs_init_log_ctx(struct btrfs_log_ctx *ctx) +{ +	ctx->log_ret = 0; +	ctx->log_transid = 0; +	INIT_LIST_HEAD(&ctx->list); +} + +static inline void btrfs_set_log_full_commit(struct btrfs_fs_info *fs_info, +					     struct btrfs_trans_handle *trans) +{ +	ACCESS_ONCE(fs_info->last_trans_log_full_commit) = trans->transid; +} + +static inline int btrfs_need_log_full_commit(struct btrfs_fs_info *fs_info, +					     struct btrfs_trans_handle *trans) +{ +	return ACCESS_ONCE(fs_info->last_trans_log_full_commit) == +		trans->transid; +} +  int btrfs_sync_log(struct btrfs_trans_handle *trans, -		   struct btrfs_root *root); +		   struct btrfs_root *root, struct btrfs_log_ctx *ctx);  int btrfs_free_log(struct btrfs_trans_handle *trans, struct btrfs_root *root);  int btrfs_free_log_root_tree(struct btrfs_trans_handle *trans,  			     struct btrfs_fs_info *fs_info);  int btrfs_recover_log_trees(struct btrfs_root *tree_root);  int btrfs_log_dentry_safe(struct btrfs_trans_handle *trans, -			  struct btrfs_root *root, struct dentry *dentry); +			  struct btrfs_root *root, struct dentry *dentry, +			  struct btrfs_log_ctx *ctx);  int btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans,  				 struct btrfs_root *root,  				 const char *name, int name_len,  | 
