Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
4 * All Rights Reserved.
5 */
6#ifndef __XFS_RTALLOC_H__
7#define __XFS_RTALLOC_H__
8
9/* kernel only definitions and functions */
10
11struct xfs_mount;
12struct xfs_trans;
13
14#ifdef CONFIG_XFS_RT
15/* rtgroup superblock initialization */
16int xfs_rtmount_readsb(struct xfs_mount *mp);
17void xfs_rtmount_freesb(struct xfs_mount *mp);
18
19/*
20 * Initialize realtime fields in the mount structure.
21 */
22int /* error */
23xfs_rtmount_init(
24 struct xfs_mount *mp); /* file system mount structure */
25void
26xfs_rtunmount_inodes(
27 struct xfs_mount *mp);
28
29/*
30 * Get the bitmap and summary inodes into the mount structure
31 * at mount time.
32 */
33int /* error */
34xfs_rtmount_inodes(
35 struct xfs_mount *mp); /* file system mount structure */
36
37void xfs_rt_resv_free(struct xfs_mount *mp);
38int xfs_rt_resv_init(struct xfs_mount *mp);
39
40/*
41 * Grow the realtime area of the filesystem.
42 */
43int
44xfs_growfs_rt(
45 struct xfs_mount *mp, /* file system mount structure */
46 xfs_growfs_rt_t *in); /* user supplied growfs struct */
47
48int xfs_rtalloc_reinit_frextents(struct xfs_mount *mp);
49int xfs_growfs_check_rtgeom(const struct xfs_mount *mp, xfs_rfsblock_t dblocks,
50 xfs_rfsblock_t rblocks, xfs_agblock_t rextsize);
51#else
52# define xfs_growfs_rt(mp,in) (-ENOSYS)
53# define xfs_rtalloc_reinit_frextents(m) (0)
54# define xfs_rtmount_readsb(mp) (0)
55# define xfs_rtmount_freesb(mp) ((void)0)
56static inline int /* error */
57xfs_rtmount_init(
58 xfs_mount_t *mp) /* file system mount structure */
59{
60 if (mp->m_sb.sb_rblocks == 0)
61 return 0;
62
63 xfs_warn(mp, "Not built with CONFIG_XFS_RT");
64 return -ENOSYS;
65}
66# define xfs_rtmount_inodes(m) (((mp)->m_sb.sb_rblocks == 0)? 0 : (-ENOSYS))
67# define xfs_rtunmount_inodes(m)
68# define xfs_rt_resv_free(mp) ((void)0)
69# define xfs_rt_resv_init(mp) (0)
70
71static inline int
72xfs_growfs_check_rtgeom(const struct xfs_mount *mp,
73 xfs_rfsblock_t dblocks, xfs_rfsblock_t rblocks,
74 xfs_extlen_t rextsize)
75{
76 return 0;
77}
78#endif /* CONFIG_XFS_RT */
79
80int xfs_rtallocate_rtgs(struct xfs_trans *tp, xfs_fsblock_t bno_hint,
81 xfs_rtxlen_t minlen, xfs_rtxlen_t maxlen, xfs_rtxlen_t prod,
82 bool wasdel, bool initial_user_data, xfs_rtblock_t *bno,
83 xfs_extlen_t *blen);
84
85#endif /* __XFS_RTALLOC_H__ */