On Mon, 12 Jul 2021 19:22:43 +0000 "Elliott, Robert (Servers)" <elliott@xxxxxxx> wrote: > > > > -----Original Message----- > > From: Matteo Croce <mcroce@xxxxxxxxxxxxxxxxxxx> > > Sent: Sunday, July 11, 2021 12:54 PM > ... > > Subject: [PATCH v4 3/5] block: add ioctl to read the disk sequence > > number > > > > From: Matteo Croce <mcroce@xxxxxxxxxxxxx> > > > > Add a new BLKGETDISKSEQ ioctl which retrieves the disk sequence > > number from the genhd structure. > ... > > > Given: > static int put_u64(u64 __user *argp, u64 val) > { > return put_user(val, argp); > } > > > diff --git a/block/ioctl.c b/block/ioctl.c > > index 24beec9ca9c9..0c3a4a53fa11 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 BLKGETDISKSEQ: > > + return put_u64(argp, bdev->bd_disk->diskseq); > > How does that work on a system in which int is 32 bits? > > Hi, what's the difference with this? case BLKGETSIZE64: return put_u64(argp, i_size_read(bdev->bd_inode)); The returned int is an error code, not the diskseq value itself, e.g. case BLKFRAGET: if (!argp) return -EINVAL; Regards, -- per aspera ad upstream