Skip to content

Commit

Permalink
bcache: add code comments for journal_read_bucket()
Browse files Browse the repository at this point in the history
This patch adds more code comments in journal_read_bucket(), this is an
effort to make the code to be more understandable.

Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Coly Li authored and Jens Axboe committed Jun 28, 2019
1 parent 7e865eb commit 2464b69
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/md/bcache/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,20 @@ reread: left = ca->sb.bucket_size - offset;

blocks = set_blocks(j, block_bytes(ca->set));

/*
* Nodes in 'list' are in linear increasing order of
* i->j.seq, the node on head has the smallest (oldest)
* journal seq, the node on tail has the biggest
* (latest) journal seq.
*/

/*
* Check from the oldest jset for last_seq. If
* i->j.seq < j->last_seq, it means the oldest jset
* in list is expired and useless, remove it from
* this list. Otherwise, j is a condidate jset for
* further following checks.
*/
while (!list_empty(list)) {
i = list_first_entry(list,
struct journal_replay, list);
Expand All @@ -109,13 +123,22 @@ reread: left = ca->sb.bucket_size - offset;
kfree(i);
}

/* iterate list in reverse order (from latest jset) */
list_for_each_entry_reverse(i, list, list) {
if (j->seq == i->j.seq)
goto next_set;

/*
* if j->seq is less than any i->j.last_seq
* in list, j is an expired and useless jset.
*/
if (j->seq < i->j.last_seq)
goto next_set;

/*
* 'where' points to first jset in list which
* is elder then j.
*/
if (j->seq > i->j.seq) {
where = &i->list;
goto add;
Expand All @@ -129,6 +152,7 @@ reread: left = ca->sb.bucket_size - offset;
if (!i)
return -ENOMEM;
memcpy(&i->j, j, bytes);
/* Add to the location after 'where' points to */
list_add(&i->list, where);
ret = 1;

Expand Down

0 comments on commit 2464b69

Please sign in to comment.