^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* -*- mode: c; c-basic-offset: 8; -*-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * vim: noexpandtab sw=8 ts=8 sts=0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * localalloc.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Function prototypes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Copyright (C) 2002, 2004 Oracle. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #ifndef OCFS2_LOCALALLOC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define OCFS2_LOCALALLOC_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) int ocfs2_load_local_alloc(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) void ocfs2_shutdown_local_alloc(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) void ocfs2_la_set_sizes(struct ocfs2_super *osb, int requested_mb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned int ocfs2_la_default_mb(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) int ocfs2_begin_local_alloc_recovery(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) int node_num,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) struct ocfs2_dinode **alloc_copy);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) int ocfs2_complete_local_alloc_recovery(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct ocfs2_dinode *alloc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int ocfs2_alloc_should_use_local(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) u64 bits);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct ocfs2_alloc_context;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) u32 bits_wanted,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct ocfs2_alloc_context *ac);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) int ocfs2_claim_local_alloc_bits(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct ocfs2_alloc_context *ac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) u32 bits_wanted,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) u32 *bit_off,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) u32 *num_bits);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) int ocfs2_free_local_alloc_bits(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) struct ocfs2_alloc_context *ac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) u32 bit_off,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) u32 num_bits);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) void ocfs2_local_alloc_seen_free_bits(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) unsigned int num_clusters);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) void ocfs2_la_enable_worker(struct work_struct *work);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #endif /* OCFS2_LOCALALLOC_H */