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
[];
15 void gfs2_log_incr_head(struct gfs2_sbd
*sdp
);
16 u64
gfs2_log_bmap(struct gfs2_jdesc
*jd
, unsigned int lbn
);
17 void gfs2_log_write(struct gfs2_sbd
*sdp
, struct gfs2_jdesc
*jd
,
18 struct page
*page
, unsigned size
, unsigned offset
,
20 void gfs2_log_submit_bio(struct bio
**biop
, blk_opf_t opf
);
21 void gfs2_pin(struct gfs2_sbd
*sdp
, struct buffer_head
*bh
);
22 int gfs2_find_jhead(struct gfs2_jdesc
*jd
,
23 struct gfs2_log_header_host
*head
, bool keep_cache
);
24 void gfs2_drain_revokes(struct gfs2_sbd
*sdp
);
26 static inline unsigned int buf_limit(struct gfs2_sbd
*sdp
)
28 return sdp
->sd_ldptrs
;
31 static inline unsigned int databuf_limit(struct gfs2_sbd
*sdp
)
33 return sdp
->sd_ldptrs
/ 2;
36 static inline void lops_before_commit(struct gfs2_sbd
*sdp
,
37 struct gfs2_trans
*tr
)
40 for (x
= 0; gfs2_log_ops
[x
]; x
++)
41 if (gfs2_log_ops
[x
]->lo_before_commit
)
42 gfs2_log_ops
[x
]->lo_before_commit(sdp
, tr
);
45 static inline void lops_after_commit(struct gfs2_sbd
*sdp
,
46 struct gfs2_trans
*tr
)
49 for (x
= 0; gfs2_log_ops
[x
]; x
++)
50 if (gfs2_log_ops
[x
]->lo_after_commit
)
51 gfs2_log_ops
[x
]->lo_after_commit(sdp
, tr
);
54 static inline void lops_before_scan(struct gfs2_jdesc
*jd
,
55 struct gfs2_log_header_host
*head
,
59 for (x
= 0; gfs2_log_ops
[x
]; x
++)
60 if (gfs2_log_ops
[x
]->lo_before_scan
)
61 gfs2_log_ops
[x
]->lo_before_scan(jd
, head
, pass
);
64 static inline int lops_scan_elements(struct gfs2_jdesc
*jd
, u32 start
,
65 struct gfs2_log_descriptor
*ld
,
70 for (x
= 0; gfs2_log_ops
[x
]; x
++)
71 if (gfs2_log_ops
[x
]->lo_scan_elements
) {
72 error
= gfs2_log_ops
[x
]->lo_scan_elements(jd
, start
,
81 static inline void lops_after_scan(struct gfs2_jdesc
*jd
, int error
,
85 for (x
= 0; gfs2_log_ops
[x
]; x
++)
86 if (gfs2_log_ops
[x
]->lo_before_scan
)
87 gfs2_log_ops
[x
]->lo_after_scan(jd
, error
, pass
);
90 #endif /* __LOPS_DOT_H__ */