linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] block: add a sequence number to disks
@ 2021-05-20 13:56 Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 1/6] block: add disk sequence number Matteo Croce
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

With this series a monotonically increasing number is added to disks,
precisely in the genhd struct, and it's exported in sysfs and uevent.

This helps the userspace correlate events for devices that reuse the
same device, like loop.

The first patch is the core one, the 2..4 expose the information in
different ways, the 5th increases the seqnum on media change and
the last one increases the sequence number for loop devices upon
attach, detach or reconfigure.

If merged, this feature will immediately used by the userspace:
https://github.com/systemd/systemd/issues/17469#issuecomment-762919781

v1 -> v2:
- increase seqnum on media change
- increase on loop detach

Matteo Croce (6):
  block: add disk sequence number
  block: add ioctl to read the disk sequence number
  block: refactor sysfs code
  block: export diskseq in sysfs
  block: increment sequence number
  loop: increment sequence number

 Documentation/ABI/testing/sysfs-block | 12 +++++++
 block/genhd.c                         | 46 ++++++++++++++++++++++++---
 block/ioctl.c                         |  2 ++
 drivers/block/loop.c                  |  5 +++
 include/linux/genhd.h                 |  2 ++
 include/uapi/linux/fs.h               |  1 +
 6 files changed, 64 insertions(+), 4 deletions(-)

-- 
2.31.1


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

* [PATCH v2 1/6] block: add disk sequence number
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 2/6] block: add ioctl to read the " Matteo Croce
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

Add a monotonically increasing number to disk devices. This number is put
in the uevent so userspace can correlate events when a driver reuses a
device, like cdrom or loop.

    $ udevadm info /sys/class/block/* |grep -e DEVNAME -e DISKSEQ
    E: DEVNAME=/dev/loop0
    E: DISKSEQ=1
    E: DEVNAME=/dev/loop1
    E: DISKSEQ=2
    E: DEVNAME=/dev/loop2
    E: DISKSEQ=3
    E: DEVNAME=/dev/loop3
    E: DISKSEQ=4
    E: DEVNAME=/dev/loop4
    E: DISKSEQ=5
    E: DEVNAME=/dev/loop5
    E: DISKSEQ=6
    E: DEVNAME=/dev/loop6
    E: DISKSEQ=7
    E: DEVNAME=/dev/loop7
    E: DISKSEQ=8
    E: DEVNAME=/dev/nvme0n1
    E: DISKSEQ=9
    E: DEVNAME=/dev/nvme0n1p1
    E: DISKSEQ=9
    E: DEVNAME=/dev/nvme0n1p2
    E: DISKSEQ=9
    E: DEVNAME=/dev/nvme0n1p3
    E: DISKSEQ=9
    E: DEVNAME=/dev/nvme0n1p4
    E: DISKSEQ=9
    E: DEVNAME=/dev/nvme0n1p5
    E: DISKSEQ=9
    E: DEVNAME=/dev/sda
    E: DISKSEQ=10
    E: DEVNAME=/dev/sda1
    E: DISKSEQ=10
    E: DEVNAME=/dev/sda2
    E: DISKSEQ=10

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 block/genhd.c         | 19 +++++++++++++++++++
 include/linux/genhd.h |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/block/genhd.c b/block/genhd.c
index 39ca97b0edc6..2c7e148fa944 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1138,8 +1138,17 @@ static void disk_release(struct device *dev)
 		blk_put_queue(disk->queue);
 	kfree(disk);
 }
+
+static int block_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+	struct gendisk *disk = dev_to_disk(dev);
+
+	return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq);
+}
+
 struct class block_class = {
 	.name		= "block",
+	.dev_uevent	= block_uevent,
 };
 
 static char *block_devnode(struct device *dev, umode_t *mode,
@@ -1313,6 +1322,8 @@ struct gendisk *__alloc_disk_node(int minors, int node_id)
 	disk_to_dev(disk)->class = &block_class;
 	disk_to_dev(disk)->type = &disk_type;
 	device_initialize(disk_to_dev(disk));
+	inc_diskseq(disk);
+
 	return disk;
 
 out_destroy_part_tbl:
@@ -1863,3 +1874,11 @@ static void disk_release_events(struct gendisk *disk)
 	WARN_ON_ONCE(disk->ev && disk->ev->block != 1);
 	kfree(disk->ev);
 }
+
+void inc_diskseq(struct gendisk *disk)
+{
+	static atomic64_t diskseq;
+
+	disk->diskseq = atomic64_inc_return(&diskseq);
+}
+EXPORT_SYMBOL_GPL(inc_diskseq);
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 7e9660ea967d..ec98b95c8279 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -167,6 +167,7 @@ struct gendisk {
 	int node_id;
 	struct badblocks *bb;
 	struct lockdep_map lockdep_map;
+	u64 diskseq;
 };
 
 /*
@@ -307,6 +308,7 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev,
 #endif /* CONFIG_SYSFS */
 
 extern struct rw_semaphore bdev_lookup_sem;
+extern void inc_diskseq(struct gendisk *disk);
 
 dev_t blk_lookup_devt(const char *name, int partno);
 void blk_request_module(dev_t devt);
-- 
2.31.1


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

* [PATCH v2 2/6] block: add ioctl to read the disk sequence number
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 1/6] block: add disk sequence number Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 3/6] block: refactor sysfs code Matteo Croce
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

Add a new BLKGETDISKSEQ ioctl which retrieves the disk sequence number
from the genhd structure.

    # ./getdiskseq /dev/loop*
    /dev/loop0:     13
    /dev/loop0p1:   13
    /dev/loop0p2:   13
    /dev/loop0p3:   13
    /dev/loop1:     14
    /dev/loop1p1:   14
    /dev/loop1p2:   14
    /dev/loop2:     5
    /dev/loop3:     6

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 block/ioctl.c           | 2 ++
 include/uapi/linux/fs.h | 1 +
 2 files changed, 3 insertions(+)

diff --git a/block/ioctl.c b/block/ioctl.c
index 8ba1ed8defd0..32b339bbaf95 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -469,6 +469,8 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
 				BLKDEV_DISCARD_SECURE);
 	case BLKZEROOUT:
 		return blk_ioctl_zeroout(bdev, mode, arg);
+	case BLKGETDISKSEQ:
+		return put_u64(argp, bdev->bd_disk->diskseq);
 	case BLKREPORTZONE:
 		return blkdev_report_zones_ioctl(bdev, mode, cmd, arg);
 	case BLKRESETZONE:
diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h
index 4c32e97dcdf0..bdf7b404b3e7 100644
--- a/include/uapi/linux/fs.h
+++ b/include/uapi/linux/fs.h
@@ -184,6 +184,7 @@ struct fsxattr {
 #define BLKSECDISCARD _IO(0x12,125)
 #define BLKROTATIONAL _IO(0x12,126)
 #define BLKZEROOUT _IO(0x12,127)
+#define BLKGETDISKSEQ _IOR(0x12,128,__u64)
 /*
  * A jump here: 130-136 are reserved for zoned block devices
  * (see uapi/linux/blkzoned.h)
-- 
2.31.1


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

* [PATCH v2 3/6] block: refactor sysfs code
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 1/6] block: add disk sequence number Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 2/6] block: add ioctl to read the " Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 4/6] block: export diskseq in sysfs Matteo Croce
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

Move the sysfs register code from a function named disk_add_events() to
a new function named disk_add_sysfs(). Also, rename the attribute list
with a more generic name than disk_events_attrs.

This is a prerequisite patch to export diskseq in sysfs later.

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 block/genhd.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/block/genhd.c b/block/genhd.c
index 2c7e148fa944..417dd5666be5 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -41,6 +41,7 @@ static void disk_alloc_events(struct gendisk *disk);
 static void disk_add_events(struct gendisk *disk);
 static void disk_del_events(struct gendisk *disk);
 static void disk_release_events(struct gendisk *disk);
+static void disk_add_sysfs(struct gendisk *disk);
 
 void set_capacity(struct gendisk *disk, sector_t sectors)
 {
@@ -562,6 +563,7 @@ static void __device_add_disk(struct device *parent, struct gendisk *disk,
 	 */
 	WARN_ON_ONCE(!blk_get_queue(disk->queue));
 
+	disk_add_sysfs(disk);
 	disk_add_events(disk);
 	blk_integrity_add(disk);
 }
@@ -1763,7 +1765,7 @@ static const DEVICE_ATTR(events_poll_msecs, 0644,
 			 disk_events_poll_msecs_show,
 			 disk_events_poll_msecs_store);
 
-static const struct attribute *disk_events_attrs[] = {
+static const struct attribute *disk_sysfs_attrs[] = {
 	&dev_attr_events.attr,
 	&dev_attr_events_async.attr,
 	&dev_attr_events_poll_msecs.attr,
@@ -1834,13 +1836,16 @@ static void disk_alloc_events(struct gendisk *disk)
 	disk->ev = ev;
 }
 
-static void disk_add_events(struct gendisk *disk)
+static void disk_add_sysfs(struct gendisk *disk)
 {
 	/* FIXME: error handling */
-	if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0)
+	if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_sysfs_attrs) < 0)
 		pr_warn("%s: failed to create sysfs files for events\n",
 			disk->disk_name);
+}
 
+static void disk_add_events(struct gendisk *disk)
+{
 	if (!disk->ev)
 		return;
 
@@ -1865,7 +1870,7 @@ static void disk_del_events(struct gendisk *disk)
 		mutex_unlock(&disk_events_mutex);
 	}
 
-	sysfs_remove_files(&disk_to_dev(disk)->kobj, disk_events_attrs);
+	sysfs_remove_files(&disk_to_dev(disk)->kobj, disk_sysfs_attrs);
 }
 
 static void disk_release_events(struct gendisk *disk)
-- 
2.31.1


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

* [PATCH v2 4/6] block: export diskseq in sysfs
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
                   ` (2 preceding siblings ...)
  2021-05-20 13:56 ` [PATCH v2 3/6] block: refactor sysfs code Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 5/6] block: increment sequence number Matteo Croce
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

Add a new sysfs handle to export the new diskseq value.
Place it in <sysfs>/block/<disk>/diskseq and document it.

    $ grep . /sys/class/block/*/diskseq
    /sys/class/block/loop0/diskseq:13
    /sys/class/block/loop1/diskseq:14
    /sys/class/block/loop2/diskseq:5
    /sys/class/block/loop3/diskseq:6
    /sys/class/block/ram0/diskseq:1
    /sys/class/block/ram1/diskseq:2
    /sys/class/block/vda/diskseq:7

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 Documentation/ABI/testing/sysfs-block | 12 ++++++++++++
 block/genhd.c                         | 11 +++++++++++
 2 files changed, 23 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-block b/Documentation/ABI/testing/sysfs-block
index e34cdeeeb9d4..a0ed87386639 100644
--- a/Documentation/ABI/testing/sysfs-block
+++ b/Documentation/ABI/testing/sysfs-block
@@ -28,6 +28,18 @@ Description:
 		For more details refer Documentation/admin-guide/iostats.rst
 
 
+What:		/sys/block/<disk>/diskseq
+Date:		February 2021
+Contact:	Matteo Croce <mcroce@microsoft.com>
+Description:
+		The /sys/block/<disk>/diskseq files reports the disk
+		sequence number, which is a monotonically increasing
+		number assigned to every drive.
+		Some devices, like the loop device, refresh such number
+		every time the backing file is changed.
+		The value type is 64 bit unsigned.
+
+
 What:		/sys/block/<disk>/<part>/stat
 Date:		February 2008
 Contact:	Jerome Marchand <jmarchan@redhat.com>
diff --git a/block/genhd.c b/block/genhd.c
index 417dd5666be5..67519c034f9f 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1689,6 +1689,7 @@ static void disk_check_events(struct disk_events *ev,
  * events_async		: list of events which can be detected w/o polling
  *			  (always empty, only for backwards compatibility)
  * events_poll_msecs	: polling interval, 0: disable, -1: system default
+ * diskseq		: disk sequence number, since boot
  */
 static ssize_t __disk_events_show(unsigned int events, char *buf)
 {
@@ -1759,16 +1760,26 @@ static ssize_t disk_events_poll_msecs_store(struct device *dev,
 	return count;
 }
 
+static ssize_t diskseq_show(struct device *dev,
+			    struct device_attribute *attr, char *buf)
+{
+	struct gendisk *disk = dev_to_disk(dev);
+
+	return sprintf(buf, "%llu\n", disk->diskseq);
+}
+
 static const DEVICE_ATTR(events, 0444, disk_events_show, NULL);
 static const DEVICE_ATTR(events_async, 0444, disk_events_async_show, NULL);
 static const DEVICE_ATTR(events_poll_msecs, 0644,
 			 disk_events_poll_msecs_show,
 			 disk_events_poll_msecs_store);
+static const DEVICE_ATTR(diskseq, 0444, diskseq_show, NULL);
 
 static const struct attribute *disk_sysfs_attrs[] = {
 	&dev_attr_events.attr,
 	&dev_attr_events_async.attr,
 	&dev_attr_events_poll_msecs.attr,
+	&dev_attr_diskseq.attr,
 	NULL,
 };
 
-- 
2.31.1


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

* [PATCH v2 5/6] block: increment sequence number
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
                   ` (3 preceding siblings ...)
  2021-05-20 13:56 ` [PATCH v2 4/6] block: export diskseq in sysfs Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-05-20 13:56 ` [PATCH v2 6/6] loop: " Matteo Croce
  2021-06-08 14:31 ` [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

Increment the disk sequence number when the media has changed,
i.e. on DISK_EVENT_MEDIA_CHANGE event.

    $ cat /sys/class/block/sr0/diskseq
    12
    $ eject
    $ cat /sys/class/block/sr0/diskseq
    22

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 block/genhd.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/block/genhd.c b/block/genhd.c
index 67519c034f9f..5bc6b6c248c4 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1666,6 +1666,9 @@ static void disk_check_events(struct disk_events *ev,
 
 	spin_unlock_irq(&ev->lock);
 
+	if (events & DISK_EVENT_MEDIA_CHANGE)
+		inc_diskseq(disk);
+
 	/*
 	 * Tell userland about new events.  Only the events listed in
 	 * @disk->events are reported, and only if DISK_EVENT_FLAG_UEVENT
-- 
2.31.1


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

* [PATCH v2 6/6] loop: increment sequence number
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
                   ` (4 preceding siblings ...)
  2021-05-20 13:56 ` [PATCH v2 5/6] block: increment sequence number Matteo Croce
@ 2021-05-20 13:56 ` Matteo Croce
  2021-06-08 14:31 ` [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-05-20 13:56 UTC (permalink / raw)
  To: linux-block, linux-fsdevel
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, Christoph Hellwig, JeffleXu

From: Matteo Croce <mcroce@microsoft.com>

On a very loaded system, if there are many events queued up from multiple
attach/detach cycles, it's impossible to match them up with the
LOOP_CONFIGURE or LOOP_SET_FD call, since we don't know where the position
of our own association in the queue is[1].
Not even an empty uevent queue is a reliable indication that we already
received the uevent we were waiting for, since with multi-partition block
devices each partition's event is queued asynchronously and might be
delivered later.

Increment the disk sequence number when setting or changing the backing
file, so the userspace knows which backing file generated the event:

    # udevadm monitor -kp |grep -e ^DEVNAME -e ^DISKSEQ &
    [1] 263
    # losetup -fP 3part
    [   12.309974] loop0: detected capacity change from 0 to 2048
    DEVNAME=/dev/loop0
    DISKSEQ=8
    [   12.360252]  loop0: p1 p2 p3
    DEVNAME=/dev/loop0
    DISKSEQ=8
    DEVNAME=/dev/loop0p1
    DISKSEQ=8
    DEVNAME=/dev/loop0p2
    DISKSEQ=8
    DEVNAME=/dev/loop0p3
    DISKSEQ=8
    # losetup -D
    DEVNAME=/dev/loop0
    DISKSEQ=9
    DEVNAME=/dev/loop0p1
    DISKSEQ=9
    DEVNAME=/dev/loop0p2
    DISKSEQ=9
    DEVNAME=/dev/loop0p3
    DISKSEQ=9
    # losetup -fP 2part
    [   29.001344] loop0: detected capacity change from 0 to 2048
    DEVNAME=/dev/loop0
    DISKSEQ=10
    [   29.040226]  loop0: p1 p2
    DEVNAME=/dev/loop0
    DISKSEQ=10
    DEVNAME=/dev/loop0p1
    DISKSEQ=10
    DEVNAME=/dev/loop0p2
    DISKSEQ=10

[1] https://github.com/systemd/systemd/issues/17469#issuecomment-762919781

Signed-off-by: Matteo Croce <mcroce@microsoft.com>
---
 drivers/block/loop.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index d58d68f3c7cd..b187fe48d2ef 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -735,6 +735,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
 		goto out_err;
 
 	/* and ... switch */
+	inc_diskseq(lo->lo_disk);
 	blk_mq_freeze_queue(lo->lo_queue);
 	mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
 	lo->lo_backing_file = file;
@@ -1123,6 +1124,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
 	if (error)
 		goto out_unlock;
 
+	inc_diskseq(lo->lo_disk);
+
 	if (!(file->f_mode & FMODE_WRITE) || !(mode & FMODE_WRITE) ||
 	    !file->f_op->write_iter)
 		lo->lo_flags |= LO_FLAGS_READ_ONLY;
@@ -1223,6 +1226,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
 	lo->lo_backing_file = NULL;
 	spin_unlock_irq(&lo->lo_lock);
 
+	inc_diskseq(lo->lo_disk);
+
 	loop_release_xfer(lo);
 	lo->transfer = NULL;
 	lo->ioctl = NULL;
-- 
2.31.1


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

* Re: [PATCH v2 0/6] block: add a sequence number to disks
  2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
                   ` (5 preceding siblings ...)
  2021-05-20 13:56 ` [PATCH v2 6/6] loop: " Matteo Croce
@ 2021-06-08 14:31 ` Matteo Croce
  6 siblings, 0 replies; 8+ messages in thread
From: Matteo Croce @ 2021-06-08 14:31 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: linux-kernel, Lennart Poettering, Luca Boccassi, Jens Axboe,
	Alexander Viro, Damien Le Moal, Tejun Heo, Javier González,
	linux-block, Niklas Cassel, Johannes Thumshirn, Hannes Reinecke,
	Matthew Wilcox, linux-fsdevel, JeffleXu

On Thu, May 20, 2021 at 3:56 PM Matteo Croce <mcroce@linux.microsoft.com> wrote:
>
> From: Matteo Croce <mcroce@microsoft.com>
>
> With this series a monotonically increasing number is added to disks,
> precisely in the genhd struct, and it's exported in sysfs and uevent.
>
> This helps the userspace correlate events for devices that reuse the
> same device, like loop.
>
> The first patch is the core one, the 2..4 expose the information in
> different ways, the 5th increases the seqnum on media change and
> the last one increases the sequence number for loop devices upon
> attach, detach or reconfigure.
>
> If merged, this feature will immediately used by the userspace:
> https://github.com/systemd/systemd/issues/17469#issuecomment-762919781
>

Hi Christoph,

I just noticed that the series doesn't apply anymore. Before
refreshing it, I wish to know what are your opinion on this one, as
nobody expressed one on latest submission.

-- 
per aspera ad upstream

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

end of thread, other threads:[~2021-06-08 14:31 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-20 13:56 [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce
2021-05-20 13:56 ` [PATCH v2 1/6] block: add disk sequence number Matteo Croce
2021-05-20 13:56 ` [PATCH v2 2/6] block: add ioctl to read the " Matteo Croce
2021-05-20 13:56 ` [PATCH v2 3/6] block: refactor sysfs code Matteo Croce
2021-05-20 13:56 ` [PATCH v2 4/6] block: export diskseq in sysfs Matteo Croce
2021-05-20 13:56 ` [PATCH v2 5/6] block: increment sequence number Matteo Croce
2021-05-20 13:56 ` [PATCH v2 6/6] loop: " Matteo Croce
2021-06-08 14:31 ` [PATCH v2 0/6] block: add a sequence number to disks Matteo Croce

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).