Re: [PATCH 3/6] fiemap: add FIEMAP_EXTENT_DATA_COMPRESSED flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Jul 30, 2014, at 11:18 AM, David Sterba <dsterba@xxxxxxx> wrote:
> Add extent flag to indicate that the data are compressed. The users
> set the fe_phys_length member, and PHYS_LENGTH and ENCODED flags.
> 
> Signed-off-by: David Sterba <dsterba@xxxxxxx>
> ---
> fs/ioctl.c                  | 6 +++++-
> include/uapi/linux/fiemap.h | 4 ++++
> 2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/ioctl.c b/fs/ioctl.c
> index 127551c70b0a..902b1d5a6316 100644
> --- a/fs/ioctl.c
> +++ b/fs/ioctl.c
> @@ -81,7 +81,8 @@ static int ioctl_fibmap(struct file *filp, int __user *p)
>  * extent that will fit in user array.
>  */
> #define SET_UNKNOWN_FLAGS	(FIEMAP_EXTENT_DELALLOC)
> -#define SET_NO_UNMOUNTED_IO_FLAGS	(FIEMAP_EXTENT_DATA_ENCRYPTED)
> +#define SET_NO_UNMOUNTED_IO_FLAGS	(FIEMAP_EXTENT_DATA_ENCRYPTED | \
> +					 FIEMAP_EXTENT_DATA_COMPRESSED)
> #define SET_NOT_ALIGNED_FLAGS	(FIEMAP_EXTENT_DATA_TAIL|FIEMAP_EXTENT_DATA_INLINE)
> int fiemap_fill_next_extent(struct fiemap_extent_info *fieinfo, u64 logical,
> 			    u64 phys, u64 len, u64 phys_len, u32 flags)
> @@ -112,6 +113,9 @@ int fiemap_fill_next_extent(struct fiemap_extent_info *fieinfo, u64 logical,
> 	extent.fe_flags = flags;
> 	extent.fe_phys_length = phys_len;
> 
> +	WARN_ON_ONCE((flags & FIEMAP_EXTENT_DATA_COMPRESSED)
> +		&& !(flags & FIEMAP_EXTENT_ENCODED));
> +
> 	dest += fieinfo->fi_extents_mapped;
> 	if (copy_to_user(dest, &extent, sizeof(extent)))
> 		return -EFAULT;
> diff --git a/include/uapi/linux/fiemap.h b/include/uapi/linux/fiemap.h
> index ed52d3f7821d..64fb1b3a7e1f 100644
> --- a/include/uapi/linux/fiemap.h
> +++ b/include/uapi/linux/fiemap.h
> @@ -54,6 +54,10 @@ struct fiemap {
> 						    * while fs is unmounted */
> #define FIEMAP_EXTENT_PHYS_LENGTH	0x00000010 /* Physical length of extent
> 						    * not the same as logical */
> +#define FIEMAP_EXTENT_DATA_COMPRESSED	0x00000040 /* Data is compressed by fs.
> +						    * Sets EXTENT_ENCODED and
> +						    * the compressed size is
> +						    * stored in fe_phys_length */

This should also set PHYS_LENGTH.

> #define FIEMAP_EXTENT_DATA_ENCRYPTED	0x00000080 /* Data is encrypted by fs.
> 						    * Sets EXTENT_ENCODED */
> #define FIEMAP_EXTENT_NOT_ALIGNED	0x00000100 /* Extent offsets may not be
> -- 
> 1.8.4.5
> 


Cheers, Andreas





Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux