[PATCH] md/raid5: silence sparse warnings wrt struct raid5_percpu

Davidlohr Bueso posted 1 patch 4 years, 4 months ago
drivers/md/raid5.h | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
[PATCH] md/raid5: silence sparse warnings wrt struct raid5_percpu
Posted by Davidlohr Bueso 4 years, 4 months ago
Move out the nested declaration of the percpu bits of struct r5conf and
silence sparse complaining about address spaces:

drivers/md/raid5.c:7070:9: sparse: sparse: cast removes address space '__percpu' of expression
drivers/md/raid5.c:7070:9: warning: incorrect type in argument 1 (different address spaces)
drivers/md/raid5.c:7070:9:    expected struct lockdep_map *lock
drivers/md/raid5.c:7070:9:    got struct lockdep_map [noderef] __percpu *
drivers/md/raid5.c:7070:9: warning: incorrect type in argument 1 (different address spaces)
drivers/md/raid5.c:7070:9:    expected struct local_lock_t [usertype] *l
drivers/md/raid5.c:7070:9:    got struct local_lock_t [noderef] __percpu *

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
---
  drivers/md/raid5.h | 22 ++++++++++++----------
  1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 9e8486a9e445..125b925e2b0c 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -560,6 +560,17 @@ struct r5pending_data {
	struct bio_list bios;
  };

+/* per cpu variables */
+struct raid5_percpu {
+	struct page	*spare_page; /* Used when checking P/Q in raid6 */
+	void		*scribble;  /* space for constructing buffer
+				     * lists and performing address
+				     * conversions
+				     */
+	int             scribble_obj_size;
+	local_lock_t    lock;
+};
+
  struct r5conf {
	struct hlist_head	*stripe_hashtbl;
	/* only protect corresponding hash list and inactive_list */
@@ -634,16 +645,7 @@ struct r5conf {
					    * Cleared when a sync completes.
					    */
	int			recovery_disabled;
-	/* per cpu variables */
-	struct raid5_percpu {
-		struct page	*spare_page; /* Used when checking P/Q in raid6 */
-		void		*scribble;  /* space for constructing buffer
-					     * lists and performing address
-					     * conversions
-					     */
-		int             scribble_obj_size;
-		local_lock_t    lock;
-	} __percpu *percpu;
+	struct raid5_percpu __percpu *percpu;
	int scribble_disks;
	int scribble_sectors;
	struct hlist_node node;
--
2.35.1