Thread (11 messages) 11 messages, 4 authors, 2021-11-07
STALE1713d

[PATCH V3 RFC] xfsprogs: remove stubbed-out kernel functions out from xfs_shared.h

From: Eric Sandeen <hidden>
Date: 2021-11-04 17:15:13
Subsystem: the rest · Maintainer: Linus Torvalds

Remove these kernel stubs by #ifdeffing code instead.

Signed-off-by: Eric Sandeen <redacted>
---

Dave preferred #ifdefs over stubs, and this is what I came up with.

Honestly, I think this is worse, and will lead to more libxfs-sync pain
unless we're willing to scatter #ifdefs around the kernel code as well,
but I figured I'd put this out there for discussion.
diff --git a/libxfs/xfs_ag.c b/libxfs/xfs_ag.c
index 9eda6eba..c01986f7 100644
--- a/libxfs/xfs_ag.c
+++ b/libxfs/xfs_ag.c
@@ -170,7 +170,9 @@ __xfs_free_perag(
  {
  	struct xfs_perag *pag = container_of(head, struct xfs_perag, rcu_head);
  
+#ifdef __KERNEL__
  	ASSERT(!delayed_work_pending(&pag->pag_blockgc_work));
+#endif	/* __KERNEL__ */
  	ASSERT(atomic_read(&pag->pag_ref) == 0);
  	kmem_free(pag);
  }
@@ -192,9 +194,11 @@ xfs_free_perag(
  		ASSERT(pag);
  		ASSERT(atomic_read(&pag->pag_ref) == 0);
  
+#ifdef __KERNEL__
  		cancel_delayed_work_sync(&pag->pag_blockgc_work);
  		xfs_iunlink_destroy(pag);
  		xfs_buf_hash_destroy(pag);
+#endif	/* __KERNEL__ */
  
  		call_rcu(&pag->rcu_head, __xfs_free_perag);
  	}
@@ -246,6 +250,7 @@ xfs_initialize_perag(
  		spin_unlock(&mp->m_perag_lock);
  		radix_tree_preload_end();
  
+#ifdef __KERNEL__
  		/* Place kernel structure only init below this point. */
  		spin_lock_init(&pag->pag_ici_lock);
  		spin_lock_init(&pag->pagb_lock);
@@ -267,6 +272,7 @@ xfs_initialize_perag(
  		/* first new pag is fully initialized */
  		if (first_initialised == NULLAGNUMBER)
  			first_initialised = index;
+#endif	/* __KERNEL__ */
  	}
  
  	index = xfs_set_inode_alloc(mp, agcount);
@@ -277,10 +283,12 @@ xfs_initialize_perag(
  	mp->m_ag_prealloc_blocks = xfs_prealloc_blocks(mp);
  	return 0;
  
+#ifdef __KERNEL__
  out_hash_destroy:
  	xfs_buf_hash_destroy(pag);
  out_remove_pag:
  	radix_tree_delete(&mp->m_perag_tree, index);
+#endif	/* __KERNEL__ */
  out_free_pag:
  	kmem_free(pag);
  out_unwind_new_pags:
diff --git a/libxfs/xfs_ag.h b/libxfs/xfs_ag.h
index 4c6f9045..dda1303e 100644
--- a/libxfs/xfs_ag.h
+++ b/libxfs/xfs_ag.h
@@ -64,6 +64,9 @@ struct xfs_perag {
  	/* Blocks reserved for the reverse mapping btree. */
  	struct xfs_ag_resv	pag_rmapbt_resv;
  
+	/* for rcu-safe freeing */
+	struct rcu_head	rcu_head;
+
  	/* -- kernel only structures below this line -- */
  
  	/*
@@ -75,6 +78,7 @@ struct xfs_perag {
  	spinlock_t	pag_state_lock;
  
  	spinlock_t	pagb_lock;	/* lock for pagb_tree */
+#ifdef __KERNEL__
  	struct rb_root	pagb_tree;	/* ordered tree of busy extents */
  	unsigned int	pagb_gen;	/* generation count for pagb_tree */
  	wait_queue_head_t pagb_wait;	/* woken when pagb_gen changes */
@@ -90,9 +94,6 @@ struct xfs_perag {
  	spinlock_t	pag_buf_lock;	/* lock for pag_buf_hash */
  	struct rhashtable pag_buf_hash;
  
-	/* for rcu-safe freeing */
-	struct rcu_head	rcu_head;
-
  	/* background prealloc block trimming */
  	struct delayed_work	pag_blockgc_work;
  
@@ -102,6 +103,7 @@ struct xfs_perag {
  	 * or have some other means to control concurrency.
  	 */
  	struct rhashtable	pagi_unlinked_hash;
+#endif	/* __KERNEL__ */
  };
  
  int xfs_initialize_perag(struct xfs_mount *mp, xfs_agnumber_t agcount,
diff --git a/libxfs/xfs_shared.h b/libxfs/xfs_shared.h
index bafee48c..25c4cab5 100644
--- a/libxfs/xfs_shared.h
+++ b/libxfs/xfs_shared.h
@@ -180,24 +180,4 @@ struct xfs_ino_geometry {
  
  };
  
-/* Faked up kernel bits */
-struct rb_root {
-};
-
-#define RB_ROOT 		(struct rb_root) { }
-
-typedef struct wait_queue_head {
-} wait_queue_head_t;
-
-#define init_waitqueue_head(wqh)	do { } while(0)
-
-struct rhashtable {
-};
-
-struct delayed_work {
-};
-
-#define INIT_DELAYED_WORK(work, func)	do { } while(0)
-#define cancel_delayed_work_sync(work)	do { } while(0)
-
  #endif /* __XFS_SHARED_H__ */
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help