diff mbox series

fs/fs-writeback.c: don't WARN on unregistered BDI

Message ID 20200611024417.462479-1-ming.lei@redhat.com (mailing list archive)
State New, archived
Headers show
Series fs/fs-writeback.c: don't WARN on unregistered BDI | expand

Commit Message

Ming Lei June 11, 2020, 2:44 a.m. UTC
BDI is unregistered from del_gendisk() which is usually done in device's
release handler from device hotplug or error handling context, so BDI
can be unregistered anytime.

It should be normal for __mark_inode_dirty to see un-registered BDI,
so replace the WARN() with pr_debug() just for debug purpose.

Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Brian Foster <bfoster@redhat.com>
Cc: Dave Chinner <dchinner@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org
Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
 fs/fs-writeback.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Christoph Hellwig June 11, 2020, 5:40 a.m. UTC | #1
On Thu, Jun 11, 2020 at 10:44:17AM +0800, Ming Lei wrote:
> BDI is unregistered from del_gendisk() which is usually done in device's
> release handler from device hotplug or error handling context, so BDI
> can be unregistered anytime.

True.

> It should be normal for __mark_inode_dirty to see un-registered BDI,
> so replace the WARN() with pr_debug() just for debug purpose.

I'd kill it entirely while we're at it..
diff mbox series

Patch

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index a605c3dddabc..5b7a5f5803ff 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -2318,9 +2318,10 @@  void __mark_inode_dirty(struct inode *inode, int flags)
 
 			wb = locked_inode_to_wb_and_lock_list(inode);
 
-			WARN(bdi_cap_writeback_dirty(wb->bdi) &&
-			     !test_bit(WB_registered, &wb->state),
-			     "bdi-%s not registered\n", bdi_dev_name(wb->bdi));
+			if (bdi_cap_writeback_dirty(wb->bdi) &&
+			     !test_bit(WB_registered, &wb->state))
+				pr_debug("bdi-%s not registered\n",
+						bdi_dev_name(wb->bdi));
 
 			inode->dirtied_when = jiffies;
 			if (dirtytime)