提交 dde4fe56 编写于 作者: Z Zhihao Cheng 提交者: Zheng Zengkai

kabi: Add kabi reservation for storage module

hulk inclusion
category: feature
bugzilla: 185747 https://gitee.com/openeuler/kernel/issues/I4OUFN
CVE: NA

-------------------------------

Introduce kabi for storage module.
Signed-off-by: NZhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: NJason Yan <yanaijie@huawei.com>
Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 800d1646
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
#ifndef INT_BLK_MQ_TAG_H #ifndef INT_BLK_MQ_TAG_H
#define INT_BLK_MQ_TAG_H #define INT_BLK_MQ_TAG_H
#include <linux/kabi.h>
/* /*
* Tag address space map. * Tag address space map.
*/ */
...@@ -26,6 +28,11 @@ struct blk_mq_tags { ...@@ -26,6 +28,11 @@ struct blk_mq_tags {
* request pool * request pool
*/ */
spinlock_t lock; spinlock_t lock;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
extern struct blk_mq_tags *blk_mq_init_tags(unsigned int nr_tags, extern struct blk_mq_tags *blk_mq_init_tags(unsigned int nr_tags,
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#ifndef _NVME_H #ifndef _NVME_H
#define _NVME_H #define _NVME_H
#include <linux/kabi.h>
#include <linux/nvme.h> #include <linux/nvme.h>
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/pci.h> #include <linux/pci.h>
...@@ -346,6 +347,11 @@ struct nvme_ctrl { ...@@ -346,6 +347,11 @@ struct nvme_ctrl {
unsigned long discard_page_busy; unsigned long discard_page_busy;
struct nvme_fault_inject fault_inject; struct nvme_fault_inject fault_inject;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
enum nvme_iopolicy { enum nvme_iopolicy {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef __LINUX_BACKING_DEV_DEFS_H #ifndef __LINUX_BACKING_DEV_DEFS_H
#define __LINUX_BACKING_DEV_DEFS_H #define __LINUX_BACKING_DEV_DEFS_H
#include <linux/kabi.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/radix-tree.h> #include <linux/radix-tree.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
...@@ -160,6 +161,11 @@ struct bdi_writeback { ...@@ -160,6 +161,11 @@ struct bdi_writeback {
struct rcu_head rcu; struct rcu_head rcu;
}; };
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
struct backing_dev_info { struct backing_dev_info {
...@@ -198,6 +204,11 @@ struct backing_dev_info { ...@@ -198,6 +204,11 @@ struct backing_dev_info {
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
struct dentry *debug_dir; struct dentry *debug_dir;
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
enum { enum {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef __LINUX_BIO_H #ifndef __LINUX_BIO_H
#define __LINUX_BIO_H #define __LINUX_BIO_H
#include <linux/kabi.h>
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/mempool.h> #include <linux/mempool.h>
#include <linux/ioprio.h> #include <linux/ioprio.h>
...@@ -321,6 +322,10 @@ struct bio_integrity_payload { ...@@ -321,6 +322,10 @@ struct bio_integrity_payload {
struct work_struct bip_work; /* I/O completion */ struct work_struct bip_work; /* I/O completion */
struct bio_vec *bip_vec; struct bio_vec *bip_vec;
KABI_RESERVE(1)
KABI_RESERVE(2)
struct bio_vec bip_inline_vecs[];/* embedded bvec array */ struct bio_vec bip_inline_vecs[];/* embedded bvec array */
}; };
...@@ -694,6 +699,11 @@ struct bio_set { ...@@ -694,6 +699,11 @@ struct bio_set {
struct bio_list rescue_list; struct bio_list rescue_list;
struct work_struct rescue_work; struct work_struct rescue_work;
struct workqueue_struct *rescue_workqueue; struct workqueue_struct *rescue_workqueue;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
struct biovec_slab { struct biovec_slab {
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
* Nauman Rafique <nauman@google.com> * Nauman Rafique <nauman@google.com>
*/ */
#include <linux/kabi.h>
#include <linux/cgroup.h> #include <linux/cgroup.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/percpu_counter.h> #include <linux/percpu_counter.h>
...@@ -58,6 +59,11 @@ struct blkcg { ...@@ -58,6 +59,11 @@ struct blkcg {
#ifdef CONFIG_CGROUP_WRITEBACK #ifdef CONFIG_CGROUP_WRITEBACK
struct list_head cgwb_list; struct list_head cgwb_list;
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
struct blkg_iostat { struct blkg_iostat {
...@@ -169,6 +175,11 @@ struct blkcg_policy { ...@@ -169,6 +175,11 @@ struct blkcg_policy {
blkcg_pol_free_pd_fn *pd_free_fn; blkcg_pol_free_pd_fn *pd_free_fn;
blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn; blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn;
blkcg_pol_stat_pd_fn *pd_stat_fn; blkcg_pol_stat_pd_fn *pd_stat_fn;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
extern struct blkcg blkcg_root; extern struct blkcg blkcg_root;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef BLK_MQ_H #ifndef BLK_MQ_H
#define BLK_MQ_H #define BLK_MQ_H
#include <linux/kabi.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/sbitmap.h> #include <linux/sbitmap.h>
#include <linux/srcu.h> #include <linux/srcu.h>
...@@ -175,6 +176,15 @@ struct blk_mq_hw_ctx { ...@@ -175,6 +176,15 @@ struct blk_mq_hw_ctx {
*/ */
struct list_head hctx_list; struct list_head hctx_list;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
/** /**
* @srcu: Sleepable RCU. Use as lock when type of the hardware queue is * @srcu: Sleepable RCU. Use as lock when type of the hardware queue is
* blocking (BLK_MQ_F_BLOCKING). Must be the last member - see also * blocking (BLK_MQ_F_BLOCKING). Must be the last member - see also
...@@ -267,6 +277,15 @@ struct blk_mq_tag_set { ...@@ -267,6 +277,15 @@ struct blk_mq_tag_set {
struct mutex tag_list_lock; struct mutex tag_list_lock;
struct list_head tag_list; struct list_head tag_list;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
}; };
/** /**
...@@ -278,6 +297,8 @@ struct blk_mq_tag_set { ...@@ -278,6 +297,8 @@ struct blk_mq_tag_set {
struct blk_mq_queue_data { struct blk_mq_queue_data {
struct request *rq; struct request *rq;
bool last; bool last;
KABI_RESERVE(1)
}; };
typedef bool (busy_iter_fn)(struct blk_mq_hw_ctx *, struct request *, void *, typedef bool (busy_iter_fn)(struct blk_mq_hw_ctx *, struct request *, void *,
...@@ -387,6 +408,15 @@ struct blk_mq_ops { ...@@ -387,6 +408,15 @@ struct blk_mq_ops {
*/ */
void (*show_rq)(struct seq_file *m, struct request *rq); void (*show_rq)(struct seq_file *m, struct request *rq);
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
}; };
enum { enum {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#ifndef __LINUX_BLK_TYPES_H #ifndef __LINUX_BLK_TYPES_H
#define __LINUX_BLK_TYPES_H #define __LINUX_BLK_TYPES_H
#include <linux/kabi.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/bvec.h> #include <linux/bvec.h>
#include <linux/ktime.h> #include <linux/ktime.h>
...@@ -48,6 +49,10 @@ struct block_device { ...@@ -48,6 +49,10 @@ struct block_device {
/* Mutex for freeze */ /* Mutex for freeze */
struct mutex bd_fsfreeze_mutex; struct mutex bd_fsfreeze_mutex;
KABI_RESERVE(1) KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
} __randomize_layout; } __randomize_layout;
/* /*
...@@ -259,6 +264,11 @@ struct bio { ...@@ -259,6 +264,11 @@ struct bio {
struct bio_set *bi_pool; struct bio_set *bi_pool;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
/* /*
* We can inline a number of vecs at the end of the bio, to avoid * We can inline a number of vecs at the end of the bio, to avoid
* double allocations for a small number of bio_vecs. This member * double allocations for a small number of bio_vecs. This member
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _LINUX_BLKDEV_H #ifndef _LINUX_BLKDEV_H
#define _LINUX_BLKDEV_H #define _LINUX_BLKDEV_H
#include <linux/kabi.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/clock.h> #include <linux/sched/clock.h>
#include <linux/major.h> #include <linux/major.h>
...@@ -354,6 +355,8 @@ struct queue_limits { ...@@ -354,6 +355,8 @@ struct queue_limits {
unsigned char discard_misaligned; unsigned char discard_misaligned;
unsigned char raid_partial_stripes_expensive; unsigned char raid_partial_stripes_expensive;
enum blk_zoned_model zoned; enum blk_zoned_model zoned;
KABI_RESERVE(1)
}; };
typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx,
...@@ -598,6 +601,11 @@ struct request_queue { ...@@ -598,6 +601,11 @@ struct request_queue {
#define BLK_MAX_WRITE_HINTS 5 #define BLK_MAX_WRITE_HINTS 5
u64 write_hints[BLK_MAX_WRITE_HINTS]; u64 write_hints[BLK_MAX_WRITE_HINTS];
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/* Keep blk_queue_flag_name[] in sync with the definitions below */ /* Keep blk_queue_flag_name[] in sync with the definitions below */
...@@ -1700,6 +1708,9 @@ struct blk_integrity_profile { ...@@ -1700,6 +1708,9 @@ struct blk_integrity_profile {
integrity_prepare_fn *prepare_fn; integrity_prepare_fn *prepare_fn;
integrity_complete_fn *complete_fn; integrity_complete_fn *complete_fn;
const char *name; const char *name;
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
extern void blk_integrity_register(struct gendisk *, struct blk_integrity *); extern void blk_integrity_register(struct gendisk *, struct blk_integrity *);
...@@ -1893,6 +1904,11 @@ struct block_device_operations { ...@@ -1893,6 +1904,11 @@ struct block_device_operations {
char *(*devnode)(struct gendisk *disk, umode_t *mode); char *(*devnode)(struct gendisk *disk, umode_t *mode);
struct module *owner; struct module *owner;
const struct pr_ops *pr_ops; const struct pr_ops *pr_ops;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#ifndef _LINUX_CRED_H #ifndef _LINUX_CRED_H
#define _LINUX_CRED_H #define _LINUX_CRED_H
#include <linux/kabi.h>
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/key.h> #include <linux/key.h>
...@@ -151,7 +152,16 @@ struct cred { ...@@ -151,7 +152,16 @@ struct cred {
int non_rcu; /* Can we skip RCU deletion? */ int non_rcu; /* Can we skip RCU deletion? */
struct rcu_head rcu; /* RCU deletion hook */ struct rcu_head rcu; /* RCU deletion hook */
}; };
KABI_RESERVE(1) /* reserved for ucounts */ KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
KABI_RESERVE(9)
KABI_RESERVE(10)
} __randomize_layout; } __randomize_layout;
extern void __put_cred(struct cred *); extern void __put_cred(struct cred *);
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef __LINUX_DCACHE_H #ifndef __LINUX_DCACHE_H
#define __LINUX_DCACHE_H #define __LINUX_DCACHE_H
#include <linux/kabi.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/rculist.h> #include <linux/rculist.h>
...@@ -121,6 +122,9 @@ struct dentry { ...@@ -121,6 +122,9 @@ struct dentry {
} d_u; } d_u;
/* negative dentry under this dentry, if it's dir */ /* negative dentry under this dentry, if it's dir */
atomic_t d_neg_dnum; atomic_t d_neg_dnum;
KABI_RESERVE(1)
KABI_RESERVE(2)
} __randomize_layout; } __randomize_layout;
/* /*
...@@ -150,6 +154,11 @@ struct dentry_operations { ...@@ -150,6 +154,11 @@ struct dentry_operations {
struct vfsmount *(*d_automount)(struct path *); struct vfsmount *(*d_automount)(struct path *);
int (*d_manage)(const struct path *, bool); int (*d_manage)(const struct path *, bool);
struct dentry *(*d_real)(struct dentry *, const struct inode *); struct dentry *(*d_real)(struct dentry *, const struct inode *);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
} ____cacheline_aligned; } ____cacheline_aligned;
/* /*
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#ifndef _DEVICE_H_ #ifndef _DEVICE_H_
#define _DEVICE_H_ #define _DEVICE_H_
#include <linux/kabi.h>
#include <linux/dev_printk.h> #include <linux/dev_printk.h>
#include <linux/energy_model.h> #include <linux/energy_model.h>
#include <linux/ioport.h> #include <linux/ioport.h>
...@@ -568,6 +569,14 @@ struct device { ...@@ -568,6 +569,14 @@ struct device {
KABI_RESERVE(6) KABI_RESERVE(6)
KABI_RESERVE(7) KABI_RESERVE(7)
KABI_RESERVE(8) KABI_RESERVE(8)
KABI_RESERVE(9)
KABI_RESERVE(10)
KABI_RESERVE(11)
KABI_RESERVE(12)
KABI_RESERVE(13)
KABI_RESERVE(14)
KABI_RESERVE(15)
KABI_RESERVE(16)
}; };
/** /**
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#ifndef _DEVICE_CLASS_H_ #ifndef _DEVICE_CLASS_H_
#define _DEVICE_CLASS_H_ #define _DEVICE_CLASS_H_
#include <linux/kabi.h>
#include <linux/kobject.h> #include <linux/kobject.h>
#include <linux/klist.h> #include <linux/klist.h>
#include <linux/pm.h> #include <linux/pm.h>
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#ifndef _DEVICE_DRIVER_H_ #ifndef _DEVICE_DRIVER_H_
#define _DEVICE_DRIVER_H_ #define _DEVICE_DRIVER_H_
#include <linux/kabi.h>
#include <linux/kobject.h> #include <linux/kobject.h>
#include <linux/klist.h> #include <linux/klist.h>
#include <linux/pm.h> #include <linux/pm.h>
...@@ -118,6 +119,11 @@ struct device_driver { ...@@ -118,6 +119,11 @@ struct device_driver {
void (*coredump) (struct device *dev); void (*coredump) (struct device *dev);
struct driver_private *p; struct driver_private *p;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _LINUX_ELEVATOR_H #ifndef _LINUX_ELEVATOR_H
#define _LINUX_ELEVATOR_H #define _LINUX_ELEVATOR_H
#include <linux/kabi.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/hashtable.h> #include <linux/hashtable.h>
...@@ -50,6 +51,15 @@ struct elevator_mq_ops { ...@@ -50,6 +51,15 @@ struct elevator_mq_ops {
struct request *(*next_request)(struct request_queue *, struct request *); struct request *(*next_request)(struct request_queue *, struct request *);
void (*init_icq)(struct io_cq *); void (*init_icq)(struct io_cq *);
void (*exit_icq)(struct io_cq *); void (*exit_icq)(struct io_cq *);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
}; };
#define ELV_NAME_MAX (16) #define ELV_NAME_MAX (16)
...@@ -86,6 +96,11 @@ struct elevator_type ...@@ -86,6 +96,11 @@ struct elevator_type
/* managed by elevator core */ /* managed by elevator core */
char icq_cache_name[ELV_NAME_MAX + 6]; /* elvname + "_io_cq" */ char icq_cache_name[ELV_NAME_MAX + 6]; /* elvname + "_io_cq" */
struct list_head list; struct list_head list;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
#define ELV_HASH_BITS 6 #define ELV_HASH_BITS 6
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef LINUX_EXPORTFS_H #ifndef LINUX_EXPORTFS_H
#define LINUX_EXPORTFS_H 1 #define LINUX_EXPORTFS_H 1
#include <linux/kabi.h>
#include <linux/types.h> #include <linux/types.h>
struct dentry; struct dentry;
...@@ -213,6 +214,9 @@ struct export_operations { ...@@ -213,6 +214,9 @@ struct export_operations {
bool write, u32 *device_generation); bool write, u32 *device_generation);
int (*commit_blocks)(struct inode *inode, struct iomap *iomaps, int (*commit_blocks)(struct inode *inode, struct iomap *iomaps,
int nr_iomaps, struct iattr *iattr); int nr_iomaps, struct iattr *iattr);
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
extern int exportfs_encode_inode_fh(struct inode *inode, struct fid *fid, extern int exportfs_encode_inode_fh(struct inode *inode, struct fid *fid,
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _LINUX_FS_H #ifndef _LINUX_FS_H
#define _LINUX_FS_H #define _LINUX_FS_H
#include <linux/kabi.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/wait_bit.h> #include <linux/wait_bit.h>
#include <linux/kdev_t.h> #include <linux/kdev_t.h>
...@@ -417,6 +418,11 @@ struct address_space_operations { ...@@ -417,6 +418,11 @@ struct address_space_operations {
int (*swap_activate)(struct swap_info_struct *sis, struct file *file, int (*swap_activate)(struct swap_info_struct *sis, struct file *file,
sector_t *span); sector_t *span);
void (*swap_deactivate)(struct file *file); void (*swap_deactivate)(struct file *file);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
extern const struct address_space_operations empty_aops; extern const struct address_space_operations empty_aops;
...@@ -470,6 +476,11 @@ struct address_space { ...@@ -470,6 +476,11 @@ struct address_space {
spinlock_t private_lock; spinlock_t private_lock;
struct list_head private_list; struct list_head private_list;
void *private_data; void *private_data;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
} __attribute__((aligned(sizeof(long)))) __randomize_layout; } __attribute__((aligned(sizeof(long)))) __randomize_layout;
/* /*
* On most architectures that alignment is already the case; but * On most architectures that alignment is already the case; but
...@@ -720,6 +731,9 @@ struct inode { ...@@ -720,6 +731,9 @@ struct inode {
#endif #endif
void *i_private; /* fs or device private pointer */ void *i_private; /* fs or device private pointer */
KABI_RESERVE(1)
KABI_RESERVE(2)
} __randomize_layout; } __randomize_layout;
struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode); struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode);
...@@ -1013,6 +1027,9 @@ struct file_lock; ...@@ -1013,6 +1027,9 @@ struct file_lock;
struct file_lock_operations { struct file_lock_operations {
void (*fl_copy_lock)(struct file_lock *, struct file_lock *); void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
void (*fl_release_private)(struct file_lock *); void (*fl_release_private)(struct file_lock *);
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct lock_manager_operations { struct lock_manager_operations {
...@@ -1024,6 +1041,9 @@ struct lock_manager_operations { ...@@ -1024,6 +1041,9 @@ struct lock_manager_operations {
int (*lm_change)(struct file_lock *, int, struct list_head *); int (*lm_change)(struct file_lock *, int, struct list_head *);
void (*lm_setup)(struct file_lock *, void **); void (*lm_setup)(struct file_lock *, void **);
bool (*lm_breaker_owns_lease)(struct file_lock *); bool (*lm_breaker_owns_lease)(struct file_lock *);
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct lock_manager { struct lock_manager {
...@@ -1863,6 +1883,11 @@ struct file_operations { ...@@ -1863,6 +1883,11 @@ struct file_operations {
struct file *file_out, loff_t pos_out, struct file *file_out, loff_t pos_out,
loff_t len, unsigned int remap_flags); loff_t len, unsigned int remap_flags);
int (*fadvise)(struct file *, loff_t, loff_t, int); int (*fadvise)(struct file *, loff_t, loff_t, int);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
} __randomize_layout; } __randomize_layout;
struct inode_operations { struct inode_operations {
...@@ -1893,6 +1918,19 @@ struct inode_operations { ...@@ -1893,6 +1918,19 @@ struct inode_operations {
umode_t create_mode); umode_t create_mode);
int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*tmpfile) (struct inode *, struct dentry *, umode_t);
int (*set_acl)(struct inode *, struct posix_acl *, int); int (*set_acl)(struct inode *, struct posix_acl *, int);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
KABI_RESERVE(9)
KABI_RESERVE(10)
KABI_RESERVE(11)
KABI_RESERVE(12)
} ____cacheline_aligned; } ____cacheline_aligned;
static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio, static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
...@@ -1968,6 +2006,11 @@ struct super_operations { ...@@ -1968,6 +2006,11 @@ struct super_operations {
struct shrink_control *); struct shrink_control *);
long (*free_cached_objects)(struct super_block *, long (*free_cached_objects)(struct super_block *,
struct shrink_control *); struct shrink_control *);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/* /*
...@@ -2255,6 +2298,11 @@ struct file_system_type { ...@@ -2255,6 +2298,11 @@ struct file_system_type {
struct lock_class_key i_lock_key; struct lock_class_key i_lock_key;
struct lock_class_key i_mutex_key; struct lock_class_key i_mutex_key;
struct lock_class_key i_mutex_dir_key; struct lock_class_key i_mutex_dir_key;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME) #define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/kabi.h>
#include <linux/idr.h> /* inotify uses this */ #include <linux/idr.h> /* inotify uses this */
#include <linux/fs.h> /* struct inode */ #include <linux/fs.h> /* struct inode */
#include <linux/list.h> #include <linux/list.h>
...@@ -158,6 +159,8 @@ struct fsnotify_ops { ...@@ -158,6 +159,8 @@ struct fsnotify_ops {
void (*free_event)(struct fsnotify_event *event); void (*free_event)(struct fsnotify_event *event);
/* called on final put+free to free memory */ /* called on final put+free to free memory */
void (*free_mark)(struct fsnotify_mark *mark); void (*free_mark)(struct fsnotify_mark *mark);
KABI_RESERVE(1)
}; };
/* /*
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
* <drew@colorado.edu> * <drew@colorado.edu>
*/ */
#include <linux/kabi.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/kdev_t.h> #include <linux/kdev_t.h>
#include <linux/rcupdate.h> #include <linux/rcupdate.h>
...@@ -74,6 +75,11 @@ struct hd_struct { ...@@ -74,6 +75,11 @@ struct hd_struct {
int make_it_fail; int make_it_fail;
#endif #endif
struct rcu_work rcu_work; struct rcu_work rcu_work;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/** /**
...@@ -163,6 +169,9 @@ struct blk_integrity { ...@@ -163,6 +169,9 @@ struct blk_integrity {
unsigned char tuple_size; unsigned char tuple_size;
unsigned char interval_exp; unsigned char interval_exp;
unsigned char tag_size; unsigned char tag_size;
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct gendisk { struct gendisk {
...@@ -210,6 +219,11 @@ struct gendisk { ...@@ -210,6 +219,11 @@ struct gendisk {
int node_id; int node_id;
struct badblocks *bb; struct badblocks *bb;
struct lockdep_map lockdep_map; struct lockdep_map lockdep_map;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
#if IS_REACHABLE(CONFIG_CDROM) #if IS_REACHABLE(CONFIG_CDROM)
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef LINUX_IOMAP_H #ifndef LINUX_IOMAP_H
#define LINUX_IOMAP_H 1 #define LINUX_IOMAP_H 1
#include <linux/kabi.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/bitmap.h> #include <linux/bitmap.h>
#include <linux/blk_types.h> #include <linux/blk_types.h>
...@@ -141,6 +142,11 @@ struct iomap_ops { ...@@ -141,6 +142,11 @@ struct iomap_ops {
*/ */
int (*iomap_end)(struct inode *inode, loff_t pos, loff_t length, int (*iomap_end)(struct inode *inode, loff_t pos, loff_t length,
ssize_t written, unsigned flags, struct iomap *iomap); ssize_t written, unsigned flags, struct iomap *iomap);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/* /*
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#define _LINUX_IOPORT_H #define _LINUX_IOPORT_H
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/kabi.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/bits.h> #include <linux/bits.h>
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#define JBD2_DEBUG #define JBD2_DEBUG
#else #else
#include <linux/kabi.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
#include <linux/journal-head.h> #include <linux/journal-head.h>
...@@ -1302,6 +1303,11 @@ struct journal_s ...@@ -1302,6 +1303,11 @@ struct journal_s
struct buffer_head *bh, struct buffer_head *bh,
enum passtype pass, int off, enum passtype pass, int off,
tid_t expected_commit_id); tid_t expected_commit_id);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
#define jbd2_might_wait_for_commit(j) \ #define jbd2_might_wait_for_commit(j) \
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#ifndef __LINUX_KERNFS_H #ifndef __LINUX_KERNFS_H
#define __LINUX_KERNFS_H #define __LINUX_KERNFS_H
#include <linux/kabi.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/list.h> #include <linux/list.h>
...@@ -175,6 +176,11 @@ struct kernfs_syscall_ops { ...@@ -175,6 +176,11 @@ struct kernfs_syscall_ops {
const char *new_name); const char *new_name);
int (*show_path)(struct seq_file *sf, struct kernfs_node *kn, int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,
struct kernfs_root *root); struct kernfs_root *root);
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
struct kernfs_root { struct kernfs_root {
...@@ -268,6 +274,9 @@ struct kernfs_ops { ...@@ -268,6 +274,9 @@ struct kernfs_ops {
#ifdef CONFIG_DEBUG_LOCK_ALLOC #ifdef CONFIG_DEBUG_LOCK_ALLOC
struct lock_class_key lockdep_key; struct lock_class_key lockdep_key;
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
/* /*
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/kabi.h>
#include <linux/mmdebug.h> #include <linux/mmdebug.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/bug.h> #include <linux/bug.h>
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#ifndef _LINUX_MOUNT_H #ifndef _LINUX_MOUNT_H
#define _LINUX_MOUNT_H #define _LINUX_MOUNT_H
#include <linux/kabi.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/nodemask.h> #include <linux/nodemask.h>
...@@ -72,6 +73,8 @@ struct vfsmount { ...@@ -72,6 +73,8 @@ struct vfsmount {
struct dentry *mnt_root; /* root of the mounted tree */ struct dentry *mnt_root; /* root of the mounted tree */
struct super_block *mnt_sb; /* pointer to superblock */ struct super_block *mnt_sb; /* pointer to superblock */
int mnt_flags; int mnt_flags;
KABI_RESERVE(1)
} __randomize_layout; } __randomize_layout;
struct file; /* forward dec */ struct file; /* forward dec */
......
...@@ -2,12 +2,16 @@ ...@@ -2,12 +2,16 @@
#ifndef _LINUX_NS_COMMON_H #ifndef _LINUX_NS_COMMON_H
#define _LINUX_NS_COMMON_H #define _LINUX_NS_COMMON_H
#include <linux/kabi.h>
struct proc_ns_operations; struct proc_ns_operations;
struct ns_common { struct ns_common {
atomic_long_t stashed; atomic_long_t stashed;
const struct proc_ns_operations *ops; const struct proc_ns_operations *ops;
unsigned int inum; unsigned int inum;
KABI_RESERVE(1)
}; };
#endif #endif
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#ifndef _LINUX_QUOTA_ #ifndef _LINUX_QUOTA_
#define _LINUX_QUOTA_ #define _LINUX_QUOTA_
#include <linux/kabi.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/rwsem.h> #include <linux/rwsem.h>
...@@ -316,6 +317,9 @@ struct quota_format_ops { ...@@ -316,6 +317,9 @@ struct quota_format_ops {
int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */ int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */
int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped */ int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped */
int (*get_next_id)(struct super_block *sb, struct kqid *qid); /* Get next ID with existing structure in the quota file */ int (*get_next_id)(struct super_block *sb, struct kqid *qid); /* Get next ID with existing structure in the quota file */
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
/* Operations working with dquots */ /* Operations working with dquots */
...@@ -335,6 +339,9 @@ struct dquot_operations { ...@@ -335,6 +339,9 @@ struct dquot_operations {
int (*get_inode_usage) (struct inode *, qsize_t *); int (*get_inode_usage) (struct inode *, qsize_t *);
/* Get next ID with active quota structure */ /* Get next ID with active quota structure */
int (*get_next_id) (struct super_block *sb, struct kqid *qid); int (*get_next_id) (struct super_block *sb, struct kqid *qid);
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct path; struct path;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#ifndef __LINUX_SCALE_BITMAP_H #ifndef __LINUX_SCALE_BITMAP_H
#define __LINUX_SCALE_BITMAP_H #define __LINUX_SCALE_BITMAP_H
#include <linux/kabi.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -65,6 +66,8 @@ struct sbitmap { ...@@ -65,6 +66,8 @@ struct sbitmap {
* @map: Allocated bitmap. * @map: Allocated bitmap.
*/ */
struct sbitmap_word *map; struct sbitmap_word *map;
KABI_RESERVE(1)
}; };
#define SBQ_WAIT_QUEUES 8 #define SBQ_WAIT_QUEUES 8
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _LINUX_SWAP_H #ifndef _LINUX_SWAP_H
#define _LINUX_SWAP_H #define _LINUX_SWAP_H
#include <linux/kabi.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/mmzone.h> #include <linux/mmzone.h>
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#ifndef _SYSFS_H_ #ifndef _SYSFS_H_
#define _SYSFS_H_ #define _SYSFS_H_
#include <linux/kabi.h>
#include <linux/kernfs.h> #include <linux/kernfs.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -175,6 +176,8 @@ struct bin_attribute { ...@@ -175,6 +176,8 @@ struct bin_attribute {
char *, loff_t, size_t); char *, loff_t, size_t);
int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr, int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,
struct vm_area_struct *vma); struct vm_area_struct *vma);
KABI_RESERVE(1)
}; };
/** /**
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _LINUX_USER_NAMESPACE_H #ifndef _LINUX_USER_NAMESPACE_H
#define _LINUX_USER_NAMESPACE_H #define _LINUX_USER_NAMESPACE_H
#include <linux/kabi.h>
#include <linux/kref.h> #include <linux/kref.h>
#include <linux/nsproxy.h> #include <linux/nsproxy.h>
#include <linux/ns_common.h> #include <linux/ns_common.h>
...@@ -110,6 +111,17 @@ struct user_namespace { ...@@ -110,6 +111,17 @@ struct user_namespace {
#endif #endif
struct ucounts *ucounts; struct ucounts *ucounts;
long ucount_max[UCOUNT_COUNTS]; long ucount_max[UCOUNT_COUNTS];
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
KABI_RESERVE(9)
KABI_RESERVE(10)
} __randomize_layout; } __randomize_layout;
struct ucounts { struct ucounts {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/backing-dev-defs.h> #include <linux/backing-dev-defs.h>
#include <linux/blk_types.h> #include <linux/blk_types.h>
#include <linux/blk-cgroup.h> #include <linux/blk-cgroup.h>
#include <linux/kabi.h>
struct bio; struct bio;
...@@ -92,6 +93,9 @@ struct writeback_control { ...@@ -92,6 +93,9 @@ struct writeback_control {
size_t wb_lcand_bytes; /* bytes written by last candidate */ size_t wb_lcand_bytes; /* bytes written by last candidate */
size_t wb_tcand_bytes; /* bytes written by this candidate */ size_t wb_tcand_bytes; /* bytes written by this candidate */
#endif #endif
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
static inline int wbc_to_write_flags(struct writeback_control *wbc) static inline int wbc_to_write_flags(struct writeback_control *wbc)
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#define _LINUX_XATTR_H #define _LINUX_XATTR_H
#include <linux/kabi.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
...@@ -37,6 +38,8 @@ struct xattr_handler { ...@@ -37,6 +38,8 @@ struct xattr_handler {
int (*set)(const struct xattr_handler *, struct dentry *dentry, int (*set)(const struct xattr_handler *, struct dentry *dentry,
struct inode *inode, const char *name, const void *buffer, struct inode *inode, const char *name, const void *buffer,
size_t size, int flags); size_t size, int flags);
KABI_RESERVE(1)
}; };
const char *xattr_full_name(const struct xattr_handler *, const char *); const char *xattr_full_name(const struct xattr_handler *, const char *);
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _SCSI_SCSI_CMND_H #ifndef _SCSI_SCSI_CMND_H
#define _SCSI_SCSI_CMND_H #define _SCSI_SCSI_CMND_H
#include <linux/kabi.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/t10-pi.h> #include <linux/t10-pi.h>
...@@ -142,6 +143,11 @@ struct scsi_cmnd { ...@@ -142,6 +143,11 @@ struct scsi_cmnd {
unsigned char tag; /* SCSI-II queued command tag */ unsigned char tag; /* SCSI-II queued command tag */
unsigned int extra_len; /* length of alignment and padding */ unsigned int extra_len; /* length of alignment and padding */
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/* /*
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _SCSI_SCSI_DEVICE_H #ifndef _SCSI_SCSI_DEVICE_H
#define _SCSI_SCSI_DEVICE_H #define _SCSI_SCSI_DEVICE_H
#include <linux/kabi.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
...@@ -238,6 +239,14 @@ struct scsi_device { ...@@ -238,6 +239,14 @@ struct scsi_device {
struct mutex state_mutex; struct mutex state_mutex;
enum scsi_device_state sdev_state; enum scsi_device_state sdev_state;
struct task_struct *quiesced_by; struct task_struct *quiesced_by;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
unsigned long sdev_data[]; unsigned long sdev_data[];
} __attribute__((aligned(sizeof(unsigned long)))); } __attribute__((aligned(sizeof(unsigned long))));
...@@ -322,6 +331,12 @@ struct scsi_target { ...@@ -322,6 +331,12 @@ struct scsi_target {
char scsi_level; char scsi_level;
enum scsi_target_state state; enum scsi_target_state state;
void *hostdata; /* available to low-level driver */ void *hostdata; /* available to low-level driver */
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
unsigned long starget_data[]; /* for the transport */ unsigned long starget_data[]; /* for the transport */
/* starget_data must be the last element!!!! */ /* starget_data must be the last element!!!! */
} __attribute__((aligned(sizeof(unsigned long)))); } __attribute__((aligned(sizeof(unsigned long))));
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef _SCSI_SCSI_HOST_H #ifndef _SCSI_SCSI_HOST_H
#define _SCSI_SCSI_HOST_H #define _SCSI_SCSI_HOST_H
#include <linux/kabi.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -486,6 +487,11 @@ struct scsi_host_template { ...@@ -486,6 +487,11 @@ struct scsi_host_template {
/* Delay for runtime autosuspend */ /* Delay for runtime autosuspend */
int rpm_autosuspend_delay; int rpm_autosuspend_delay;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
}; };
/* /*
...@@ -692,6 +698,13 @@ struct Scsi_Host { ...@@ -692,6 +698,13 @@ struct Scsi_Host {
*/ */
struct device *dma_dev; struct device *dma_dev;
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
/* /*
* We should ensure that this is aligned, both for better performance * We should ensure that this is aligned, both for better performance
* and also because some compilers (m68k) don't automatically force * and also because some compilers (m68k) don't automatically force
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#ifndef SCSI_TRANSPORT_FC_H #ifndef SCSI_TRANSPORT_FC_H
#define SCSI_TRANSPORT_FC_H #define SCSI_TRANSPORT_FC_H
#include <linux/kabi.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/bsg-lib.h> #include <linux/bsg-lib.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
...@@ -351,6 +352,27 @@ struct fc_rport { /* aka fc_starget_attrs */ ...@@ -351,6 +352,27 @@ struct fc_rport { /* aka fc_starget_attrs */
struct work_struct stgt_delete_work; struct work_struct stgt_delete_work;
struct work_struct rport_delete_work; struct work_struct rport_delete_work;
struct request_queue *rqst_q; /* bsg support */ struct request_queue *rqst_q; /* bsg support */
KABI_RESERVE(1)
KABI_RESERVE(2)
KABI_RESERVE(3)
KABI_RESERVE(4)
KABI_RESERVE(5)
KABI_RESERVE(6)
KABI_RESERVE(7)
KABI_RESERVE(8)
KABI_RESERVE(9)
KABI_RESERVE(10)
KABI_RESERVE(11)
KABI_RESERVE(12)
KABI_RESERVE(13)
KABI_RESERVE(14)
KABI_RESERVE(15)
KABI_RESERVE(16)
KABI_RESERVE(17)
KABI_RESERVE(18)
KABI_RESERVE(19)
KABI_RESERVE(20)
} __attribute__((aligned(sizeof(unsigned long)))); } __attribute__((aligned(sizeof(unsigned long))));
/* bit field values for struct fc_rport "flags" field: */ /* bit field values for struct fc_rport "flags" field: */
...@@ -437,6 +459,9 @@ struct fc_host_statistics { ...@@ -437,6 +459,9 @@ struct fc_host_statistics {
u64 fc_seq_not_found; /* seq is not found for exchange */ u64 fc_seq_not_found; /* seq is not found for exchange */
u64 fc_non_bls_resp; /* a non BLS response frame with u64 fc_non_bls_resp; /* a non BLS response frame with
a sequence responder in new exch */ a sequence responder in new exch */
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#ifndef TARGET_CORE_BASE_H #ifndef TARGET_CORE_BASE_H
#define TARGET_CORE_BASE_H #define TARGET_CORE_BASE_H
#include <linux/kabi.h>
#include <linux/configfs.h> /* struct config_group */ #include <linux/configfs.h> /* struct config_group */
#include <linux/dma-direction.h> /* enum dma_data_direction */ #include <linux/dma-direction.h> /* enum dma_data_direction */
#include <linux/sbitmap.h> #include <linux/sbitmap.h>
...@@ -542,6 +543,9 @@ struct se_cmd { ...@@ -542,6 +543,9 @@ struct se_cmd {
sense_reason_t pi_err; sense_reason_t pi_err;
sector_t bad_sector; sector_t bad_sector;
int cpuid; int cpuid;
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct se_ua { struct se_ua {
...@@ -839,6 +843,9 @@ struct se_device { ...@@ -839,6 +843,9 @@ struct se_device {
/* For se_lun->lun_se_dev RCU read-side critical access */ /* For se_lun->lun_se_dev RCU read-side critical access */
u32 hba_index; u32 hba_index;
struct rcu_head rcu_head; struct rcu_head rcu_head;
KABI_RESERVE(1)
KABI_RESERVE(2)
}; };
struct se_hba { struct se_hba {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册