2022-07-13 05:57:49

by Christoph Hellwig

[permalink] [raw]
Subject: remove bdevname

Hi Jens,

this series removes the final uses and the implementation of the bdevname()
function.

Diffstat:
block/bdev.c | 10 ++---
block/blk-lib.c | 6 +--
block/genhd.c | 23 ------------
drivers/block/drbd/drbd_req.c | 6 +--
drivers/block/pktcdvd.c | 10 +----
drivers/block/rnbd/rnbd-srv-dev.c | 1
drivers/block/rnbd/rnbd-srv-dev.h | 1
drivers/block/rnbd/rnbd-srv-sysfs.c | 5 +-
drivers/block/rnbd/rnbd-srv.c | 9 ++---
drivers/block/rnbd/rnbd-srv.h | 3 -
drivers/md/md.c | 2 -
drivers/md/raid1.c | 2 -
drivers/md/raid10.c | 2 -
fs/ext4/mmp.c | 9 ++---
fs/jbd2/journal.c | 6 ++-
fs/ocfs2/cluster/heartbeat.c | 64 ++++++++++++++++--------------------
include/linux/blkdev.h | 1
kernel/trace/blktrace.c | 4 +-
18 files changed, 62 insertions(+), 102 deletions(-)


2022-07-13 05:57:54

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 2/9] block: stop using bdevname in __blkdev_issue_discard

Just use the %pg format specifier instead.

Signed-off-by: Christoph Hellwig <[email protected]>
---
block/blk-lib.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/block/blk-lib.c b/block/blk-lib.c
index 09b7e1200c0f4..67e6dbc1ae817 100644
--- a/block/blk-lib.c
+++ b/block/blk-lib.c
@@ -48,10 +48,8 @@ int __blkdev_issue_discard(struct block_device *bdev, sector_t sector,

/* In case the discard granularity isn't set by buggy device driver */
if (WARN_ON_ONCE(!bdev_discard_granularity(bdev))) {
- char dev_name[BDEVNAME_SIZE];
-
- bdevname(bdev, dev_name);
- pr_err_ratelimited("%s: Error: discard_granularity is 0.\n", dev_name);
+ pr_err_ratelimited("%pg: Error: discard_granularity is 0.\n",
+ bdev);
return -EOPNOTSUPP;
}

--
2.30.2

2022-07-13 05:57:55

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 3/9] drbd: stop using bdevname in drbd_report_io_error

Just use the %pg format specifier instead.

Signed-off-by: Christoph Hellwig <[email protected]>
---
drivers/block/drbd/drbd_req.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
index e64bcfba30ef3..6d8dd14458c69 100644
--- a/drivers/block/drbd/drbd_req.c
+++ b/drivers/block/drbd/drbd_req.c
@@ -523,16 +523,14 @@ static void mod_rq_state(struct drbd_request *req, struct bio_and_error *m,

static void drbd_report_io_error(struct drbd_device *device, struct drbd_request *req)
{
- char b[BDEVNAME_SIZE];
-
if (!__ratelimit(&drbd_ratelimit_state))
return;

- drbd_warn(device, "local %s IO error sector %llu+%u on %s\n",
+ drbd_warn(device, "local %s IO error sector %llu+%u on %pg\n",
(req->rq_state & RQ_WRITE) ? "WRITE" : "READ",
(unsigned long long)req->i.sector,
req->i.size >> 9,
- bdevname(device->ldev->backing_bdev, b));
+ device->ldev->backing_bdev);
}

/* Helper for HANDED_OVER_TO_NETWORK.
--
2.30.2

2022-07-13 05:58:41

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 6/9] rnbd-srv: remove the name field from struct rnbd_dev

Just print the block device name directly using the %pg format specifier.

Signed-off-by: Christoph Hellwig <[email protected]>
---
drivers/block/rnbd/rnbd-srv-dev.c | 1 -
drivers/block/rnbd/rnbd-srv-dev.h | 1 -
drivers/block/rnbd/rnbd-srv-sysfs.c | 5 ++---
drivers/block/rnbd/rnbd-srv.c | 9 ++++-----
drivers/block/rnbd/rnbd-srv.h | 3 +--
5 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/drivers/block/rnbd/rnbd-srv-dev.c b/drivers/block/rnbd/rnbd-srv-dev.c
index c5d0a03911659..c63017f6e4214 100644
--- a/drivers/block/rnbd/rnbd-srv-dev.c
+++ b/drivers/block/rnbd/rnbd-srv-dev.c
@@ -28,7 +28,6 @@ struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags)
goto err;

dev->blk_open_flags = flags;
- bdevname(dev->bdev, dev->name);

return dev;

diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h
index 4309e52524691..8407d12f70afe 100644
--- a/drivers/block/rnbd/rnbd-srv-dev.h
+++ b/drivers/block/rnbd/rnbd-srv-dev.h
@@ -15,7 +15,6 @@
struct rnbd_dev {
struct block_device *bdev;
fmode_t blk_open_flags;
- char name[BDEVNAME_SIZE];
};

/**
diff --git a/drivers/block/rnbd/rnbd-srv-sysfs.c b/drivers/block/rnbd/rnbd-srv-sysfs.c
index feaa76c5a3423..297a6924ff4e2 100644
--- a/drivers/block/rnbd/rnbd-srv-sysfs.c
+++ b/drivers/block/rnbd/rnbd-srv-sysfs.c
@@ -38,14 +38,13 @@ static struct kobj_type dev_ktype = {
};

int rnbd_srv_create_dev_sysfs(struct rnbd_srv_dev *dev,
- struct block_device *bdev,
- const char *dev_name)
+ struct block_device *bdev)
{
struct kobject *bdev_kobj;
int ret;

ret = kobject_init_and_add(&dev->dev_kobj, &dev_ktype,
- rnbd_devs_kobj, dev_name);
+ rnbd_devs_kobj, "%pg", bdev);
if (ret) {
kobject_put(&dev->dev_kobj);
return ret;
diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c
index beaef43a67b9d..0713014bf423f 100644
--- a/drivers/block/rnbd/rnbd-srv.c
+++ b/drivers/block/rnbd/rnbd-srv.c
@@ -419,7 +419,7 @@ static struct rnbd_srv_sess_dev
return sess_dev;
}

-static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(const char *id)
+static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(struct block_device *bdev)
{
struct rnbd_srv_dev *dev;

@@ -427,7 +427,7 @@ static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(const char *id)
if (!dev)
return ERR_PTR(-ENOMEM);

- strscpy(dev->id, id, sizeof(dev->id));
+ snprintf(dev->id, sizeof(dev->id), "%pg", bdev);
kref_init(&dev->kref);
INIT_LIST_HEAD(&dev->sess_dev_list);
mutex_init(&dev->lock);
@@ -512,7 +512,7 @@ rnbd_srv_get_or_create_srv_dev(struct rnbd_dev *rnbd_dev,
int ret;
struct rnbd_srv_dev *new_dev, *dev;

- new_dev = rnbd_srv_init_srv_dev(rnbd_dev->name);
+ new_dev = rnbd_srv_init_srv_dev(rnbd_dev->bdev);
if (IS_ERR(new_dev))
return new_dev;

@@ -758,8 +758,7 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess,
*/
mutex_lock(&srv_dev->lock);
if (!srv_dev->dev_kobj.state_in_sysfs) {
- ret = rnbd_srv_create_dev_sysfs(srv_dev, rnbd_dev->bdev,
- rnbd_dev->name);
+ ret = rnbd_srv_create_dev_sysfs(srv_dev, rnbd_dev->bdev);
if (ret) {
mutex_unlock(&srv_dev->lock);
rnbd_srv_err(srv_sess_dev,
diff --git a/drivers/block/rnbd/rnbd-srv.h b/drivers/block/rnbd/rnbd-srv.h
index be2ae486d407e..6926f9069dc4b 100644
--- a/drivers/block/rnbd/rnbd-srv.h
+++ b/drivers/block/rnbd/rnbd-srv.h
@@ -68,8 +68,7 @@ void rnbd_srv_sess_dev_force_close(struct rnbd_srv_sess_dev *sess_dev,
/* rnbd-srv-sysfs.c */

int rnbd_srv_create_dev_sysfs(struct rnbd_srv_dev *dev,
- struct block_device *bdev,
- const char *dir_name);
+ struct block_device *bdev);
void rnbd_srv_destroy_dev_sysfs(struct rnbd_srv_dev *dev);
int rnbd_srv_create_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
void rnbd_srv_destroy_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
--
2.30.2

2022-07-13 05:58:41

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 7/9] ocfs2/cluster: remove the hr_dev_name field from struct o2hb_region

Just print the block device name directly using the %pg format specifier.

Signed-off-by: Christoph Hellwig <[email protected]>
---
fs/ocfs2/cluster/heartbeat.c | 64 +++++++++++++++++-------------------
1 file changed, 30 insertions(+), 34 deletions(-)

diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
index ea0e70c0fce09..5f83c0c0918c0 100644
--- a/fs/ocfs2/cluster/heartbeat.c
+++ b/fs/ocfs2/cluster/heartbeat.c
@@ -235,8 +235,6 @@ struct o2hb_region {
* (hr_steady_iterations == 0) within hr_unsteady_iterations */
atomic_t hr_unsteady_iterations;

- char hr_dev_name[BDEVNAME_SIZE];
-
unsigned int hr_timeout_ms;

/* randomized as the region goes up and down so that a node
@@ -287,8 +285,8 @@ static void o2hb_write_timeout(struct work_struct *work)
container_of(work, struct o2hb_region,
hr_write_timeout_work.work);

- mlog(ML_ERROR, "Heartbeat write timeout to device %s after %u "
- "milliseconds\n", reg->hr_dev_name,
+ mlog(ML_ERROR, "Heartbeat write timeout to device %pg after %u "
+ "milliseconds\n", reg->hr_bdev,
jiffies_to_msecs(jiffies - reg->hr_last_timeout_start));

if (o2hb_global_heartbeat_active()) {
@@ -383,9 +381,9 @@ static void o2hb_nego_timeout(struct work_struct *work)

if (master_node == o2nm_this_node()) {
if (!test_bit(master_node, reg->hr_nego_node_bitmap)) {
- printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%s).\n",
+ printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%pg).\n",
o2nm_this_node(), O2HB_NEGO_TIMEOUT_MS/1000,
- config_item_name(&reg->hr_item), reg->hr_dev_name);
+ config_item_name(&reg->hr_item), reg->hr_bdev);
set_bit(master_node, reg->hr_nego_node_bitmap);
}
if (memcmp(reg->hr_nego_node_bitmap, live_node_bitmap,
@@ -399,8 +397,8 @@ static void o2hb_nego_timeout(struct work_struct *work)
return;
}

- printk(KERN_NOTICE "o2hb: all nodes hb write hung, maybe region %s (%s) is down.\n",
- config_item_name(&reg->hr_item), reg->hr_dev_name);
+ printk(KERN_NOTICE "o2hb: all nodes hb write hung, maybe region %s (%pg) is down.\n",
+ config_item_name(&reg->hr_item), reg->hr_bdev);
/* approve negotiate timeout request. */
o2hb_arm_timeout(reg);

@@ -419,9 +417,9 @@ static void o2hb_nego_timeout(struct work_struct *work)
}
} else {
/* negotiate timeout with master node. */
- printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%s), negotiate timeout with node %d.\n",
+ printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%pg), negotiate timeout with node %d.\n",
o2nm_this_node(), O2HB_NEGO_TIMEOUT_MS/1000, config_item_name(&reg->hr_item),
- reg->hr_dev_name, master_node);
+ reg->hr_bdev, master_node);
ret = o2hb_send_nego_msg(reg->hr_key, O2HB_NEGO_TIMEOUT_MSG,
master_node);
if (ret)
@@ -437,8 +435,8 @@ static int o2hb_nego_timeout_handler(struct o2net_msg *msg, u32 len, void *data,
struct o2hb_nego_msg *nego_msg;

nego_msg = (struct o2hb_nego_msg *)msg->buf;
- printk(KERN_NOTICE "o2hb: receive negotiate timeout message from node %d on region %s (%s).\n",
- nego_msg->node_num, config_item_name(&reg->hr_item), reg->hr_dev_name);
+ printk(KERN_NOTICE "o2hb: receive negotiate timeout message from node %d on region %s (%pg).\n",
+ nego_msg->node_num, config_item_name(&reg->hr_item), reg->hr_bdev);
if (nego_msg->node_num < O2NM_MAX_NODES)
set_bit(nego_msg->node_num, reg->hr_nego_node_bitmap);
else
@@ -452,8 +450,8 @@ static int o2hb_nego_approve_handler(struct o2net_msg *msg, u32 len, void *data,
{
struct o2hb_region *reg = data;

- printk(KERN_NOTICE "o2hb: negotiate timeout approved by master node on region %s (%s).\n",
- config_item_name(&reg->hr_item), reg->hr_dev_name);
+ printk(KERN_NOTICE "o2hb: negotiate timeout approved by master node on region %s (%pg).\n",
+ config_item_name(&reg->hr_item), reg->hr_bdev);
o2hb_arm_timeout(reg);
return 0;
}
@@ -689,8 +687,8 @@ static int o2hb_check_own_slot(struct o2hb_region *reg)
else
errstr = ERRSTR3;

- mlog(ML_ERROR, "%s (%s): expected(%u:0x%llx, 0x%llx), "
- "ondisk(%u:0x%llx, 0x%llx)\n", errstr, reg->hr_dev_name,
+ mlog(ML_ERROR, "%s (%pg): expected(%u:0x%llx, 0x%llx), "
+ "ondisk(%u:0x%llx, 0x%llx)\n", errstr, reg->hr_bdev,
slot->ds_node_num, (unsigned long long)slot->ds_last_generation,
(unsigned long long)slot->ds_last_time, hb_block->hb_node,
(unsigned long long)le64_to_cpu(hb_block->hb_generation),
@@ -863,8 +861,8 @@ static void o2hb_set_quorum_device(struct o2hb_region *reg)
sizeof(o2hb_live_node_bitmap)))
goto unlock;

- printk(KERN_NOTICE "o2hb: Region %s (%s) is now a quorum device\n",
- config_item_name(&reg->hr_item), reg->hr_dev_name);
+ printk(KERN_NOTICE "o2hb: Region %s (%pg) is now a quorum device\n",
+ config_item_name(&reg->hr_item), reg->hr_bdev);

set_bit(reg->hr_region_num, o2hb_quorum_region_bitmap);

@@ -922,8 +920,8 @@ static int o2hb_check_slot(struct o2hb_region *reg,
/* The node is live but pushed out a bad crc. We
* consider it a transient miss but don't populate any
* other values as they may be junk. */
- mlog(ML_ERROR, "Node %d has written a bad crc to %s\n",
- slot->ds_node_num, reg->hr_dev_name);
+ mlog(ML_ERROR, "Node %d has written a bad crc to %pg\n",
+ slot->ds_node_num, reg->hr_bdev);
o2hb_dump_slot(hb_block);

slot->ds_equal_samples++;
@@ -1002,11 +1000,11 @@ static int o2hb_check_slot(struct o2hb_region *reg,
slot_dead_ms = le32_to_cpu(hb_block->hb_dead_ms);
if (slot_dead_ms && slot_dead_ms != dead_ms) {
/* TODO: Perhaps we can fail the region here. */
- mlog(ML_ERROR, "Node %d on device %s has a dead count "
+ mlog(ML_ERROR, "Node %d on device %pg has a dead count "
"of %u ms, but our count is %u ms.\n"
"Please double check your configuration values "
"for 'O2CB_HEARTBEAT_THRESHOLD'\n",
- slot->ds_node_num, reg->hr_dev_name, slot_dead_ms,
+ slot->ds_node_num, reg->hr_bdev, slot_dead_ms,
dead_ms);
}
goto out;
@@ -1145,8 +1143,8 @@ static int o2hb_do_disk_heartbeat(struct o2hb_region *reg)
/* Do not re-arm the write timeout on I/O error - we
* can't be sure that the new block ever made it to
* disk */
- mlog(ML_ERROR, "Write error %d on device \"%s\"\n",
- write_wc.wc_error, reg->hr_dev_name);
+ mlog(ML_ERROR, "Write error %d on device \"%pg\"\n",
+ write_wc.wc_error, reg->hr_bdev);
ret = write_wc.wc_error;
goto bail;
}
@@ -1170,9 +1168,9 @@ static int o2hb_do_disk_heartbeat(struct o2hb_region *reg)
if (atomic_read(&reg->hr_steady_iterations) != 0) {
if (atomic_dec_and_test(&reg->hr_unsteady_iterations)) {
printk(KERN_NOTICE "o2hb: Unable to stabilize "
- "heartbeat on region %s (%s)\n",
+ "heartbeat on region %s (%pg)\n",
config_item_name(&reg->hr_item),
- reg->hr_dev_name);
+ reg->hr_bdev);
atomic_set(&reg->hr_steady_iterations, 0);
reg->hr_aborted_start = 1;
wake_up(&o2hb_steady_queue);
@@ -1494,7 +1492,7 @@ static void o2hb_region_release(struct config_item *item)
struct page *page;
struct o2hb_region *reg = to_o2hb_region(item);

- mlog(ML_HEARTBEAT, "hb region release (%s)\n", reg->hr_dev_name);
+ mlog(ML_HEARTBEAT, "hb region release (%pg)\n", reg->hr_bdev);

kfree(reg->hr_tmp_block);

@@ -1641,7 +1639,7 @@ static ssize_t o2hb_region_dev_show(struct config_item *item, char *page)
unsigned int ret = 0;

if (to_o2hb_region(item)->hr_bdev)
- ret = sprintf(page, "%s\n", to_o2hb_region(item)->hr_dev_name);
+ ret = sprintf(page, "%pg\n", to_o2hb_region(item)->hr_bdev);

return ret;
}
@@ -1798,8 +1796,6 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
goto out2;
}

- bdevname(reg->hr_bdev, reg->hr_dev_name);
-
sectsize = bdev_logical_block_size(reg->hr_bdev);
if (sectsize != reg->hr_block_bytes) {
mlog(ML_ERROR,
@@ -1895,8 +1891,8 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
ret = -EIO;

if (hb_task && o2hb_global_heartbeat_active())
- printk(KERN_NOTICE "o2hb: Heartbeat started on region %s (%s)\n",
- config_item_name(&reg->hr_item), reg->hr_dev_name);
+ printk(KERN_NOTICE "o2hb: Heartbeat started on region %s (%pg)\n",
+ config_item_name(&reg->hr_item), reg->hr_bdev);

out3:
if (ret < 0) {
@@ -2088,10 +2084,10 @@ static void o2hb_heartbeat_group_drop_item(struct config_group *group,
quorum_region = 1;
clear_bit(reg->hr_region_num, o2hb_quorum_region_bitmap);
spin_unlock(&o2hb_live_lock);
- printk(KERN_NOTICE "o2hb: Heartbeat %s on region %s (%s)\n",
+ printk(KERN_NOTICE "o2hb: Heartbeat %s on region %s (%pg)\n",
((atomic_read(&reg->hr_steady_iterations) == 0) ?
"stopped" : "start aborted"), config_item_name(item),
- reg->hr_dev_name);
+ reg->hr_bdev);
}

/*
--
2.30.2

2022-07-13 05:58:48

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 5/9] pktcdvd: stop using bdevname in pkt_new_dev

Just use the %pg format specifier instead.

Signed-off-by: Christoph Hellwig <[email protected]>
---
drivers/block/pktcdvd.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index a7016ffce9a43..01a15dbd9cde2 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -2519,7 +2519,6 @@ static int pkt_seq_show(struct seq_file *m, void *p)
static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
{
int i;
- char b[BDEVNAME_SIZE];
struct block_device *bdev;
struct scsi_device *sdev;

@@ -2532,8 +2531,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
if (!pd2)
continue;
if (pd2->bdev->bd_dev == dev) {
- pkt_err(pd, "%s already setup\n",
- bdevname(pd2->bdev, b));
+ pkt_err(pd, "%pg already setup\n", pd2->bdev);
return -EBUSY;
}
if (pd2->pkt_dev == dev) {
@@ -2568,7 +2566,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)
}

proc_create_single_data(pd->name, 0, pkt_proc, pkt_seq_show, pd);
- pkt_dbg(1, pd, "writer mapped to %s\n", bdevname(bdev, b));
+ pkt_dbg(1, pd, "writer mapped to %pg\n", bdev);
return 0;

out_mem:
--
2.30.2

2022-07-13 05:59:10

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 8/9] ext4: only initialize mmp_bdevname once

mmp_bdevname is currently both initialized nested inside the kthread_run
call in ext4_multi_mount_protect and in the kmmpd thread started by it.

Lift the initiaization out of the kthread_run call in
ext4_multi_mount_protect, move the BUILD_BUG_ON next to it and remove
the duplicate assignment inside of kmmpd.

Signed-off-by: Christoph Hellwig <[email protected]>
---
fs/ext4/mmp.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
index 79d05e464c432..b7a850b0070b8 100644
--- a/fs/ext4/mmp.c
+++ b/fs/ext4/mmp.c
@@ -150,8 +150,6 @@ static int kmmpd(void *data)
mmp_check_interval = max(EXT4_MMP_CHECK_MULT * mmp_update_interval,
EXT4_MMP_MIN_CHECK_INTERVAL);
mmp->mmp_check_interval = cpu_to_le16(mmp_check_interval);
- BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE);
- bdevname(bh->b_bdev, mmp->mmp_bdevname);

memcpy(mmp->mmp_nodename, init_utsname()->nodename,
sizeof(mmp->mmp_nodename));
@@ -372,13 +370,15 @@ int ext4_multi_mount_protect(struct super_block *sb,

EXT4_SB(sb)->s_mmp_bh = bh;

+ BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE);
+ bdevname(bh->b_bdev, mmp->mmp_bdevname);
+
/*
* Start a kernel thread to update the MMP block periodically.
*/
EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%.*s",
(int)sizeof(mmp->mmp_bdevname),
- bdevname(bh->b_bdev,
- mmp->mmp_bdevname));
+ mmp->mmp_bdevname);
if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) {
EXT4_SB(sb)->s_mmp_tsk = NULL;
ext4_warning(sb, "Unable to create kmmpd thread for %s.",
--
2.30.2

2022-07-13 05:59:34

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 4/9] pktcdvd: stop using bdevname in pkt_seq_show

Just use the %pg format specifier instead.

Signed-off-by: Christoph Hellwig <[email protected]>
---
drivers/block/pktcdvd.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index 653d242314830..a7016ffce9a43 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -2460,11 +2460,9 @@ static int pkt_seq_show(struct seq_file *m, void *p)
{
struct pktcdvd_device *pd = m->private;
char *msg;
- char bdev_buf[BDEVNAME_SIZE];
int states[PACKET_NUM_STATES];

- seq_printf(m, "Writer %s mapped to %s:\n", pd->name,
- bdevname(pd->bdev, bdev_buf));
+ seq_printf(m, "Writer %s mapped to %pg:\n", pd->name, pd->bdev);

seq_printf(m, "\nSettings:\n");
seq_printf(m, "\tpacket size:\t\t%dkB\n", pd->settings.size / 2);
--
2.30.2

2022-07-13 06:00:07

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 9/9] block: remove bdevname

Replace the remaining calls of bdevname with snprintf using the %pg
format specifier.

Signed-off-by: Christoph Hellwig <[email protected]>
---
block/genhd.c | 23 -----------------------
drivers/md/md.c | 2 +-
drivers/md/raid1.c | 2 +-
drivers/md/raid10.c | 2 +-
fs/ext4/mmp.c | 3 ++-
fs/jbd2/journal.c | 6 ++++--
include/linux/blkdev.h | 1 -
kernel/trace/blktrace.c | 4 ++--
8 files changed, 11 insertions(+), 32 deletions(-)

diff --git a/block/genhd.c b/block/genhd.c
index 9d30f159c59ac..44dfcf67ed96a 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -101,29 +101,6 @@ bool set_capacity_and_notify(struct gendisk *disk, sector_t size)
}
EXPORT_SYMBOL_GPL(set_capacity_and_notify);

-/*
- * Format the device name of the indicated block device into the supplied buffer
- * and return a pointer to that same buffer for convenience.
- *
- * Note: do not use this in new code, use the %pg specifier to sprintf and
- * printk insted.
- */
-const char *bdevname(struct block_device *bdev, char *buf)
-{
- struct gendisk *hd = bdev->bd_disk;
- int partno = bdev->bd_partno;
-
- if (!partno)
- snprintf(buf, BDEVNAME_SIZE, "%s", hd->disk_name);
- else if (isdigit(hd->disk_name[strlen(hd->disk_name)-1]))
- snprintf(buf, BDEVNAME_SIZE, "%sp%d", hd->disk_name, partno);
- else
- snprintf(buf, BDEVNAME_SIZE, "%s%d", hd->disk_name, partno);
-
- return buf;
-}
-EXPORT_SYMBOL(bdevname);
-
static void part_stat_read_all(struct block_device *part,
struct disk_stats *stat)
{
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 076255ec9ba18..4be9d81730712 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2438,7 +2438,7 @@ static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
mdname(mddev), mddev->max_disks);
return -EBUSY;
}
- bdevname(rdev->bdev,b);
+ snprintf(b, sizeof(b), "%pg", rdev->bdev);
strreplace(b, '/', '!');

rdev->mddev = mddev;
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 258d4eb2d63c3..65cd90f0b2a8b 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1240,7 +1240,7 @@ static void raid1_read_request(struct mddev *mddev, struct bio *bio,
rcu_read_lock();
rdev = rcu_dereference(conf->mirrors[r1_bio->read_disk].rdev);
if (rdev)
- bdevname(rdev->bdev, b);
+ snprintf(b, sizeof(b), "%pg", rdev->bdev);
else
strcpy(b, "???");
rcu_read_unlock();
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index d589f823feb11..a7dcb1bf6b0a9 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1164,7 +1164,7 @@ static void raid10_read_request(struct mddev *mddev, struct bio *bio,
disk = r10_bio->devs[slot].devnum;
err_rdev = rcu_dereference(conf->mirrors[disk].rdev);
if (err_rdev)
- bdevname(err_rdev->bdev, b);
+ snprintf(b, sizeof(b), "%pg", err_rdev->bdev);
else {
strcpy(b, "???");
/* This never gets dereferenced */
diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c
index b7a850b0070b8..b221f313ded6c 100644
--- a/fs/ext4/mmp.c
+++ b/fs/ext4/mmp.c
@@ -371,7 +371,8 @@ int ext4_multi_mount_protect(struct super_block *sb,
EXT4_SB(sb)->s_mmp_bh = bh;

BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE);
- bdevname(bh->b_bdev, mmp->mmp_bdevname);
+ snprintf(mmp->mmp_bdevname, sizeof(mmp->mmp_bdevname),
+ "%pg", bh->b_bdev);

/*
* Start a kernel thread to update the MMP block periodically.
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index c0cbeeaec2d1a..9015f5fa28620 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1465,7 +1465,8 @@ journal_t *jbd2_journal_init_dev(struct block_device *bdev,
if (!journal)
return NULL;

- bdevname(journal->j_dev, journal->j_devname);
+ snprintf(journal->j_devname, sizeof(journal->j_devname),
+ "%pg", journal->j_dev);
strreplace(journal->j_devname, '/', '!');
jbd2_stats_proc_init(journal);

@@ -1507,7 +1508,8 @@ journal_t *jbd2_journal_init_inode(struct inode *inode)
return NULL;

journal->j_inode = inode;
- bdevname(journal->j_dev, journal->j_devname);
+ snprintf(journal->j_devname, sizeof(journal->j_devname),
+ "%pg", journal->j_dev);
p = strreplace(journal->j_devname, '/', '!');
sprintf(p, "-%lu", journal->j_inode->i_ino);
jbd2_stats_proc_init(journal);
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 22c477fadc0f3..2775763c51b99 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1457,7 +1457,6 @@ static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time)
int bdev_read_only(struct block_device *bdev);
int set_blocksize(struct block_device *bdev, int size);

-const char *bdevname(struct block_device *bdev, char *buffer);
int lookup_bdev(const char *pathname, dev_t *dev);

void blkdev_show(struct seq_file *seqf, off_t offset);
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index c584effe5fe99..4752bda1b1a0c 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -736,12 +736,12 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)

switch (cmd) {
case BLKTRACESETUP:
- bdevname(bdev, b);
+ snprintf(b, sizeof(b), "%pg", bdev);
ret = __blk_trace_setup(q, b, bdev->bd_dev, bdev, arg);
break;
#if defined(CONFIG_COMPAT) && defined(CONFIG_X86_64)
case BLKTRACESETUP32:
- bdevname(bdev, b);
+ snprintf(b, sizeof(b), "%pg", bdev);
ret = compat_blk_trace_setup(q, b, bdev->bd_dev, bdev, arg);
break;
#endif
--
2.30.2

2022-07-13 07:08:01

by Jinpu Wang

[permalink] [raw]
Subject: Re: [PATCH 6/9] rnbd-srv: remove the name field from struct rnbd_dev

On Wed, Jul 13, 2022 at 7:53 AM Christoph Hellwig <[email protected]> wrote:
>
> Just print the block device name directly using the %pg format specifier.
>
> Signed-off-by: Christoph Hellwig <[email protected]>
Acked-by: Jack Wang <[email protected]>
Thx!
> ---
> drivers/block/rnbd/rnbd-srv-dev.c | 1 -
> drivers/block/rnbd/rnbd-srv-dev.h | 1 -
> drivers/block/rnbd/rnbd-srv-sysfs.c | 5 ++---
> drivers/block/rnbd/rnbd-srv.c | 9 ++++-----
> drivers/block/rnbd/rnbd-srv.h | 3 +--
> 5 files changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/block/rnbd/rnbd-srv-dev.c b/drivers/block/rnbd/rnbd-srv-dev.c
> index c5d0a03911659..c63017f6e4214 100644
> --- a/drivers/block/rnbd/rnbd-srv-dev.c
> +++ b/drivers/block/rnbd/rnbd-srv-dev.c
> @@ -28,7 +28,6 @@ struct rnbd_dev *rnbd_dev_open(const char *path, fmode_t flags)
> goto err;
>
> dev->blk_open_flags = flags;
> - bdevname(dev->bdev, dev->name);
>
> return dev;
>
> diff --git a/drivers/block/rnbd/rnbd-srv-dev.h b/drivers/block/rnbd/rnbd-srv-dev.h
> index 4309e52524691..8407d12f70afe 100644
> --- a/drivers/block/rnbd/rnbd-srv-dev.h
> +++ b/drivers/block/rnbd/rnbd-srv-dev.h
> @@ -15,7 +15,6 @@
> struct rnbd_dev {
> struct block_device *bdev;
> fmode_t blk_open_flags;
> - char name[BDEVNAME_SIZE];
> };
>
> /**
> diff --git a/drivers/block/rnbd/rnbd-srv-sysfs.c b/drivers/block/rnbd/rnbd-srv-sysfs.c
> index feaa76c5a3423..297a6924ff4e2 100644
> --- a/drivers/block/rnbd/rnbd-srv-sysfs.c
> +++ b/drivers/block/rnbd/rnbd-srv-sysfs.c
> @@ -38,14 +38,13 @@ static struct kobj_type dev_ktype = {
> };
>
> int rnbd_srv_create_dev_sysfs(struct rnbd_srv_dev *dev,
> - struct block_device *bdev,
> - const char *dev_name)
> + struct block_device *bdev)
> {
> struct kobject *bdev_kobj;
> int ret;
>
> ret = kobject_init_and_add(&dev->dev_kobj, &dev_ktype,
> - rnbd_devs_kobj, dev_name);
> + rnbd_devs_kobj, "%pg", bdev);
> if (ret) {
> kobject_put(&dev->dev_kobj);
> return ret;
> diff --git a/drivers/block/rnbd/rnbd-srv.c b/drivers/block/rnbd/rnbd-srv.c
> index beaef43a67b9d..0713014bf423f 100644
> --- a/drivers/block/rnbd/rnbd-srv.c
> +++ b/drivers/block/rnbd/rnbd-srv.c
> @@ -419,7 +419,7 @@ static struct rnbd_srv_sess_dev
> return sess_dev;
> }
>
> -static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(const char *id)
> +static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(struct block_device *bdev)
> {
> struct rnbd_srv_dev *dev;
>
> @@ -427,7 +427,7 @@ static struct rnbd_srv_dev *rnbd_srv_init_srv_dev(const char *id)
> if (!dev)
> return ERR_PTR(-ENOMEM);
>
> - strscpy(dev->id, id, sizeof(dev->id));
> + snprintf(dev->id, sizeof(dev->id), "%pg", bdev);
> kref_init(&dev->kref);
> INIT_LIST_HEAD(&dev->sess_dev_list);
> mutex_init(&dev->lock);
> @@ -512,7 +512,7 @@ rnbd_srv_get_or_create_srv_dev(struct rnbd_dev *rnbd_dev,
> int ret;
> struct rnbd_srv_dev *new_dev, *dev;
>
> - new_dev = rnbd_srv_init_srv_dev(rnbd_dev->name);
> + new_dev = rnbd_srv_init_srv_dev(rnbd_dev->bdev);
> if (IS_ERR(new_dev))
> return new_dev;
>
> @@ -758,8 +758,7 @@ static int process_msg_open(struct rnbd_srv_session *srv_sess,
> */
> mutex_lock(&srv_dev->lock);
> if (!srv_dev->dev_kobj.state_in_sysfs) {
> - ret = rnbd_srv_create_dev_sysfs(srv_dev, rnbd_dev->bdev,
> - rnbd_dev->name);
> + ret = rnbd_srv_create_dev_sysfs(srv_dev, rnbd_dev->bdev);
> if (ret) {
> mutex_unlock(&srv_dev->lock);
> rnbd_srv_err(srv_sess_dev,
> diff --git a/drivers/block/rnbd/rnbd-srv.h b/drivers/block/rnbd/rnbd-srv.h
> index be2ae486d407e..6926f9069dc4b 100644
> --- a/drivers/block/rnbd/rnbd-srv.h
> +++ b/drivers/block/rnbd/rnbd-srv.h
> @@ -68,8 +68,7 @@ void rnbd_srv_sess_dev_force_close(struct rnbd_srv_sess_dev *sess_dev,
> /* rnbd-srv-sysfs.c */
>
> int rnbd_srv_create_dev_sysfs(struct rnbd_srv_dev *dev,
> - struct block_device *bdev,
> - const char *dir_name);
> + struct block_device *bdev);
> void rnbd_srv_destroy_dev_sysfs(struct rnbd_srv_dev *dev);
> int rnbd_srv_create_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
> void rnbd_srv_destroy_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
> --
> 2.30.2
>

2022-07-13 07:28:38

by Johannes Thumshirn

[permalink] [raw]
Subject: Re: remove bdevname

For the series:

Reviewed-by: Johannes Thumshirn <[email protected]>

2022-07-13 09:33:58

by Chaitanya Kulkarni

[permalink] [raw]
Subject: Re: remove bdevname

On 7/12/2022 10:53 PM, Christoph Hellwig wrote:
> Hi Jens,
>
> this series removes the final uses and the implementation of the bdevname()
> function.
>

Looks good for the series :-

Reviewed-by: Chaitanya Kulkarni <[email protected]>

-ck


2022-07-13 12:29:00

by Christoph Böhmwalder

[permalink] [raw]
Subject: Re: [PATCH 3/9] drbd: stop using bdevname in drbd_report_io_error

Am 13.07.22 um 07:53 schrieb Christoph Hellwig:
> Just use the %pg format specifier instead.
>
> Signed-off-by: Christoph Hellwig <[email protected]>
> ---
> drivers/block/drbd/drbd_req.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
> index e64bcfba30ef3..6d8dd14458c69 100644
> --- a/drivers/block/drbd/drbd_req.c
> +++ b/drivers/block/drbd/drbd_req.c
> @@ -523,16 +523,14 @@ static void mod_rq_state(struct drbd_request *req, struct bio_and_error *m,
>
> static void drbd_report_io_error(struct drbd_device *device, struct drbd_request *req)
> {
> - char b[BDEVNAME_SIZE];
> -
> if (!__ratelimit(&drbd_ratelimit_state))
> return;
>
> - drbd_warn(device, "local %s IO error sector %llu+%u on %s\n",
> + drbd_warn(device, "local %s IO error sector %llu+%u on %pg\n",
> (req->rq_state & RQ_WRITE) ? "WRITE" : "READ",
> (unsigned long long)req->i.sector,
> req->i.size >> 9,
> - bdevname(device->ldev->backing_bdev, b));
> + device->ldev->backing_bdev);
> }
>
> /* Helper for HANDED_OVER_TO_NETWORK.

For the drbd part:

Reviewed-by: Christoph Böhmwalder <[email protected]>

Thanks.

--
Christoph Böhmwalder
LINBIT | Keeping the Digital World Running
DRBD HA — Disaster Recovery — Software defined Storage

2022-07-13 15:06:10

by Jan Kara

[permalink] [raw]
Subject: Re: remove bdevname

On Wed 13-07-22 07:53:08, Christoph Hellwig wrote:
> Hi Jens,
>
> this series removes the final uses and the implementation of the bdevname()
> function.

All patches look good to me. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

Honza

>
> Diffstat:
> block/bdev.c | 10 ++---
> block/blk-lib.c | 6 +--
> block/genhd.c | 23 ------------
> drivers/block/drbd/drbd_req.c | 6 +--
> drivers/block/pktcdvd.c | 10 +----
> drivers/block/rnbd/rnbd-srv-dev.c | 1
> drivers/block/rnbd/rnbd-srv-dev.h | 1
> drivers/block/rnbd/rnbd-srv-sysfs.c | 5 +-
> drivers/block/rnbd/rnbd-srv.c | 9 ++---
> drivers/block/rnbd/rnbd-srv.h | 3 -
> drivers/md/md.c | 2 -
> drivers/md/raid1.c | 2 -
> drivers/md/raid10.c | 2 -
> fs/ext4/mmp.c | 9 ++---
> fs/jbd2/journal.c | 6 ++-
> fs/ocfs2/cluster/heartbeat.c | 64 ++++++++++++++++--------------------
> include/linux/blkdev.h | 1
> kernel/trace/blktrace.c | 4 +-
> 18 files changed, 62 insertions(+), 102 deletions(-)
--
Jan Kara <[email protected]>
SUSE Labs, CR

2022-07-13 22:47:34

by Joel Becker

[permalink] [raw]
Subject: Re: [PATCH 7/9] ocfs2/cluster: remove the hr_dev_name field from struct o2hb_region

LGTM

Reviewed-by: Joel Becker <[email protected]>

On Wed, Jul 13, 2022 at 07:53:15AM +0200, Christoph Hellwig wrote:
> Just print the block device name directly using the %pg format specifier.
>
> Signed-off-by: Christoph Hellwig <[email protected]>
> ---
> fs/ocfs2/cluster/heartbeat.c | 64 +++++++++++++++++-------------------
> 1 file changed, 30 insertions(+), 34 deletions(-)
>
> diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
> index ea0e70c0fce09..5f83c0c0918c0 100644
> --- a/fs/ocfs2/cluster/heartbeat.c
> +++ b/fs/ocfs2/cluster/heartbeat.c
> @@ -235,8 +235,6 @@ struct o2hb_region {
> * (hr_steady_iterations == 0) within hr_unsteady_iterations */
> atomic_t hr_unsteady_iterations;
>
> - char hr_dev_name[BDEVNAME_SIZE];
> -
> unsigned int hr_timeout_ms;
>
> /* randomized as the region goes up and down so that a node
> @@ -287,8 +285,8 @@ static void o2hb_write_timeout(struct work_struct *work)
> container_of(work, struct o2hb_region,
> hr_write_timeout_work.work);
>
> - mlog(ML_ERROR, "Heartbeat write timeout to device %s after %u "
> - "milliseconds\n", reg->hr_dev_name,
> + mlog(ML_ERROR, "Heartbeat write timeout to device %pg after %u "
> + "milliseconds\n", reg->hr_bdev,
> jiffies_to_msecs(jiffies - reg->hr_last_timeout_start));
>
> if (o2hb_global_heartbeat_active()) {
> @@ -383,9 +381,9 @@ static void o2hb_nego_timeout(struct work_struct *work)
>
> if (master_node == o2nm_this_node()) {
> if (!test_bit(master_node, reg->hr_nego_node_bitmap)) {
> - printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%s).\n",
> + printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%pg).\n",
> o2nm_this_node(), O2HB_NEGO_TIMEOUT_MS/1000,
> - config_item_name(&reg->hr_item), reg->hr_dev_name);
> + config_item_name(&reg->hr_item), reg->hr_bdev);
> set_bit(master_node, reg->hr_nego_node_bitmap);
> }
> if (memcmp(reg->hr_nego_node_bitmap, live_node_bitmap,
> @@ -399,8 +397,8 @@ static void o2hb_nego_timeout(struct work_struct *work)
> return;
> }
>
> - printk(KERN_NOTICE "o2hb: all nodes hb write hung, maybe region %s (%s) is down.\n",
> - config_item_name(&reg->hr_item), reg->hr_dev_name);
> + printk(KERN_NOTICE "o2hb: all nodes hb write hung, maybe region %s (%pg) is down.\n",
> + config_item_name(&reg->hr_item), reg->hr_bdev);
> /* approve negotiate timeout request. */
> o2hb_arm_timeout(reg);
>
> @@ -419,9 +417,9 @@ static void o2hb_nego_timeout(struct work_struct *work)
> }
> } else {
> /* negotiate timeout with master node. */
> - printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%s), negotiate timeout with node %d.\n",
> + printk(KERN_NOTICE "o2hb: node %d hb write hung for %ds on region %s (%pg), negotiate timeout with node %d.\n",
> o2nm_this_node(), O2HB_NEGO_TIMEOUT_MS/1000, config_item_name(&reg->hr_item),
> - reg->hr_dev_name, master_node);
> + reg->hr_bdev, master_node);
> ret = o2hb_send_nego_msg(reg->hr_key, O2HB_NEGO_TIMEOUT_MSG,
> master_node);
> if (ret)
> @@ -437,8 +435,8 @@ static int o2hb_nego_timeout_handler(struct o2net_msg *msg, u32 len, void *data,
> struct o2hb_nego_msg *nego_msg;
>
> nego_msg = (struct o2hb_nego_msg *)msg->buf;
> - printk(KERN_NOTICE "o2hb: receive negotiate timeout message from node %d on region %s (%s).\n",
> - nego_msg->node_num, config_item_name(&reg->hr_item), reg->hr_dev_name);
> + printk(KERN_NOTICE "o2hb: receive negotiate timeout message from node %d on region %s (%pg).\n",
> + nego_msg->node_num, config_item_name(&reg->hr_item), reg->hr_bdev);
> if (nego_msg->node_num < O2NM_MAX_NODES)
> set_bit(nego_msg->node_num, reg->hr_nego_node_bitmap);
> else
> @@ -452,8 +450,8 @@ static int o2hb_nego_approve_handler(struct o2net_msg *msg, u32 len, void *data,
> {
> struct o2hb_region *reg = data;
>
> - printk(KERN_NOTICE "o2hb: negotiate timeout approved by master node on region %s (%s).\n",
> - config_item_name(&reg->hr_item), reg->hr_dev_name);
> + printk(KERN_NOTICE "o2hb: negotiate timeout approved by master node on region %s (%pg).\n",
> + config_item_name(&reg->hr_item), reg->hr_bdev);
> o2hb_arm_timeout(reg);
> return 0;
> }
> @@ -689,8 +687,8 @@ static int o2hb_check_own_slot(struct o2hb_region *reg)
> else
> errstr = ERRSTR3;
>
> - mlog(ML_ERROR, "%s (%s): expected(%u:0x%llx, 0x%llx), "
> - "ondisk(%u:0x%llx, 0x%llx)\n", errstr, reg->hr_dev_name,
> + mlog(ML_ERROR, "%s (%pg): expected(%u:0x%llx, 0x%llx), "
> + "ondisk(%u:0x%llx, 0x%llx)\n", errstr, reg->hr_bdev,
> slot->ds_node_num, (unsigned long long)slot->ds_last_generation,
> (unsigned long long)slot->ds_last_time, hb_block->hb_node,
> (unsigned long long)le64_to_cpu(hb_block->hb_generation),
> @@ -863,8 +861,8 @@ static void o2hb_set_quorum_device(struct o2hb_region *reg)
> sizeof(o2hb_live_node_bitmap)))
> goto unlock;
>
> - printk(KERN_NOTICE "o2hb: Region %s (%s) is now a quorum device\n",
> - config_item_name(&reg->hr_item), reg->hr_dev_name);
> + printk(KERN_NOTICE "o2hb: Region %s (%pg) is now a quorum device\n",
> + config_item_name(&reg->hr_item), reg->hr_bdev);
>
> set_bit(reg->hr_region_num, o2hb_quorum_region_bitmap);
>
> @@ -922,8 +920,8 @@ static int o2hb_check_slot(struct o2hb_region *reg,
> /* The node is live but pushed out a bad crc. We
> * consider it a transient miss but don't populate any
> * other values as they may be junk. */
> - mlog(ML_ERROR, "Node %d has written a bad crc to %s\n",
> - slot->ds_node_num, reg->hr_dev_name);
> + mlog(ML_ERROR, "Node %d has written a bad crc to %pg\n",
> + slot->ds_node_num, reg->hr_bdev);
> o2hb_dump_slot(hb_block);
>
> slot->ds_equal_samples++;
> @@ -1002,11 +1000,11 @@ static int o2hb_check_slot(struct o2hb_region *reg,
> slot_dead_ms = le32_to_cpu(hb_block->hb_dead_ms);
> if (slot_dead_ms && slot_dead_ms != dead_ms) {
> /* TODO: Perhaps we can fail the region here. */
> - mlog(ML_ERROR, "Node %d on device %s has a dead count "
> + mlog(ML_ERROR, "Node %d on device %pg has a dead count "
> "of %u ms, but our count is %u ms.\n"
> "Please double check your configuration values "
> "for 'O2CB_HEARTBEAT_THRESHOLD'\n",
> - slot->ds_node_num, reg->hr_dev_name, slot_dead_ms,
> + slot->ds_node_num, reg->hr_bdev, slot_dead_ms,
> dead_ms);
> }
> goto out;
> @@ -1145,8 +1143,8 @@ static int o2hb_do_disk_heartbeat(struct o2hb_region *reg)
> /* Do not re-arm the write timeout on I/O error - we
> * can't be sure that the new block ever made it to
> * disk */
> - mlog(ML_ERROR, "Write error %d on device \"%s\"\n",
> - write_wc.wc_error, reg->hr_dev_name);
> + mlog(ML_ERROR, "Write error %d on device \"%pg\"\n",
> + write_wc.wc_error, reg->hr_bdev);
> ret = write_wc.wc_error;
> goto bail;
> }
> @@ -1170,9 +1168,9 @@ static int o2hb_do_disk_heartbeat(struct o2hb_region *reg)
> if (atomic_read(&reg->hr_steady_iterations) != 0) {
> if (atomic_dec_and_test(&reg->hr_unsteady_iterations)) {
> printk(KERN_NOTICE "o2hb: Unable to stabilize "
> - "heartbeat on region %s (%s)\n",
> + "heartbeat on region %s (%pg)\n",
> config_item_name(&reg->hr_item),
> - reg->hr_dev_name);
> + reg->hr_bdev);
> atomic_set(&reg->hr_steady_iterations, 0);
> reg->hr_aborted_start = 1;
> wake_up(&o2hb_steady_queue);
> @@ -1494,7 +1492,7 @@ static void o2hb_region_release(struct config_item *item)
> struct page *page;
> struct o2hb_region *reg = to_o2hb_region(item);
>
> - mlog(ML_HEARTBEAT, "hb region release (%s)\n", reg->hr_dev_name);
> + mlog(ML_HEARTBEAT, "hb region release (%pg)\n", reg->hr_bdev);
>
> kfree(reg->hr_tmp_block);
>
> @@ -1641,7 +1639,7 @@ static ssize_t o2hb_region_dev_show(struct config_item *item, char *page)
> unsigned int ret = 0;
>
> if (to_o2hb_region(item)->hr_bdev)
> - ret = sprintf(page, "%s\n", to_o2hb_region(item)->hr_dev_name);
> + ret = sprintf(page, "%pg\n", to_o2hb_region(item)->hr_bdev);
>
> return ret;
> }
> @@ -1798,8 +1796,6 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
> goto out2;
> }
>
> - bdevname(reg->hr_bdev, reg->hr_dev_name);
> -
> sectsize = bdev_logical_block_size(reg->hr_bdev);
> if (sectsize != reg->hr_block_bytes) {
> mlog(ML_ERROR,
> @@ -1895,8 +1891,8 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
> ret = -EIO;
>
> if (hb_task && o2hb_global_heartbeat_active())
> - printk(KERN_NOTICE "o2hb: Heartbeat started on region %s (%s)\n",
> - config_item_name(&reg->hr_item), reg->hr_dev_name);
> + printk(KERN_NOTICE "o2hb: Heartbeat started on region %s (%pg)\n",
> + config_item_name(&reg->hr_item), reg->hr_bdev);
>
> out3:
> if (ret < 0) {
> @@ -2088,10 +2084,10 @@ static void o2hb_heartbeat_group_drop_item(struct config_group *group,
> quorum_region = 1;
> clear_bit(reg->hr_region_num, o2hb_quorum_region_bitmap);
> spin_unlock(&o2hb_live_lock);
> - printk(KERN_NOTICE "o2hb: Heartbeat %s on region %s (%s)\n",
> + printk(KERN_NOTICE "o2hb: Heartbeat %s on region %s (%pg)\n",
> ((atomic_read(&reg->hr_steady_iterations) == 0) ?
> "stopped" : "start aborted"), config_item_name(item),
> - reg->hr_dev_name);
> + reg->hr_bdev);
> }
>
> /*
> --
> 2.30.2
>

--

2022-07-14 14:58:11

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH 8/9] ext4: only initialize mmp_bdevname once

On Wed, Jul 13, 2022 at 07:53:16AM +0200, Christoph Hellwig wrote:
> mmp_bdevname is currently both initialized nested inside the kthread_run
> call in ext4_multi_mount_protect and in the kmmpd thread started by it.
>
> Lift the initiaization out of the kthread_run call in
> ext4_multi_mount_protect, move the BUILD_BUG_ON next to it and remove
> the duplicate assignment inside of kmmpd.
>
> Signed-off-by: Christoph Hellwig <[email protected]>

Acked-by: Theodore Ts'o <[email protected]>

2022-07-14 16:30:08

by Jens Axboe

[permalink] [raw]
Subject: Re: remove bdevname

On Wed, 13 Jul 2022 07:53:08 +0200, Christoph Hellwig wrote:
> this series removes the final uses and the implementation of the bdevname()
> function.
>
> Diffstat:
> block/bdev.c | 10 ++---
> block/blk-lib.c | 6 +--
> block/genhd.c | 23 ------------
> drivers/block/drbd/drbd_req.c | 6 +--
> drivers/block/pktcdvd.c | 10 +----
> drivers/block/rnbd/rnbd-srv-dev.c | 1
> drivers/block/rnbd/rnbd-srv-dev.h | 1
> drivers/block/rnbd/rnbd-srv-sysfs.c | 5 +-
> drivers/block/rnbd/rnbd-srv.c | 9 ++---
> drivers/block/rnbd/rnbd-srv.h | 3 -
> drivers/md/md.c | 2 -
> drivers/md/raid1.c | 2 -
> drivers/md/raid10.c | 2 -
> fs/ext4/mmp.c | 9 ++---
> fs/jbd2/journal.c | 6 ++-
> fs/ocfs2/cluster/heartbeat.c | 64 ++++++++++++++++--------------------
> include/linux/blkdev.h | 1
> kernel/trace/blktrace.c | 4 +-
> 18 files changed, 62 insertions(+), 102 deletions(-)
>
> [...]

Applied, thanks!

[1/9] block: stop using bdevname in bdev_write_inode
commit: 5bf83e9a14ddae994d783dee96b91bf46f04839c
[2/9] block: stop using bdevname in __blkdev_issue_discard
commit: 02ff3dd20f512cf811ae8028c44fdb212b5f2bf7
[3/9] drbd: stop using bdevname in drbd_report_io_error
commit: 1b70ccecaed4c3c50239e8409156fb447f965554
[4/9] pktcdvd: stop using bdevname in pkt_seq_show
commit: fa070a3b50a17506a230e72bd48dba89e7bb5fea
[5/9] pktcdvd: stop using bdevname in pkt_new_dev
commit: beecf70ee84363e92f3bf783b74da5f26e765d8d
[6/9] rnbd-srv: remove the name field from struct rnbd_dev
commit: 6e880cf59932a14bca128fc8e8faae0554932942
[7/9] ocfs2/cluster: remove the hr_dev_name field from struct o2hb_region
commit: 4664954c9421ce326bb5c84f175902b03f17237e
[8/9] ext4: only initialize mmp_bdevname once
commit: c5b045b9838972cc4c4985a32fa5d35ecf2ab15a
[9/9] block: remove bdevname
commit: 900d156bac2bc474cf7c7bee4efbc6c83ec5ae58

Best regards,
--
Jens Axboe