]>
git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - fs/gfs2/lops.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
4 * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
10 #include <linux/list.h>
13 extern const struct gfs2_log_operations
*gfs2_log_ops
[];
14 extern void gfs2_log_incr_head(struct gfs2_sbd
*sdp
);
15 extern u64
gfs2_log_bmap(struct gfs2_jdesc
*jd
, unsigned int lbn
);
16 extern void gfs2_log_write(struct gfs2_sbd
*sdp
, struct gfs2_jdesc
*jd
,
17 struct page
*page
, unsigned size
, unsigned offset
,
19 extern void gfs2_log_submit_bio(struct bio
**biop
, int opf
);
20 extern void gfs2_pin(struct gfs2_sbd
*sdp
, struct buffer_head
*bh
);
21 extern int gfs2_find_jhead(struct gfs2_jdesc
*jd
,
22 struct gfs2_log_header_host
*head
, bool keep_cache
);
23 extern void gfs2_drain_revokes(struct gfs2_sbd
*sdp
);
24 static inline unsigned int buf_limit(struct gfs2_sbd
*sdp
)
26 return sdp
->sd_ldptrs
;
29 static inline unsigned int databuf_limit(struct gfs2_sbd
*sdp
)
31 return sdp
->sd_ldptrs
/ 2;
34 static inline void lops_before_commit(struct gfs2_sbd
*sdp
,
35 struct gfs2_trans
*tr
)
38 for (x
= 0; gfs2_log_ops
[x
]; x
++)
39 if (gfs2_log_ops
[x
]->lo_before_commit
)
40 gfs2_log_ops
[x
]->lo_before_commit(sdp
, tr
);
43 static inline void lops_after_commit(struct gfs2_sbd
*sdp
,
44 struct gfs2_trans
*tr
)
47 for (x
= 0; gfs2_log_ops
[x
]; x
++)
48 if (gfs2_log_ops
[x
]->lo_after_commit
)
49 gfs2_log_ops
[x
]->lo_after_commit(sdp
, tr
);
52 static inline void lops_before_scan(struct gfs2_jdesc
*jd
,
53 struct gfs2_log_header_host
*head
,
57 for (x
= 0; gfs2_log_ops
[x
]; x
++)
58 if (gfs2_log_ops
[x
]->lo_before_scan
)
59 gfs2_log_ops
[x
]->lo_before_scan(jd
, head
, pass
);
62 static inline int lops_scan_elements(struct gfs2_jdesc
*jd
, u32 start
,
63 struct gfs2_log_descriptor
*ld
,
68 for (x
= 0; gfs2_log_ops
[x
]; x
++)
69 if (gfs2_log_ops
[x
]->lo_scan_elements
) {
70 error
= gfs2_log_ops
[x
]->lo_scan_elements(jd
, start
,
79 static inline void lops_after_scan(struct gfs2_jdesc
*jd
, int error
,
83 for (x
= 0; gfs2_log_ops
[x
]; x
++)
84 if (gfs2_log_ops
[x
]->lo_before_scan
)
85 gfs2_log_ops
[x
]->lo_after_scan(jd
, error
, pass
);
88 #endif /* __LOPS_DOT_H__ */