fscrypt_set_bio_crypt_ctx_bh is only used by submit_bh_wbc now.  Move it
there and merge bh_get_inode_and_lblk_num into it.

Note that this does not add ifdefs for fscrypt as the compiler will
optimize away the dead code if it is not built in.

Signed-off-by: Christoph Hellwig <[email protected]>
---
 fs/buffer.c              | 20 +++++++++++++++++-
 fs/crypto/inline_crypt.c | 45 ----------------------------------------
 include/linux/fscrypt.h  |  9 --------
 3 files changed, 19 insertions(+), 55 deletions(-)

diff --git a/fs/buffer.c b/fs/buffer.c
index 22b43642ba57..e1e95463e06b 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2774,6 +2774,24 @@ static void end_bio_bh_io_sync(struct bio *bio)
        bio_put(bio);
 }
 
+static void buffer_set_crypto_ctx(struct bio *bio, const struct buffer_head 
*bh,
+                                 gfp_t gfp_mask)
+{
+       const struct address_space *mapping = folio_mapping(bh->b_folio);
+       const struct inode *inode;
+       u64 lblk;
+
+       /*
+        * The ext4 journal (jbd2) can submit a buffer_head it directly created
+        * for a non-pagecache page.  fscrypt doesn't care about these.
+        */
+       if (!mapping)
+               return;
+       inode = mapping->host;
+       lblk = (folio_pos(bh->b_folio) + bh_offset(bh)) >> inode->i_blkbits;
+       fscrypt_set_bio_crypt_ctx(bio, inode, lblk, gfp_mask);
+}
+
 static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh,
                          enum rw_hint write_hint,
                          struct writeback_control *wbc)
@@ -2800,7 +2818,7 @@ static void submit_bh_wbc(blk_opf_t opf, struct 
buffer_head *bh,
 
        bio = bio_alloc(bh->b_bdev, 1, opf, GFP_NOIO);
 
-       fscrypt_set_bio_crypt_ctx_bh(bio, bh, GFP_NOIO);
+       buffer_set_crypto_ctx(bio, bh, GFP_NOIO);
 
        bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
        bio->bi_write_hint = write_hint;
diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c
index 0da53956a9b1..702d13d138aa 100644
--- a/fs/crypto/inline_crypt.c
+++ b/fs/crypto/inline_crypt.c
@@ -314,51 +314,6 @@ void fscrypt_set_bio_crypt_ctx(struct bio *bio, const 
struct inode *inode,
 }
 EXPORT_SYMBOL_GPL(fscrypt_set_bio_crypt_ctx);
 
-/* Extract the inode and logical block number from a buffer_head. */
-static bool bh_get_inode_and_lblk_num(const struct buffer_head *bh,
-                                     const struct inode **inode_ret,
-                                     u64 *lblk_num_ret)
-{
-       struct folio *folio = bh->b_folio;
-       const struct address_space *mapping;
-       const struct inode *inode;
-
-       /*
-        * The ext4 journal (jbd2) can submit a buffer_head it directly created
-        * for a non-pagecache page.  fscrypt doesn't care about these.
-        */
-       mapping = folio_mapping(folio);
-       if (!mapping)
-               return false;
-       inode = mapping->host;
-
-       *inode_ret = inode;
-       *lblk_num_ret = (folio_pos(folio) + bh_offset(bh)) >> inode->i_blkbits;
-       return true;
-}
-
-/**
- * fscrypt_set_bio_crypt_ctx_bh() - prepare a file contents bio for inline
- *                                 crypto
- * @bio: a bio which will eventually be submitted to the file
- * @first_bh: the first buffer_head for which I/O will be submitted
- * @gfp_mask: memory allocation flags
- *
- * Same as fscrypt_set_bio_crypt_ctx(), except this takes a buffer_head instead
- * of an inode and block number directly.
- */
-void fscrypt_set_bio_crypt_ctx_bh(struct bio *bio,
-                                 const struct buffer_head *first_bh,
-                                 gfp_t gfp_mask)
-{
-       const struct inode *inode;
-       u64 first_lblk;
-
-       if (bh_get_inode_and_lblk_num(first_bh, &inode, &first_lblk))
-               fscrypt_set_bio_crypt_ctx(bio, inode, first_lblk, gfp_mask);
-}
-EXPORT_SYMBOL_GPL(fscrypt_set_bio_crypt_ctx_bh);
-
 /**
  * fscrypt_mergeable_bio() - test whether data can be added to a bio
  * @bio: the bio being built up
diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h
index 6af3c1907adc..26561b7994e0 100644
--- a/include/linux/fscrypt.h
+++ b/include/linux/fscrypt.h
@@ -869,10 +869,6 @@ void fscrypt_set_bio_crypt_ctx(struct bio *bio,
                               const struct inode *inode, u64 first_lblk,
                               gfp_t gfp_mask);
 
-void fscrypt_set_bio_crypt_ctx_bh(struct bio *bio,
-                                 const struct buffer_head *first_bh,
-                                 gfp_t gfp_mask);
-
 bool fscrypt_mergeable_bio(struct bio *bio, const struct inode *inode,
                           u64 next_lblk);
 
@@ -891,11 +887,6 @@ static inline void fscrypt_set_bio_crypt_ctx(struct bio 
*bio,
                                             const struct inode *inode,
                                             u64 first_lblk, gfp_t gfp_mask) { }
 
-static inline void fscrypt_set_bio_crypt_ctx_bh(
-                                        struct bio *bio,
-                                        const struct buffer_head *first_bh,
-                                        gfp_t gfp_mask) { }
-
 static inline bool fscrypt_mergeable_bio(struct bio *bio,
                                         const struct inode *inode,
                                         u64 next_lblk)
-- 
2.47.3



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to