Home Home > GIT Browse > SLE15
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Iliopoulos <ailiopoulos@suse.com>2019-05-17 17:09:55 +0200
committerAnthony Iliopoulos <ailiopoulos@suse.com>2019-05-17 17:09:55 +0200
commit0f5a146814e9d450c506dcd72e7bcfa389f5854c (patch)
treed71cf1caed67d0aaefd29558baa12958da982605
parentf7c1154a6e0953603fba6ee3b42a5ec38700cb87 (diff)
xfs: export various function for the online scrubber
(bsc#1123663).
-rw-r--r--patches.fixes/xfs-export-various-function-for-the-online-scrubber.patch277
-rw-r--r--series.conf1
2 files changed, 278 insertions, 0 deletions
diff --git a/patches.fixes/xfs-export-various-function-for-the-online-scrubber.patch b/patches.fixes/xfs-export-various-function-for-the-online-scrubber.patch
new file mode 100644
index 0000000000..efc78e3892
--- /dev/null
+++ b/patches.fixes/xfs-export-various-function-for-the-online-scrubber.patch
@@ -0,0 +1,277 @@
+From 2678809799e6e37db0800725157f5ebfc03a9df7 Mon Sep 17 00:00:00 2001
+From: "Darrick J. Wong" <darrick.wong@oracle.com>
+Date: Fri, 16 Jun 2017 11:00:07 -0700
+Subject: [PATCH] xfs: export various function for the online scrubber
+Git-commit: 2678809799e6e37db0800725157f5ebfc03a9df7
+Patch-mainline: v4.13-rc1
+References: bsc#1123663
+
+Export various internal functions so that the online scrubber can use
+them to check the state of metadata.
+
+Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
+Reviewed-by: Brian Foster <bfoster@redhat.com>
+Acked-by: Anthony Iliopoulos <ailiopoulos@suse.com>
+
+---
+ fs/xfs/libxfs/xfs_alloc.c | 2 +-
+ fs/xfs/libxfs/xfs_alloc.h | 2 ++
+ fs/xfs/libxfs/xfs_btree.c | 12 ++++++------
+ fs/xfs/libxfs/xfs_btree.h | 13 +++++++++++++
+ fs/xfs/libxfs/xfs_dir2_leaf.c | 2 +-
+ fs/xfs/libxfs/xfs_dir2_priv.h | 2 ++
+ fs/xfs/libxfs/xfs_inode_buf.c | 2 +-
+ fs/xfs/libxfs/xfs_inode_buf.h | 3 +++
+ fs/xfs/libxfs/xfs_rmap.c | 3 ++-
+ fs/xfs/libxfs/xfs_rmap.h | 3 +++
+ fs/xfs/libxfs/xfs_rtbitmap.c | 2 +-
+ fs/xfs/xfs_itable.c | 2 +-
+ fs/xfs/xfs_itable.h | 2 ++
+ fs/xfs/xfs_rtalloc.h | 3 +++
+ 14 files changed, 41 insertions(+), 12 deletions(-)
+
+diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
+index 7486401ccbd3..fefa8daa1c36 100644
+--- a/fs/xfs/libxfs/xfs_alloc.c
++++ b/fs/xfs/libxfs/xfs_alloc.c
+@@ -606,7 +606,7 @@ const struct xfs_buf_ops xfs_agfl_buf_ops = {
+ /*
+ * Read in the allocation group free block array.
+ */
+-STATIC int /* error */
++int /* error */
+ xfs_alloc_read_agfl(
+ xfs_mount_t *mp, /* mount point structure */
+ xfs_trans_t *tp, /* transaction pointer */
+diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h
+index 77d9c27330ab..ef26edc2e938 100644
+--- a/fs/xfs/libxfs/xfs_alloc.h
++++ b/fs/xfs/libxfs/xfs_alloc.h
+@@ -213,6 +213,8 @@ xfs_alloc_get_rec(
+
+ int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp,
+ xfs_agnumber_t agno, int flags, struct xfs_buf **bpp);
++int xfs_alloc_read_agfl(struct xfs_mount *mp, struct xfs_trans *tp,
++ xfs_agnumber_t agno, struct xfs_buf **bpp);
+ int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, int flags);
+ int xfs_free_extent_fix_freelist(struct xfs_trans *tp, xfs_agnumber_t agno,
+ struct xfs_buf **agbp);
+diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c
+index 2aac3f499d97..2f8075aa8725 100644
+--- a/fs/xfs/libxfs/xfs_btree.c
++++ b/fs/xfs/libxfs/xfs_btree.c
+@@ -568,7 +568,7 @@ xfs_btree_ptr_offset(
+ /*
+ * Return a pointer to the n-th record in the btree block.
+ */
+-STATIC union xfs_btree_rec *
++union xfs_btree_rec *
+ xfs_btree_rec_addr(
+ struct xfs_btree_cur *cur,
+ int n,
+@@ -581,7 +581,7 @@ xfs_btree_rec_addr(
+ /*
+ * Return a pointer to the n-th key in the btree block.
+ */
+-STATIC union xfs_btree_key *
++union xfs_btree_key *
+ xfs_btree_key_addr(
+ struct xfs_btree_cur *cur,
+ int n,
+@@ -594,7 +594,7 @@ xfs_btree_key_addr(
+ /*
+ * Return a pointer to the n-th high key in the btree block.
+ */
+-STATIC union xfs_btree_key *
++union xfs_btree_key *
+ xfs_btree_high_key_addr(
+ struct xfs_btree_cur *cur,
+ int n,
+@@ -607,7 +607,7 @@ xfs_btree_high_key_addr(
+ /*
+ * Return a pointer to the n-th block pointer in the btree block.
+ */
+-STATIC union xfs_btree_ptr *
++union xfs_btree_ptr *
+ xfs_btree_ptr_addr(
+ struct xfs_btree_cur *cur,
+ int n,
+@@ -641,7 +641,7 @@ xfs_btree_get_iroot(
+ * Retrieve the block pointer from the cursor at the given level.
+ * This may be an inode btree root or from a buffer.
+ */
+-STATIC struct xfs_btree_block * /* generic btree block pointer */
++struct xfs_btree_block * /* generic btree block pointer */
+ xfs_btree_get_block(
+ struct xfs_btree_cur *cur, /* btree cursor */
+ int level, /* level in btree */
+@@ -1756,7 +1756,7 @@ xfs_btree_decrement(
+ return error;
+ }
+
+-STATIC int
++int
+ xfs_btree_lookup_get_block(
+ struct xfs_btree_cur *cur, /* btree cursor */
+ int level, /* level in the btree */
+diff --git a/fs/xfs/libxfs/xfs_btree.h b/fs/xfs/libxfs/xfs_btree.h
+index 177a364ce5cf..9c95e965cfe5 100644
+--- a/fs/xfs/libxfs/xfs_btree.h
++++ b/fs/xfs/libxfs/xfs_btree.h
+@@ -504,4 +504,17 @@ int xfs_btree_visit_blocks(struct xfs_btree_cur *cur,
+
+ int xfs_btree_count_blocks(struct xfs_btree_cur *cur, xfs_extlen_t *blocks);
+
++union xfs_btree_rec *xfs_btree_rec_addr(struct xfs_btree_cur *cur, int n,
++ struct xfs_btree_block *block);
++union xfs_btree_key *xfs_btree_key_addr(struct xfs_btree_cur *cur, int n,
++ struct xfs_btree_block *block);
++union xfs_btree_key *xfs_btree_high_key_addr(struct xfs_btree_cur *cur, int n,
++ struct xfs_btree_block *block);
++union xfs_btree_ptr *xfs_btree_ptr_addr(struct xfs_btree_cur *cur, int n,
++ struct xfs_btree_block *block);
++int xfs_btree_lookup_get_block(struct xfs_btree_cur *cur, int level,
++ union xfs_btree_ptr *pp, struct xfs_btree_block **blkp);
++struct xfs_btree_block *xfs_btree_get_block(struct xfs_btree_cur *cur,
++ int level, struct xfs_buf **bpp);
++
+ #endif /* __XFS_BTREE_H__ */
+diff --git a/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c
+index 68bf3e860a90..7002024a5d0d 100644
+--- a/fs/xfs/libxfs/xfs_dir2_leaf.c
++++ b/fs/xfs/libxfs/xfs_dir2_leaf.c
+@@ -256,7 +256,7 @@ const struct xfs_buf_ops xfs_dir3_leafn_buf_ops = {
+ .verify_write = xfs_dir3_leafn_write_verify,
+ };
+
+-static int
++int
+ xfs_dir3_leaf_read(
+ struct xfs_trans *tp,
+ struct xfs_inode *dp,
+diff --git a/fs/xfs/libxfs/xfs_dir2_priv.h b/fs/xfs/libxfs/xfs_dir2_priv.h
+index 011df4da6cc2..576f2d267fa7 100644
+--- a/fs/xfs/libxfs/xfs_dir2_priv.h
++++ b/fs/xfs/libxfs/xfs_dir2_priv.h
+@@ -58,6 +58,8 @@ extern int xfs_dir3_data_init(struct xfs_da_args *args, xfs_dir2_db_t blkno,
+ struct xfs_buf **bpp);
+
+ /* xfs_dir2_leaf.c */
++extern int xfs_dir3_leaf_read(struct xfs_trans *tp, struct xfs_inode *dp,
++ xfs_dablk_t fbno, xfs_daddr_t mappedbno, struct xfs_buf **bpp);
+ extern int xfs_dir3_leafn_read(struct xfs_trans *tp, struct xfs_inode *dp,
+ xfs_dablk_t fbno, xfs_daddr_t mappedbno, struct xfs_buf **bpp);
+ extern int xfs_dir2_block_to_leaf(struct xfs_da_args *args,
+diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c
+index d887af940f09..0c970cf7ab63 100644
+--- a/fs/xfs/libxfs/xfs_inode_buf.c
++++ b/fs/xfs/libxfs/xfs_inode_buf.c
+@@ -381,7 +381,7 @@ xfs_log_dinode_to_disk(
+ }
+ }
+
+-static bool
++bool
+ xfs_dinode_verify(
+ struct xfs_mount *mp,
+ xfs_ino_t ino,
+diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h
+index 0827d7def1ce..a9c97a356c30 100644
+--- a/fs/xfs/libxfs/xfs_inode_buf.h
++++ b/fs/xfs/libxfs/xfs_inode_buf.h
+@@ -82,4 +82,7 @@ void xfs_inobp_check(struct xfs_mount *, struct xfs_buf *);
+ #define xfs_inobp_check(mp, bp)
+ #endif /* DEBUG */
+
++bool xfs_dinode_verify(struct xfs_mount *mp, xfs_ino_t ino,
++ struct xfs_dinode *dip);
++
+ #endif /* __XFS_INODE_BUF_H__ */
+diff --git a/fs/xfs/libxfs/xfs_rmap.c b/fs/xfs/libxfs/xfs_rmap.c
+index 1bcb41fe0156..eda275beebe0 100644
+--- a/fs/xfs/libxfs/xfs_rmap.c
++++ b/fs/xfs/libxfs/xfs_rmap.c
+@@ -179,7 +179,8 @@ xfs_rmap_delete(
+ return error;
+ }
+
+-static int
++/* Convert an internal btree record to an rmap record. */
++int
+ xfs_rmap_btrec_to_irec(
+ union xfs_btree_rec *rec,
+ struct xfs_rmap_irec *irec)
+diff --git a/fs/xfs/libxfs/xfs_rmap.h b/fs/xfs/libxfs/xfs_rmap.h
+index 265116d044f4..466ede637080 100644
+--- a/fs/xfs/libxfs/xfs_rmap.h
++++ b/fs/xfs/libxfs/xfs_rmap.h
+@@ -216,5 +216,8 @@ int xfs_rmap_lookup_le_range(struct xfs_btree_cur *cur, xfs_agblock_t bno,
+ struct xfs_rmap_irec *irec, int *stat);
+ int xfs_rmap_compare(const struct xfs_rmap_irec *a,
+ const struct xfs_rmap_irec *b);
++union xfs_btree_rec;
++int xfs_rmap_btrec_to_irec(union xfs_btree_rec *rec,
++ struct xfs_rmap_irec *irec);
+
+ #endif /* __XFS_RMAP_H__ */
+diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c
+index 26bba7f90fdf..5d4e43ef4eea 100644
+--- a/fs/xfs/libxfs/xfs_rtbitmap.c
++++ b/fs/xfs/libxfs/xfs_rtbitmap.c
+@@ -70,7 +70,7 @@ const struct xfs_buf_ops xfs_rtbuf_ops = {
+ * Get a buffer for the bitmap or summary file block specified.
+ * The buffer is returned read and locked.
+ */
+-static int
++int
+ xfs_rtbuf_get(
+ xfs_mount_t *mp, /* file system mount structure */
+ xfs_trans_t *tp, /* transaction pointer */
+diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
+index 26d67ce3c18d..c393a2f6d8c3 100644
+--- a/fs/xfs/xfs_itable.c
++++ b/fs/xfs/xfs_itable.c
+@@ -31,7 +31,7 @@
+ #include "xfs_trace.h"
+ #include "xfs_icache.h"
+
+-STATIC int
++int
+ xfs_internal_inum(
+ xfs_mount_t *mp,
+ xfs_ino_t ino)
+diff --git a/fs/xfs/xfs_itable.h b/fs/xfs/xfs_itable.h
+index 6ea8b3912fa4..17e86e0541af 100644
+--- a/fs/xfs/xfs_itable.h
++++ b/fs/xfs/xfs_itable.h
+@@ -96,4 +96,6 @@ xfs_inumbers(
+ void __user *buffer, /* buffer with inode info */
+ inumbers_fmt_pf formatter);
+
++int xfs_internal_inum(struct xfs_mount *mp, xfs_ino_t ino);
++
+ #endif /* __XFS_ITABLE_H__ */
+diff --git a/fs/xfs/xfs_rtalloc.h b/fs/xfs/xfs_rtalloc.h
+index f13133e6f19f..79defa722bf1 100644
+--- a/fs/xfs/xfs_rtalloc.h
++++ b/fs/xfs/xfs_rtalloc.h
+@@ -107,6 +107,8 @@ xfs_growfs_rt(
+ /*
+ * From xfs_rtbitmap.c
+ */
++int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp,
++ xfs_rtblock_t block, int issum, struct xfs_buf **bpp);
+ int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp,
+ xfs_rtblock_t start, xfs_extlen_t len, int val,
+ xfs_rtblock_t *new, int *stat);
+@@ -143,6 +145,7 @@ int xfs_rtalloc_query_all(struct xfs_trans *tp,
+ # define xfs_growfs_rt(mp,in) (ENOSYS)
+ # define xfs_rtalloc_query_range(t,l,h,f,p) (ENOSYS)
+ # define xfs_rtalloc_query_all(t,f,p) (ENOSYS)
++# define xfs_rtbuf_get(m,t,b,i,p) (ENOSYS)
+ static inline int /* error */
+ xfs_rtmount_init(
+ xfs_mount_t *mp) /* file system mount structure */
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index e55fa6b14d..ce2a74620d 100644
--- a/series.conf
+++ b/series.conf
@@ -3561,6 +3561,7 @@
patches.fixes/xfs-release-bli-from-transaction-properly-on-fs-shut.patch
patches.fixes/xfs-remove-bli-from-AIL-before-release-on-transactio.patch
patches.fixes/xfs-remove-double-underscore-integer-types.patch
+ patches.fixes/xfs-export-various-function-for-the-online-scrubber.patch
patches.fixes/xfs-check-if-an-inode-is-cached-and-allocated.patch
patches.fixes/xfs-reflink-find-shared-should-take-a-transaction.patch
patches.fixes/xfs-rewrite-xfs_dq_get_next_id-using-xfs_iext_lookup.patch