|
Daniel Wagner |
def3ab |
From: Daniel Wagner <dwagner@suse.de>
|
|
Daniel Wagner |
def3ab |
Date: Tue, 19 Jul 2022 16:11:13 +0200
|
|
Daniel Wagner |
def3ab |
Subject: blk-mq: fix kabi support concurrent queue quiesce unquiesce
|
|
Daniel Wagner |
def3ab |
Patch-mainline: never, kABI fix
|
|
Daniel Wagner |
def3ab |
References: bsc#1201651
|
|
Daniel Wagner |
def3ab |
|
|
Daniel Wagner |
4dedd6 |
blkdev: struct request_queue is always dynamically allocated hence
|
|
Daniel Wagner |
4dedd6 |
no need to ensure the size of the data structure stays the same.
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
scsi_device: move the new member to the hole after sdev_state. The
|
|
Daniel Wagner |
4dedd6 |
whole exists on all 64 bit plattforms because the enum is 4 bytes
|
|
Daniel Wagner |
4dedd6 |
and quiesced_by is a pointer aligned to 8 byte boundery.
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
/* --- cacheline 32 boundary (2048 bytes) was 16 bytes ago --- */
|
|
Daniel Wagner |
4dedd6 |
enum scsi_device_state sdev_state; /* 2064 4 */
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
/* XXX 4 bytes hole, try to pack */
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
struct task_struct * quiesced_by; /* 2072 8 */
|
|
Daniel Wagner |
4dedd6 |
long unsigned int sdev_data[]; /* 2080 0 */
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
/* size: 2080, cachelines: 33, members: 110 */
|
|
Daniel Wagner |
4dedd6 |
/* sum members: 2039, holes: 7, sum holes: 35 */
|
|
Daniel Wagner |
4dedd6 |
/* sum bitfield members: 48 bits (6 bytes) */
|
|
Daniel Wagner |
4dedd6 |
/* forced alignments: 2 */
|
|
Daniel Wagner |
4dedd6 |
/* last cacheline: 32 bytes */
|
|
Daniel Wagner |
4dedd6 |
|
|
Lee Duncan |
38a699 |
[lduncan: refreshed to apply]
|
|
Daniel Wagner |
def3ab |
---
|
|
Daniel Wagner |
4dedd6 |
include/linux/blkdev.h | 6 ++++--
|
|
Daniel Wagner |
4dedd6 |
include/scsi/scsi_device.h | 4 +++-
|
|
Daniel Wagner |
4dedd6 |
2 files changed, 7 insertions(+), 3 deletions(-)
|
|
Daniel Wagner |
def3ab |
|
|
Daniel Wagner |
def3ab |
--- a/include/linux/blkdev.h
|
|
Daniel Wagner |
def3ab |
+++ b/include/linux/blkdev.h
|
|
Daniel Wagner |
def3ab |
@@ -561,8 +561,6 @@ struct request_queue {
|
|
Daniel Wagner |
def3ab |
*/
|
|
Daniel Wagner |
def3ab |
struct mutex mq_freeze_lock;
|
|
Daniel Wagner |
def3ab |
|
|
Daniel Wagner |
def3ab |
- int quiesce_depth;
|
|
Daniel Wagner |
def3ab |
-
|
|
Daniel Wagner |
def3ab |
struct blk_mq_tag_set *tag_set;
|
|
Daniel Wagner |
def3ab |
struct list_head tag_set_list;
|
|
Daniel Wagner |
def3ab |
struct bio_set bio_split;
|
|
Daniel Wagner |
def3ab |
@@ -580,6 +578,10 @@ struct request_queue {
|
|
Daniel Wagner |
def3ab |
|
|
Daniel Wagner |
def3ab |
#define BLK_MAX_WRITE_HINTS 5
|
|
Daniel Wagner |
def3ab |
u64 write_hints[BLK_MAX_WRITE_HINTS];
|
|
Daniel Wagner |
def3ab |
+
|
|
Daniel Wagner |
def3ab |
+#ifndef __GENKSYMS__
|
|
Daniel Wagner |
def3ab |
+ int quiesce_depth;
|
|
Daniel Wagner |
4dedd6 |
+#endif
|
|
Daniel Wagner |
def3ab |
};
|
|
Daniel Wagner |
def3ab |
|
|
Daniel Wagner |
def3ab |
/* Keep blk_queue_flag_name[] in sync with the definitions below */
|
|
Daniel Wagner |
4dedd6 |
--- a/include/scsi/scsi_device.h
|
|
Daniel Wagner |
4dedd6 |
+++ b/include/scsi/scsi_device.h
|
|
Lee Duncan |
38a699 |
@@ -215,7 +215,6 @@ struct scsi_device {
|
|
Lee Duncan |
14ff6c |
unsigned no_vpd_size:1; /* No VPD size reported in header */
|
|
Daniel Wagner |
4dedd6 |
#endif
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
- unsigned int queue_stopped; /* request queue is quiesced */
|
|
Daniel Wagner |
4dedd6 |
bool offline_already; /* Device offline message logged */
|
|
Daniel Wagner |
4dedd6 |
|
|
Daniel Wagner |
4dedd6 |
atomic_t disk_events_disable_depth; /* disable depth for disk events */
|
|
Lee Duncan |
38a699 |
@@ -247,6 +246,9 @@ struct scsi_device {
|
|
Daniel Wagner |
4dedd6 |
unsigned char access_state;
|
|
Daniel Wagner |
4dedd6 |
struct mutex state_mutex;
|
|
Daniel Wagner |
4dedd6 |
enum scsi_device_state sdev_state;
|
|
Daniel Wagner |
4dedd6 |
+#ifndef __GENKSYMS__
|
|
Daniel Wagner |
4dedd6 |
+ unsigned int queue_stopped; /* request queue is quiesced */
|
|
Daniel Wagner |
4dedd6 |
+#endif
|
|
Daniel Wagner |
4dedd6 |
struct task_struct *quiesced_by;
|
|
Daniel Wagner |
4dedd6 |
unsigned long sdev_data[];
|
|
Daniel Wagner |
4dedd6 |
} __attribute__((aligned(sizeof(unsigned long))));
|