+#ifdef HAVE_LDISKFS_JOURNAL_ENSURE_CREDITS
+void osd_ldiskfs_credits_for_revoke(struct osd_device *osd,
+ struct osd_thandle *oh,
+ int *credits, int *revoke)
+{
+ int blocks = LDISKFS_MAX_EXTENT_DEPTH * oh->oh_declared_ext;
+ *revoke += ldiskfs_trans_default_revoke_credits(osd_sb(osd)) + blocks;
+}
+#else
+void osd_ldiskfs_credits_for_revoke(struct osd_device *osd,
+ struct osd_thandle *oh,
+ int *credits, int *revoke)
+{
+ struct journal_s *journal = LDISKFS_SB(osd_sb(osd))->s_journal;
+ int blocks, jbsize, records_per_block;
+
+ blocks = LDISKFS_MAX_EXTENT_DEPTH * oh->oh_declared_ext;
+ jbsize = journal->j_blocksize;
+ jbsize -= sizeof(struct jbd2_journal_block_tail) +
+ sizeof(jbd2_journal_revoke_header_t);
+ records_per_block = jbsize / 8;
+ *credits += (blocks + records_per_block - 1) / records_per_block;
+}
+#endif
+