#include "xfs.h"
#include "xfs_fs.h"
#include "xfs_format.h"
#include "xfs_log_format.h"
#include "xfs_trans_resv.h"
#include "xfs_bit.h"
#include "xfs_shared.h"
#include "xfs_mount.h"
#include "xfs_ag.h"
#include "xfs_defer.h"
#include "xfs_trans.h"
#include "xfs_trans_priv.h"
#include "xfs_extfree_item.h"
#include "xfs_log.h"
#include "xfs_btree.h"
#include "xfs_rmap.h"
#include "xfs_alloc.h"
#include "xfs_bmap.h"
#include "xfs_trace.h"
#include "xfs_error.h"
#include "xfs_log_priv.h"
#include "xfs_log_recover.h"
struct kmem_cache *xfs_efi_cache;
struct kmem_cache *xfs_efd_cache;
static const struct xfs_item_ops xfs_efi_item_ops;
static inline struct xfs_efi_log_item *EFI_ITEM(struct xfs_log_item *lip)
{ … }
STATIC void
xfs_efi_item_free(
struct xfs_efi_log_item *efip)
{ … }
STATIC void
xfs_efi_release(
struct xfs_efi_log_item *efip)
{ … }
STATIC void
xfs_efi_item_size(
struct xfs_log_item *lip,
int *nvecs,
int *nbytes)
{ … }
STATIC void
xfs_efi_item_format(
struct xfs_log_item *lip,
struct xfs_log_vec *lv)
{ … }
STATIC void
xfs_efi_item_unpin(
struct xfs_log_item *lip,
int remove)
{ … }
STATIC void
xfs_efi_item_release(
struct xfs_log_item *lip)
{ … }
STATIC struct xfs_efi_log_item *
xfs_efi_init(
struct xfs_mount *mp,
uint nextents)
{ … }
STATIC int
xfs_efi_copy_format(xfs_log_iovec_t *buf, xfs_efi_log_format_t *dst_efi_fmt)
{ … }
static inline struct xfs_efd_log_item *EFD_ITEM(struct xfs_log_item *lip)
{ … }
STATIC void
xfs_efd_item_free(struct xfs_efd_log_item *efdp)
{ … }
STATIC void
xfs_efd_item_size(
struct xfs_log_item *lip,
int *nvecs,
int *nbytes)
{ … }
STATIC void
xfs_efd_item_format(
struct xfs_log_item *lip,
struct xfs_log_vec *lv)
{ … }
STATIC void
xfs_efd_item_release(
struct xfs_log_item *lip)
{ … }
static struct xfs_log_item *
xfs_efd_item_intent(
struct xfs_log_item *lip)
{ … }
static const struct xfs_item_ops xfs_efd_item_ops = …;
static inline struct xfs_extent_free_item *xefi_entry(const struct list_head *e)
{ … }
static void
xfs_efd_from_efi(
struct xfs_efd_log_item *efdp)
{ … }
static void
xfs_efd_add_extent(
struct xfs_efd_log_item *efdp,
struct xfs_extent_free_item *xefi)
{ … }
static int
xfs_extent_free_diff_items(
void *priv,
const struct list_head *a,
const struct list_head *b)
{ … }
STATIC void
xfs_extent_free_log_item(
struct xfs_trans *tp,
struct xfs_efi_log_item *efip,
struct xfs_extent_free_item *xefi)
{ … }
static struct xfs_log_item *
xfs_extent_free_create_intent(
struct xfs_trans *tp,
struct list_head *items,
unsigned int count,
bool sort)
{ … }
static struct xfs_log_item *
xfs_extent_free_create_done(
struct xfs_trans *tp,
struct xfs_log_item *intent,
unsigned int count)
{ … }
void
xfs_extent_free_defer_add(
struct xfs_trans *tp,
struct xfs_extent_free_item *xefi,
struct xfs_defer_pending **dfpp)
{ … }
STATIC void
xfs_extent_free_cancel_item(
struct list_head *item)
{ … }
STATIC int
xfs_extent_free_finish_item(
struct xfs_trans *tp,
struct xfs_log_item *done,
struct list_head *item,
struct xfs_btree_cur **state)
{ … }
STATIC void
xfs_extent_free_abort_intent(
struct xfs_log_item *intent)
{ … }
STATIC int
xfs_agfl_free_finish_item(
struct xfs_trans *tp,
struct xfs_log_item *done,
struct list_head *item,
struct xfs_btree_cur **state)
{ … }
static inline bool
xfs_efi_validate_ext(
struct xfs_mount *mp,
struct xfs_extent *extp)
{ … }
static inline void
xfs_efi_recover_work(
struct xfs_mount *mp,
struct xfs_defer_pending *dfp,
struct xfs_extent *extp)
{ … }
STATIC int
xfs_extent_free_recover_work(
struct xfs_defer_pending *dfp,
struct list_head *capture_list)
{ … }
static struct xfs_log_item *
xfs_extent_free_relog_intent(
struct xfs_trans *tp,
struct xfs_log_item *intent,
struct xfs_log_item *done_item)
{ … }
const struct xfs_defer_op_type xfs_extent_free_defer_type = …;
const struct xfs_defer_op_type xfs_agfl_free_defer_type = …;
STATIC bool
xfs_efi_item_match(
struct xfs_log_item *lip,
uint64_t intent_id)
{ … }
static const struct xfs_item_ops xfs_efi_item_ops = …;
STATIC int
xlog_recover_efi_commit_pass2(
struct xlog *log,
struct list_head *buffer_list,
struct xlog_recover_item *item,
xfs_lsn_t lsn)
{ … }
const struct xlog_recover_item_ops xlog_efi_item_ops = …;
STATIC int
xlog_recover_efd_commit_pass2(
struct xlog *log,
struct list_head *buffer_list,
struct xlog_recover_item *item,
xfs_lsn_t lsn)
{ … }
const struct xlog_recover_item_ops xlog_efd_item_ops = …;