[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231221085907.1772856-1-yukuai1@huaweicloud.com>
Date: Thu, 21 Dec 2023 16:59:07 +0800
From: Yu Kuai <yukuai1@...weicloud.com>
To: axboe@...nel.dk,
roger.pau@...rix.com,
colyli@...e.de,
kent.overstreet@...il.com,
joern@...ybastard.org,
miquel.raynal@...tlin.com,
richard@....at,
vigneshr@...com,
sth@...ux.ibm.com,
hoeppner@...ux.ibm.com,
hca@...ux.ibm.com,
gor@...ux.ibm.com,
agordeev@...ux.ibm.com,
jejb@...ux.ibm.com,
martin.petersen@...cle.com,
clm@...com,
josef@...icpanda.com,
dsterba@...e.com,
viro@...iv.linux.org.uk,
brauner@...nel.org,
nico@...xnic.net,
xiang@...nel.org,
chao@...nel.org,
tytso@....edu,
adilger.kernel@...ger.ca,
jack@...e.com,
konishi.ryusuke@...il.com,
willy@...radead.org,
akpm@...ux-foundation.org,
hare@...e.de,
p.raghav@...sung.com
Cc: linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org,
xen-devel@...ts.xenproject.org,
linux-bcache@...r.kernel.org,
linux-mtd@...ts.infradead.org,
linux-s390@...r.kernel.org,
linux-scsi@...r.kernel.org,
linux-bcachefs@...r.kernel.org,
linux-btrfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org,
linux-erofs@...ts.ozlabs.org,
linux-ext4@...r.kernel.org,
linux-nilfs@...r.kernel.org,
yukuai3@...wei.com,
yukuai1@...weicloud.com,
yi.zhang@...wei.com,
yangerkun@...wei.com
Subject: [PATCH RFC v3 for-6.8/block 16/17] ext4: remove block_device_ejected()
From: Yu Kuai <yukuai3@...wei.com>
block_device_ejected() is added by commit bdfe0cbd746a ("Revert
"ext4: remove block_device_ejected"") in 2015. At that time 'bdi->wb'
is destroyed synchronized from del_gendisk(), hence if ext4 is still
mounted, and then mark_buffer_dirty() will reference destroyed 'wb'.
However, such problem doesn't exist anymore:
- commit d03f6cdc1fc4 ("block: Dynamically allocate and refcount
backing_dev_info") switch bdi to use refcounting;
- commit 13eec2363ef0 ("fs: Get proper reference for s_bdi"), will grab
additional reference of bdi while mounting, so that 'bdi->wb' will not
be destroyed until generic_shutdown_super().
Hence remove this dead function block_device_ejected().
Signed-off-by: Yu Kuai <yukuai3@...wei.com>
Reviewed-by: Jan Kara <jack@...e.cz>
Reviewed-by: Christoph Hellwig <hch@....de>
---
fs/ext4/super.c | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 3f07eaa33332..a7935edbd7b1 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -467,22 +467,6 @@ static void ext4_maybe_update_superblock(struct super_block *sb)
schedule_work(&EXT4_SB(sb)->s_sb_upd_work);
}
-/*
- * The del_gendisk() function uninitializes the disk-specific data
- * structures, including the bdi structure, without telling anyone
- * else. Once this happens, any attempt to call mark_buffer_dirty()
- * (for example, by ext4_commit_super), will cause a kernel OOPS.
- * This is a kludge to prevent these oops until we can put in a proper
- * hook in del_gendisk() to inform the VFS and file system layers.
- */
-static int block_device_ejected(struct super_block *sb)
-{
- struct inode *bd_inode = sb->s_bdev->bd_inode;
- struct backing_dev_info *bdi = inode_to_bdi(bd_inode);
-
- return bdi->dev == NULL;
-}
-
static void ext4_journal_commit_callback(journal_t *journal, transaction_t *txn)
{
struct super_block *sb = journal->j_private;
@@ -6162,8 +6146,6 @@ static int ext4_commit_super(struct super_block *sb)
if (!sbh)
return -EINVAL;
- if (block_device_ejected(sb))
- return -ENODEV;
ext4_update_super(sb);
--
2.39.2
Powered by blists - more mailing lists