All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Rosenberg <drosen@google.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <yuchao0@huawei.com>,
	Jonathan Corbet <corbet@lwn.net>,
	linux-f2fs-devel@lists.sourceforge.net
Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, kernel-team@android.com,
	Daniel Rosenberg <drosen@google.com>
Subject: [PATCH v3 2/4] f2fs: Fix root reserved on remount
Date: Wed, 29 May 2019 17:49:04 -0700	[thread overview]
Message-ID: <20190530004906.261170-3-drosen@google.com> (raw)
In-Reply-To: <20190530004906.261170-1-drosen@google.com>

On a remount, you can currently set root reserved if it was not
previously set. This can cause an underflow if reserved has been set to
a very high value, since then root reserved + current reserved could be
greater than user_block_count. inc_valid_block_count later subtracts out
these values from user_block_count, causing an underflow.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
---
 fs/f2fs/super.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 912e2619d581b..359fd68509d16 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -213,7 +213,8 @@ void f2fs_msg(struct super_block *sb, const char *level, const char *fmt, ...)
 
 static inline void limit_reserve_root(struct f2fs_sb_info *sbi)
 {
-	block_t limit = (sbi->user_block_count << 1) / 1000;
+	block_t limit = min((sbi->user_block_count << 1) / 1000,
+			sbi->user_block_count - sbi->reserved_blocks);
 
 	/* limit is 0.2% */
 	if (test_opt(sbi, RESERVE_ROOT) &&
-- 
2.22.0.rc1.257.g3120a18244-goog


  parent reply	other threads:[~2019-05-30  0:53 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-30  0:49 [PATCH v3 0/4] F2FS Checkpointing without GC, related fixes Daniel Rosenberg
2019-05-30  0:49 ` [PATCH v3 1/4] f2fs: Lower threshold for disable_cp_again Daniel Rosenberg
2019-06-03 10:33   ` Chao Yu
2019-06-03 10:33     ` Chao Yu
2019-05-30  0:49 ` Daniel Rosenberg [this message]
2019-06-03 10:34   ` [PATCH v3 2/4] f2fs: Fix root reserved on remount Chao Yu
2019-06-03 10:34     ` Chao Yu
2019-05-30  0:49 ` [PATCH v3 3/4] f2fs: Fix accounting for unusable blocks Daniel Rosenberg
2019-06-03 10:39   ` Chao Yu
2019-06-03 10:39     ` Chao Yu
2019-06-03 20:26     ` Jaegeuk Kim
2019-06-04  1:46       ` Chao Yu
2019-06-04  1:46         ` Chao Yu
2019-05-30  0:49 ` [PATCH v3 4/4] f2fs: Add option to limit required GC for checkpoint=disable Daniel Rosenberg
2019-06-03 15:15   ` [f2fs-dev] " Chao Yu

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=20190530004906.261170-3-drosen@google.com \
    --to=drosen@google.com \
    --cc=corbet@lwn.net \
    --cc=jaegeuk@kernel.org \
    --cc=kernel-team@android.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yuchao0@huawei.com \
    /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.