[RFC,1/8] ext4: use EXT4_INODE_ENCRYPT flag to detect encrypted bio

Message ID 20180112141129.27507-2-chandan@linux.vnet.ibm.com
State New
Headers show
Series
  • [RFC,1/8] ext4: use EXT4_INODE_ENCRYPT flag to detect encrypted bio
Related show

Commit Message

Chandan Rajendra Jan. 12, 2018, 2:11 p.m.
For supporting encryption in blocksize < pagesize scenario,
bio->bi_private field will be needed to hold the address of the
encryption context structure. Hence this commit uses
ext4_encrypted_inode() to detect the encryption status of a file.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
---
 fs/ext4/readpage.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Randy Dunlap Jan. 12, 2018, 7:04 p.m. | #1
On 01/12/18 06:11, Chandan Rajendra wrote:
> For supporting encryption in blocksize < pagesize scenario,
> bio->bi_private field will be needed to hold the address of the
> encryption context structure. Hence this commit uses
> ext4_encrypted_inode() to detect the encryption status of a file.
> 
> Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
> ---
>  fs/ext4/readpage.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
> index 9ffa6fa..0be590b 100644
> --- a/fs/ext4/readpage.c
> +++ b/fs/ext4/readpage.c
> @@ -50,7 +50,13 @@
>  static inline bool ext4_bio_encrypted(struct bio *bio)
>  {
>  #ifdef CONFIG_EXT4_FS_ENCRYPTION
> -	return unlikely(bio->bi_private != NULL);
> +        if (bio->bi_vcnt) {
> +                struct inode *inode = bio->bi_io_vec->bv_page->mapping->host;
> +                if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode))
> +                        return true;

There are lots of spaces instead of tabs above...

> +	}
> +
> +	return false;
>  #else
>  	return false;
>  #endif
>
Chandan Rajendra Jan. 13, 2018, 5:22 a.m. | #2
On Saturday, January 13, 2018 12:34:04 AM IST Randy Dunlap wrote:
> On 01/12/18 06:11, Chandan Rajendra wrote:
> > For supporting encryption in blocksize < pagesize scenario,
> > bio->bi_private field will be needed to hold the address of the
> > encryption context structure. Hence this commit uses
> > ext4_encrypted_inode() to detect the encryption status of a file.
> > 
> > Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
> > ---
> >  fs/ext4/readpage.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
> > index 9ffa6fa..0be590b 100644
> > --- a/fs/ext4/readpage.c
> > +++ b/fs/ext4/readpage.c
> > @@ -50,7 +50,13 @@
> >  static inline bool ext4_bio_encrypted(struct bio *bio)
> >  {
> >  #ifdef CONFIG_EXT4_FS_ENCRYPTION
> > -	return unlikely(bio->bi_private != NULL);
> > +        if (bio->bi_vcnt) {
> > +                struct inode *inode = bio->bi_io_vec->bv_page->mapping->host;
> > +                if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode))
> > +                        return true;
> 
> There are lots of spaces instead of tabs above...
> 

I will fix them up in the next version of the patchset. 
Thanks for pointing it out.

Patch

diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c
index 9ffa6fa..0be590b 100644
--- a/fs/ext4/readpage.c
+++ b/fs/ext4/readpage.c
@@ -50,7 +50,13 @@ 
 static inline bool ext4_bio_encrypted(struct bio *bio)
 {
 #ifdef CONFIG_EXT4_FS_ENCRYPTION
-	return unlikely(bio->bi_private != NULL);
+        if (bio->bi_vcnt) {
+                struct inode *inode = bio->bi_io_vec->bv_page->mapping->host;
+                if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode))
+                        return true;
+	}
+
+	return false;
 #else
 	return false;
 #endif