linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail()
@ 2022-04-12 12:20 Jakob Koschel
  2022-04-12 12:20 ` [PATCH v2 2/2] f2fs: replace usage of found with dedicated list iterator variable Jakob Koschel
  2022-04-15  6:05 ` [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Chao Yu
  0 siblings, 2 replies; 3+ messages in thread
From: Jakob Koschel @ 2022-04-12 12:20 UTC (permalink / raw)
  To: Jaegeuk Kim
  Cc: Chao Yu, linux-f2fs-devel, linux-kernel, Mike Rapoport,
	Brian Johannesmeyer, Cristiano Giuffrida, Bos, H.J.,
	Jakob Koschel

In preparation to limit the scope of a list iterator to the list
traversal loop, the usage of the list iterator variable 'next' should
be avoided past the loop body [1].

Instead of calling list_move_tail() on 'next' after the loop, it is
called within the loop if the correct location was found.
After the loop it covers the case if no location was found and it
should be inserted based on the 'head' of the list.

Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/
Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>
---

v1->v2:
- Add early return to avoid introducing additional 'iter' variable
  (Chao Yu)

 fs/f2fs/segment.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 22dfeb991529..7ec1a2ef2167 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -4181,10 +4181,12 @@ static void adjust_sit_entry_set(struct sit_entry_set *ses,
 		return;

 	list_for_each_entry_continue(next, head, set_list)
-		if (ses->entry_cnt <= next->entry_cnt)
-			break;
+		if (ses->entry_cnt <= next->entry_cnt) {
+			list_move_tail(&ses->set_list, &next->set_list);
+			return;
+		}

-	list_move_tail(&ses->set_list, &next->set_list);
+	list_move_tail(&ses->set_list, head);
 }

 static void add_sit_entry(unsigned int segno, struct list_head *head)

base-commit: 3e732ebf7316ac83e8562db7e64cc68aec390a18
--
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH v2 2/2] f2fs: replace usage of found with dedicated list iterator variable
  2022-04-12 12:20 [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Jakob Koschel
@ 2022-04-12 12:20 ` Jakob Koschel
  2022-04-15  6:05 ` [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Chao Yu
  1 sibling, 0 replies; 3+ messages in thread
From: Jakob Koschel @ 2022-04-12 12:20 UTC (permalink / raw)
  To: Jaegeuk Kim
  Cc: Chao Yu, linux-f2fs-devel, linux-kernel, Mike Rapoport,
	Brian Johannesmeyer, Cristiano Giuffrida, Bos, H.J.,
	Jakob Koschel

To move the list iterator variable into the list_for_each_entry_*()
macro in the future it should be avoided to use the list iterator
variable after the loop body.

To *never* use the list iterator variable after the loop it was
concluded to use a separate iterator variable instead of a
found boolean [1].

This removes the need to use a found variable and simply checking if
the variable was set, can determine if the break/goto was hit.

Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/
Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>
Reviewed-by: Chao Yu <chao@kernel.org>
---
 fs/f2fs/segment.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 7ec1a2ef2167..7c52e352a356 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1666,33 +1666,32 @@ static unsigned int __wait_discard_cmd_range(struct f2fs_sb_info *sbi,
 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
 	struct list_head *wait_list = (dpolicy->type == DPOLICY_FSTRIM) ?
 					&(dcc->fstrim_list) : &(dcc->wait_list);
-	struct discard_cmd *dc, *tmp;
-	bool need_wait;
+	struct discard_cmd *dc = NULL, *iter, *tmp;
 	unsigned int trimmed = 0;

 next:
-	need_wait = false;
+	dc = NULL;

 	mutex_lock(&dcc->cmd_lock);
-	list_for_each_entry_safe(dc, tmp, wait_list, list) {
-		if (dc->lstart + dc->len <= start || end <= dc->lstart)
+	list_for_each_entry_safe(iter, tmp, wait_list, list) {
+		if (iter->lstart + iter->len <= start || end <= iter->lstart)
 			continue;
-		if (dc->len < dpolicy->granularity)
+		if (iter->len < dpolicy->granularity)
 			continue;
-		if (dc->state == D_DONE && !dc->ref) {
-			wait_for_completion_io(&dc->wait);
-			if (!dc->error)
-				trimmed += dc->len;
-			__remove_discard_cmd(sbi, dc);
+		if (iter->state == D_DONE && !iter->ref) {
+			wait_for_completion_io(&iter->wait);
+			if (!iter->error)
+				trimmed += iter->len;
+			__remove_discard_cmd(sbi, iter);
 		} else {
-			dc->ref++;
-			need_wait = true;
+			iter->ref++;
+			dc = iter;
 			break;
 		}
 	}
 	mutex_unlock(&dcc->cmd_lock);

-	if (need_wait) {
+	if (dc) {
 		trimmed += __wait_one_discard_bio(sbi, dc);
 		goto next;
 	}
--
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail()
  2022-04-12 12:20 [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Jakob Koschel
  2022-04-12 12:20 ` [PATCH v2 2/2] f2fs: replace usage of found with dedicated list iterator variable Jakob Koschel
@ 2022-04-15  6:05 ` Chao Yu
  1 sibling, 0 replies; 3+ messages in thread
From: Chao Yu @ 2022-04-15  6:05 UTC (permalink / raw)
  To: Jakob Koschel, Jaegeuk Kim
  Cc: linux-f2fs-devel, linux-kernel, Mike Rapoport,
	Brian Johannesmeyer, Cristiano Giuffrida, Bos, H.J.

On 2022/4/12 20:20, Jakob Koschel wrote:
> In preparation to limit the scope of a list iterator to the list
> traversal loop, the usage of the list iterator variable 'next' should
> be avoided past the loop body [1].
> 
> Instead of calling list_move_tail() on 'next' after the loop, it is
> called within the loop if the correct location was found.
> After the loop it covers the case if no location was found and it
> should be inserted based on the 'head' of the list.
> 
> Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/
> Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-04-15  6:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-12 12:20 [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Jakob Koschel
2022-04-12 12:20 ` [PATCH v2 2/2] f2fs: replace usage of found with dedicated list iterator variable Jakob Koschel
2022-04-15  6:05 ` [PATCH v2 1/2] f2fs: Remove usage of list iterator pas the loop for list_move_tail() Chao Yu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).