diff options
Diffstat (limited to 'target/linux/generic/backport-5.4/800-v5.5-scsi-core-Add-sysfs-attributes-for-VPD-pages-0h-and-.patch')
-rw-r--r-- | target/linux/generic/backport-5.4/800-v5.5-scsi-core-Add-sysfs-attributes-for-VPD-pages-0h-and-.patch | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/target/linux/generic/backport-5.4/800-v5.5-scsi-core-Add-sysfs-attributes-for-VPD-pages-0h-and-.patch b/target/linux/generic/backport-5.4/800-v5.5-scsi-core-Add-sysfs-attributes-for-VPD-pages-0h-and-.patch deleted file mode 100644 index 2133280e88..0000000000 --- a/target/linux/generic/backport-5.4/800-v5.5-scsi-core-Add-sysfs-attributes-for-VPD-pages-0h-and-.patch +++ /dev/null @@ -1,122 +0,0 @@ -From d188b0675b21d5a6ca27b3e741381813983f4719 Mon Sep 17 00:00:00 2001 -From: Ryan Attard <ryanattard@ryanattard.info> -Date: Thu, 26 Sep 2019 11:22:17 -0500 -Subject: [PATCH] scsi: core: Add sysfs attributes for VPD pages 0h and 89h - -Add sysfs attributes for the ATA information page and Supported VPD Pages -page. - -Link: https://lore.kernel.org/r/20190926162216.56591-1-ryanattard@ryanattard.info -Signed-off-by: Ryan Attard <ryanattard@ryanattard.info> -Reviewed-by: Bart Van Assche <bvanassche@acm.org> -Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> ---- - drivers/scsi/scsi.c | 4 ++++ - drivers/scsi/scsi_sysfs.c | 19 +++++++++++++++++++ - include/scsi/scsi_device.h | 2 ++ - 3 files changed, 25 insertions(+) - ---- a/drivers/scsi/scsi.c -+++ b/drivers/scsi/scsi.c -@@ -465,10 +465,14 @@ void scsi_attach_vpd(struct scsi_device - return; - - for (i = 4; i < vpd_buf->len; i++) { -+ if (vpd_buf->data[i] == 0x0) -+ scsi_update_vpd_page(sdev, 0x0, &sdev->vpd_pg0); - if (vpd_buf->data[i] == 0x80) - scsi_update_vpd_page(sdev, 0x80, &sdev->vpd_pg80); - if (vpd_buf->data[i] == 0x83) - scsi_update_vpd_page(sdev, 0x83, &sdev->vpd_pg83); -+ if (vpd_buf->data[i] == 0x89) -+ scsi_update_vpd_page(sdev, 0x89, &sdev->vpd_pg89); - } - kfree(vpd_buf); - } ---- a/drivers/scsi/scsi_sysfs.c -+++ b/drivers/scsi/scsi_sysfs.c -@@ -437,6 +437,7 @@ static void scsi_device_dev_release_user - struct device *parent; - struct list_head *this, *tmp; - struct scsi_vpd *vpd_pg80 = NULL, *vpd_pg83 = NULL; -+ struct scsi_vpd *vpd_pg0 = NULL, *vpd_pg89 = NULL; - unsigned long flags; - struct module *mod; - -@@ -469,16 +470,24 @@ static void scsi_device_dev_release_user - sdev->request_queue = NULL; - - mutex_lock(&sdev->inquiry_mutex); -+ rcu_swap_protected(sdev->vpd_pg0, vpd_pg0, -+ lockdep_is_held(&sdev->inquiry_mutex)); - rcu_swap_protected(sdev->vpd_pg80, vpd_pg80, - lockdep_is_held(&sdev->inquiry_mutex)); - rcu_swap_protected(sdev->vpd_pg83, vpd_pg83, - lockdep_is_held(&sdev->inquiry_mutex)); -+ rcu_swap_protected(sdev->vpd_pg89, vpd_pg89, -+ lockdep_is_held(&sdev->inquiry_mutex)); - mutex_unlock(&sdev->inquiry_mutex); - -+ if (vpd_pg0) -+ kfree_rcu(vpd_pg0, rcu); - if (vpd_pg83) - kfree_rcu(vpd_pg83, rcu); - if (vpd_pg80) - kfree_rcu(vpd_pg80, rcu); -+ if (vpd_pg89) -+ kfree_rcu(vpd_pg89, rcu); - kfree(sdev->inquiry); - kfree(sdev); - -@@ -891,6 +900,8 @@ static struct bin_attribute dev_attr_vpd - - sdev_vpd_pg_attr(pg83); - sdev_vpd_pg_attr(pg80); -+sdev_vpd_pg_attr(pg89); -+sdev_vpd_pg_attr(pg0); - - static ssize_t show_inquiry(struct file *filep, struct kobject *kobj, - struct bin_attribute *bin_attr, -@@ -1223,12 +1234,18 @@ static umode_t scsi_sdev_bin_attr_is_vis - struct scsi_device *sdev = to_scsi_device(dev); - - -+ if (attr == &dev_attr_vpd_pg0 && !sdev->vpd_pg0) -+ return 0; -+ - if (attr == &dev_attr_vpd_pg80 && !sdev->vpd_pg80) - return 0; - - if (attr == &dev_attr_vpd_pg83 && !sdev->vpd_pg83) - return 0; - -+ if (attr == &dev_attr_vpd_pg89 && !sdev->vpd_pg89) -+ return 0; -+ - return S_IRUGO; - } - -@@ -1271,8 +1288,10 @@ static struct attribute *scsi_sdev_attrs - }; - - static struct bin_attribute *scsi_sdev_bin_attrs[] = { -+ &dev_attr_vpd_pg0, - &dev_attr_vpd_pg83, - &dev_attr_vpd_pg80, -+ &dev_attr_vpd_pg89, - &dev_attr_inquiry, - NULL - }; ---- a/include/scsi/scsi_device.h -+++ b/include/scsi/scsi_device.h -@@ -140,8 +140,10 @@ struct scsi_device { - const char * rev; /* ... "nullnullnullnull" before scan */ - - #define SCSI_VPD_PG_LEN 255 -+ struct scsi_vpd __rcu *vpd_pg0; - struct scsi_vpd __rcu *vpd_pg83; - struct scsi_vpd __rcu *vpd_pg80; -+ struct scsi_vpd __rcu *vpd_pg89; - unsigned char current_tag; /* current tag */ - struct scsi_target *sdev_target; /* used only for single_lun */ - |