All of lore.kernel.org
 help / color / mirror / Atom feed
From: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
To: linux-ext4@vger.kernel.org
Cc: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
Subject: [PATCH 02/11] jbd2: add fast commit fields to journal_s structure
Date: Sun, 21 Jul 2019 21:00:02 -0700	[thread overview]
Message-ID: <20190722040011.18892-2-harshadshirwadkar@gmail.com> (raw)
In-Reply-To: <20190722040011.18892-1-harshadshirwadkar@gmail.com>

For fast commits, JBD2 as of now allocates a default of 128 blocks at
the end of the journalling area. Although JBD2 owns these blocks, it
doesn't control what exactly should be written in these blocks. It
just provides the right abstraction for making these blocks usable by
file systems. This patch adds necessary fields to manage these fast
commit blocks.

Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
---
 include/linux/jbd2.h | 78 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
index b7eed49b8ecd..6133a0cd22da 100644
--- a/include/linux/jbd2.h
+++ b/include/linux/jbd2.h
@@ -66,6 +66,7 @@ void __jbd2_debug(int level, const char *file, const char *func,
 extern void *jbd2_alloc(size_t size, gfp_t flags);
 extern void jbd2_free(void *ptr, size_t size);
 
+#define JBD2_FAST_COMMIT_BLOCKS 128
 #define JBD2_MIN_JOURNAL_BLOCKS 1024
 
 #ifdef __KERNEL__
@@ -918,6 +919,34 @@ struct journal_s
 	 */
 	unsigned long		j_last;
 
+	/**
+	 * @j_first_fc:
+	 *
+	 * The block number of the first fast commit block in the journal
+	 */
+	unsigned long		j_first_fc;
+
+	/**
+	 * @j_current_fc:
+	 *
+	 * Journal fc block iterator
+	 */
+	unsigned long		j_fc_off;
+
+	/**
+	 * @j_last_fc:
+	 *
+	 * The block number of the last fast commit block in the journal
+	 */
+	unsigned long		j_last_fc;
+
+	/**
+	 * @j_do_full_commit:
+	 *
+	 * Force a full commit. If this flag is set JBD2 won't try fast commits
+	 */
+	bool			j_do_full_commit;
+
 	/**
 	 * @j_dev: Device where we store the journal.
 	 */
@@ -987,6 +1016,15 @@ struct journal_s
 	 */
 	tid_t			j_transaction_sequence;
 
+	/**
+	 * @j_subtid:
+	 *
+	 * One plus the sequence number of the most recently committed fast
+	 * commit. This represents the sub transaction ID for the next fast
+	 * commit.
+	 */
+	tid_t			j_subtid;
+
 	/**
 	 * @j_commit_sequence:
 	 *
@@ -1068,6 +1106,20 @@ struct journal_s
 	 */
 	int			j_wbufsize;
 
+	/**
+	 * @j_fc_wbuf:
+	 *
+	 * Array of bhs for fast commit transactions
+	 */
+	struct buffer_head	**j_fc_wbuf;
+
+	/**
+	 * @j_fc_wbufsize:
+	 *
+	 * Size of @j_fc_wbufsize array.
+	 */
+	int			j_fc_wbufsize;
+
 	/**
 	 * @j_last_sync_writer:
 	 *
@@ -1167,6 +1219,32 @@ struct journal_s
 	 */
 	struct lockdep_map	j_trans_commit_map;
 #endif
+	/**
+	 * @j_fc_commit_callback:
+	 *
+	 * File-system specific function that performs actual fast commit
+	 * operation. Should return 0 if the fast commit was successful, in that
+	 * case, JBD2 will just increment journal->j_subtid and move on. If it
+	 * returns < 0, JBD2 will fall-back to full commit.
+	 */
+	int (*j_fc_commit_callback)(struct journal_s *journal, tid_t tid,
+				    tid_t subtid);
+	/**
+	 * @j_fc_replay_callback:
+	 *
+	 * File-system specific function that performs replay of a fast
+	 * commit. JBD2 calls this function for each fast commit block found in
+	 * the journal.
+	 */
+	int (*j_fc_replay_callback)(struct journal_s *journal,
+				    struct buffer_head *bh);
+	/**
+	 * @j_fc_cleanup_callback:
+	 *
+	 * Clean-up after fast commit or full commit. JBD2 calls this function
+	 * after every commit operation.
+	 */
+	void (*j_fc_cleanup_callback)(struct journal_s *journal);
 };
 
 #define jbd2_might_wait_for_commit(j) \
-- 
2.22.0.657.g960e92d24f-goog


  reply	other threads:[~2019-07-22  4:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22  4:00 [PATCH 01/11] ext4: add handling for extended mount options Harshad Shirwadkar
2019-07-22  4:00 ` Harshad Shirwadkar [this message]
2019-07-22  4:00 ` [PATCH 03/11] jbd2: fast commit setup and enable Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 04/11] jbd2: fast-commit commit path changes Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 05/11] jbd2: fast-commit commit path new APIs Harshad Shirwadkar
2019-07-22 17:45   ` kbuild test robot
2019-07-22 21:02   ` kbuild test robot
2019-07-22  4:00 ` [PATCH 06/11] jbd2: fast-commit recovery path changes Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 07/11] ext4: add fields that are needed to track changed files Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 08/11] ext4: track changed files for fast commit Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 09/11] ext4: fast-commit commit range tracking Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 10/11] ext4: fast-commit commit path changes Harshad Shirwadkar
2019-07-22  4:00 ` [PATCH 11/11] ext4: fast-commit recovery " Harshad Shirwadkar
2019-07-22 21:34   ` kbuild test robot
2019-07-22 18:15 ` [PATCH 01/11] ext4: add handling for extended mount options Andreas Dilger
2019-07-22 21:02   ` Theodore Y. Ts'o
2019-07-22 21:36     ` harshad shirwadkar
2019-07-23 21:59     ` Andreas Dilger
2019-07-24  6:03       ` harshad shirwadkar
2019-07-24  6:12         ` Darrick J. Wong
2019-07-24 16:07           ` Theodore Y. Ts'o
2019-07-24 16:56             ` Darrick J. Wong
2019-07-24 18:14               ` harshad shirwadkar
2019-07-25  3:46                 ` Theodore Y. Ts'o
2019-07-25 20:03                 ` Andreas Dilger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190722040011.18892-2-harshadshirwadkar@gmail.com \
    --to=harshadshirwadkar@gmail.com \
    --cc=linux-ext4@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.