sed-opal: add support flag for SUM in status ioctl
authorLuca Boccassi <bluca@debian.org>
Fri, 10 Feb 2023 01:06:12 +0000 (01:06 +0000)
committerJens Axboe <axboe@kernel.dk>
Fri, 17 Feb 2023 13:15:53 +0000 (06:15 -0700)
Not every OPAL drive supports SUM (Single User Mode), so report this
information to userspace via the get-status ioctl so that we can adjust
the formatting options accordingly.
Tested on a kingston drive (which supports it) and a samsung one
(which does not).

Signed-off-by: Luca Boccassi <bluca@debian.org>
Link: https://lore.kernel.org/r/20230210010612.28729-1-luca.boccassi@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/sed-opal.c
include/uapi/linux/sed-opal.h

index 463873f..c320093 100644 (file)
@@ -487,6 +487,8 @@ static int opal_discovery0_end(struct opal_dev *dev)
                        break;
                case FC_SINGLEUSER:
                        single_user = check_sum(body->features);
+                       if (single_user)
+                               dev->flags |= OPAL_FL_SUM_SUPPORTED;
                        break;
                case FC_GEOMETRY:
                        check_geometry(dev, body);
index 1fed3c9..d7a1524 100644 (file)
@@ -144,6 +144,7 @@ struct opal_read_write_table {
 #define OPAL_FL_LOCKED                 0x00000008
 #define OPAL_FL_MBR_ENABLED            0x00000010
 #define OPAL_FL_MBR_DONE               0x00000020
+#define OPAL_FL_SUM_SUPPORTED          0x00000040
 
 struct opal_status {
        __u32 flags;