Merge tag 'uml-for-linus-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.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 */
302436c2
DW
37#define XFS_IGET_CREATE (1U << 0)
38#define XFS_IGET_UNTRUSTED (1U << 1)
39#define XFS_IGET_DONTCACHE (1U << 2)
40/* don't read from disk or reinit */
41#define XFS_IGET_INCORE (1U << 3)
42/* Return -EAGAIN immediately if the inode is unavailable. */
43#define XFS_IGET_NORETRY (1U << 4)
7bb85ef3 44
33479e05
DC
45int xfs_iget(struct xfs_mount *mp, struct xfs_trans *tp, xfs_ino_t ino,
46 uint flags, uint lock_flags, xfs_inode_t **ipp);
47
638f4416
DC
48/* recovery needs direct inode allocation capability */
49struct xfs_inode * xfs_inode_alloc(struct xfs_mount *mp, xfs_ino_t ino);
50void xfs_inode_free(struct xfs_inode *ip);
51
33c7a2bc 52void xfs_reclaim_worker(struct work_struct *work);
a167b17e 53
4d0bab3a 54void xfs_reclaim_inodes(struct xfs_mount *mp);
10be350b
DW
55long xfs_reclaim_inodes_count(struct xfs_mount *mp);
56long xfs_reclaim_inodes_nr(struct xfs_mount *mp, unsigned long nr_to_scan);
fce08f2f 57
c076ae7a 58void xfs_inode_mark_reclaimable(struct xfs_inode *ip);
fe588ed3 59
c237dd7c
DW
60int xfs_blockgc_free_dquots(struct xfs_mount *mp, struct xfs_dquot *udqp,
61 struct xfs_dquot *gdqp, struct xfs_dquot *pdqp,
2d53f66b
DW
62 unsigned int iwalk_flags);
63int xfs_blockgc_free_quota(struct xfs_inode *ip, unsigned int iwalk_flags);
b26b2bf1 64int xfs_blockgc_free_space(struct xfs_mount *mp, struct xfs_icwalk *icm);
e8d04c2a 65void xfs_blockgc_flush_all(struct xfs_mount *mp);
a636b1d1 66
27b52867
BF
67void xfs_inode_set_eofblocks_tag(struct xfs_inode *ip);
68void xfs_inode_clear_eofblocks_tag(struct xfs_inode *ip);
69
83104d44
DW
70void xfs_inode_set_cowblocks_tag(struct xfs_inode *ip);
71void xfs_inode_clear_cowblocks_tag(struct xfs_inode *ip);
9669f51d
DW
72
73void xfs_blockgc_worker(struct work_struct *work);
83104d44 74
378f681c
DW
75int xfs_icache_inode_is_allocated(struct xfs_mount *mp, struct xfs_trans *tp,
76 xfs_ino_t ino, bool *inuse);
77
c9a6526f
DW
78void xfs_blockgc_stop(struct xfs_mount *mp);
79void xfs_blockgc_start(struct xfs_mount *mp);
d6b636eb 80
ab23a776 81void xfs_inodegc_worker(struct work_struct *work);
5e672cd6 82void xfs_inodegc_push(struct xfs_mount *mp);
ab23a776
DC
83void xfs_inodegc_flush(struct xfs_mount *mp);
84void xfs_inodegc_stop(struct xfs_mount *mp);
85void xfs_inodegc_start(struct xfs_mount *mp);
86void xfs_inodegc_cpu_dead(struct xfs_mount *mp, unsigned int cpu);
40b1de00 87int xfs_inodegc_register_shrinker(struct xfs_mount *mp);
ab23a776 88
fe4fa4b8 89#endif