]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - fs/xfs/xfs_icache.h
Merge tag 'xfs-5.15-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[mirror_ubuntu-jammy-kernel.git] / fs / xfs / xfs_icache.h
CommitLineData
0b61f8a4 1// SPDX-License-Identifier: GPL-2.0
a167b17e
DC
2/*
3 * Copyright (c) 2000-2006 Silicon Graphics, Inc.
4 * All Rights Reserved.
a167b17e 5 */
fe4fa4b8
DC
6#ifndef XFS_SYNC_H
7#define XFS_SYNC_H 1
8
a167b17e 9struct xfs_mount;
fcafb71b 10struct xfs_perag;
a167b17e 11
b26b2bf1
DW
12struct xfs_icwalk {
13 __u32 icw_flags;
14 kuid_t icw_uid;
15 kgid_t icw_gid;
16 prid_t icw_prid;
17 __u64 icw_min_file_size;
10be350b 18 long icw_scan_limit;
b9fe5052
DE
19};
20
2d53f66b
DW
21/* Flags that reflect xfs_fs_eofblocks functionality. */
22#define XFS_ICWALK_FLAG_SYNC (1U << 0) /* sync/wait mode scan */
23#define XFS_ICWALK_FLAG_UID (1U << 1) /* filter by uid */
24#define XFS_ICWALK_FLAG_GID (1U << 2) /* filter by gid */
25#define XFS_ICWALK_FLAG_PRID (1U << 3) /* filter by project id */
26#define XFS_ICWALK_FLAG_MINFILESIZE (1U << 4) /* filter by min file size */
27
28#define XFS_ICWALK_FLAGS_VALID (XFS_ICWALK_FLAG_SYNC | \
29 XFS_ICWALK_FLAG_UID | \
30 XFS_ICWALK_FLAG_GID | \
31 XFS_ICWALK_FLAG_PRID | \
32 XFS_ICWALK_FLAG_MINFILESIZE)
33
7bb85ef3
DC
34/*
35 * Flags for xfs_iget()
36 */
37#define XFS_IGET_CREATE 0x1
38#define XFS_IGET_UNTRUSTED 0x2
39#define XFS_IGET_DONTCACHE 0x4
378f681c 40#define XFS_IGET_INCORE 0x8 /* don't read from disk or reinit */
7bb85ef3 41
33479e05
DC
42int xfs_iget(struct xfs_mount *mp, struct xfs_trans *tp, xfs_ino_t ino,
43 uint flags, uint lock_flags, xfs_inode_t **ipp);
44
638f4416
DC
45/* recovery needs direct inode allocation capability */
46struct xfs_inode * xfs_inode_alloc(struct xfs_mount *mp, xfs_ino_t ino);
47void xfs_inode_free(struct xfs_inode *ip);
48
33c7a2bc 49void xfs_reclaim_worker(struct work_struct *work);
a167b17e 50
4d0bab3a 51void xfs_reclaim_inodes(struct xfs_mount *mp);
10be350b
DW
52long xfs_reclaim_inodes_count(struct xfs_mount *mp);
53long xfs_reclaim_inodes_nr(struct xfs_mount *mp, unsigned long nr_to_scan);
fce08f2f 54
c076ae7a 55void xfs_inode_mark_reclaimable(struct xfs_inode *ip);
fe588ed3 56
c237dd7c
DW
57int xfs_blockgc_free_dquots(struct xfs_mount *mp, struct xfs_dquot *udqp,
58 struct xfs_dquot *gdqp, struct xfs_dquot *pdqp,
2d53f66b
DW
59 unsigned int iwalk_flags);
60int xfs_blockgc_free_quota(struct xfs_inode *ip, unsigned int iwalk_flags);
b26b2bf1 61int xfs_blockgc_free_space(struct xfs_mount *mp, struct xfs_icwalk *icm);
e8d04c2a 62void xfs_blockgc_flush_all(struct xfs_mount *mp);
a636b1d1 63
27b52867
BF
64void xfs_inode_set_eofblocks_tag(struct xfs_inode *ip);
65void xfs_inode_clear_eofblocks_tag(struct xfs_inode *ip);
66
83104d44
DW
67void xfs_inode_set_cowblocks_tag(struct xfs_inode *ip);
68void xfs_inode_clear_cowblocks_tag(struct xfs_inode *ip);
9669f51d
DW
69
70void xfs_blockgc_worker(struct work_struct *work);
83104d44 71
378f681c
DW
72int xfs_icache_inode_is_allocated(struct xfs_mount *mp, struct xfs_trans *tp,
73 xfs_ino_t ino, bool *inuse);
74
c9a6526f
DW
75void xfs_blockgc_stop(struct xfs_mount *mp);
76void xfs_blockgc_start(struct xfs_mount *mp);
d6b636eb 77
ab23a776
DC
78void xfs_inodegc_worker(struct work_struct *work);
79void xfs_inodegc_flush(struct xfs_mount *mp);
80void xfs_inodegc_stop(struct xfs_mount *mp);
81void xfs_inodegc_start(struct xfs_mount *mp);
82void xfs_inodegc_cpu_dead(struct xfs_mount *mp, unsigned int cpu);
40b1de00 83int xfs_inodegc_register_shrinker(struct xfs_mount *mp);
ab23a776 84
fe4fa4b8 85#endif