Patch "block: add a ->get_unique_id method" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    block: add a ->get_unique_id method

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     block-add-a-get_unique_id-method.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b326901d7c5be3b41454b7c5e864106c5635e297
Author: Christoph Hellwig <hch@xxxxxx>
Date:   Thu Oct 21 08:06:01 2021 +0200

    block: add a ->get_unique_id method
    
    [ Upstream commit 9208d414975895f69e9aca49153060ddd31b18d0 ]
    
    Add a method to query unique IDs from block devices.  It will be used to
    remove code that deeply pokes into SCSI internals in the NFS server.
    The implementation in the sd driver itself is also much nicer as it can
    use the cached VPD page instead of always sending a command as the
    current NFS code does.
    
    For now the interface is kept very minimal but could be easily
    extended when other users like a block-layer sysfs interface for
    uniquue IDs shows up.
    
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Hannes Reinecke <hare@xxxxxxx>
    Link: https://lore.kernel.org/r/20211021060607.264371-2-hch@xxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>

diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 905844172cfd8..8a9b8aa4e1198 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -1846,6 +1846,14 @@ static inline void blk_ksm_unregister(struct request_queue *q) { }
 
 #endif /* CONFIG_BLK_INLINE_ENCRYPTION */
 
+enum blk_unique_id {
+	/* these match the Designator Types specified in SPC */
+	BLK_UID_T10	= 1,
+	BLK_UID_EUI64	= 2,
+	BLK_UID_NAA	= 3,
+};
+
+#define NFL4_UFLG_MASK			0x0000003F
 
 struct block_device_operations {
 	blk_qc_t (*submit_bio) (struct bio *bio);
@@ -1864,6 +1872,9 @@ struct block_device_operations {
 	int (*report_zones)(struct gendisk *, sector_t sector,
 			unsigned int nr_zones, report_zones_cb cb, void *data);
 	char *(*devnode)(struct gendisk *disk, umode_t *mode);
+	/* returns the length of the identifier or a negative errno: */
+	int (*get_unique_id)(struct gendisk *disk, u8 id[16],
+			enum blk_unique_id id_type);
 	struct module *owner;
 	const struct pr_ops *pr_ops;
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux