Re: [RFC][PATCH] linux/uuid.h: hoist uuid_is_null() helper from libnvdimm

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

 



On Tue, 2017-05-02 at 23:19 +0300, Amir Goldstein wrote:
> We need a helper for VFS to check if struct super_block field s_uuid
> was filled by the filesystem, before consumers can use it.
> 
> The libnvdimm code already has a private helper to check if uuid is
> null
> and the helper name is not using a private namespace prefix, which
> prevents us from using the same helper name as a common function.
> 

Hmm...
Have you checked my branch here:
https://bitbucket.org/andy-shev/linux/branch/topic%2Fuuid
?

Probably not.
I have number of patches to make UUID API used kernel wide.

...including helpers for null UUID check:
https://bitbucket.org/andy-shev/linux/commits/79029ebe2c32830f82effc0f0b
62cce2b6eb7fdb?at=topic/uuid

> Hoist the libnvdimm helper as an inline helper to linux/uuid.h.
> 
> Suggested-by: Christoph Hellwig <hch@xxxxxx>
> Cc: Dan Williams <dan.j.williams@xxxxxxxxx>
> Cc: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> Cc: David Howells <dhowells@xxxxxxxxxx>
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---
>  drivers/nvdimm/btt_devs.c | 8 +-------
>  include/linux/uuid.h      | 7 +++++++
>  2 files changed, 8 insertions(+), 7 deletions(-)
> 
> Christoph,
> 
> Following your suggestion to provide a helper for checking if
> filesystem
> had filled sb->s_uuid, here is a patch to add that helper.
> 
> I considered hoisting xfs's uuid_is_nil() helper and uuid_t to uuid.h,
> but
> that would have been more painful, so just moved this simple helper
> instead.
> We can continue debating which implementation is better, but that
> would be
> futile...
> 
> If in the future xfs uuid table code is going to be moved to VFS, we
> should
> probably move variants of the xfs/uuid.c functions to lib/uuid.c if
> those
> variants don't already exist.
> 
> CC'ing the maintainers of clearcache and EVM/IMA to see if this helper
> should be added (as sanity?) to their code before accessing sb-
> >s_uuid.
> 
> I truely hope that EVM/IMA signatures do not expect xfs/ubifs to keep
> exporting null s_uuid, because if they do, then starting to export
> s_uuid
> for xfs/ubifs may require a new config/mkfs/mount option and that
> would
> be a shame.
> 
> Cheers,
> Amir.
> 
> diff --git a/drivers/nvdimm/btt_devs.c b/drivers/nvdimm/btt_devs.c
> index 97dd292..d0fcda2 100644
> --- a/drivers/nvdimm/btt_devs.c
> +++ b/drivers/nvdimm/btt_devs.c
> @@ -17,6 +17,7 @@
>  #include <linux/slab.h>
>  #include <linux/fs.h>
>  #include <linux/mm.h>
> +#include <linux/uuid.h>
>  #include "nd-core.h"
>  #include "btt.h"
>  #include "nd.h"
> @@ -222,13 +223,6 @@ struct device *nd_btt_create(struct nd_region
> *nd_region)
>  	return dev;
>  }
>  
> -static bool uuid_is_null(u8 *uuid)
> -{
> -	static const u8 null_uuid[16];
> -
> -	return (memcmp(uuid, null_uuid, 16) == 0);
> -}
> -
>  /**
>   * nd_btt_arena_is_valid - check if the metadata layout is valid
>   * @nd_btt:	device with BTT geometry and backing device info
> diff --git a/include/linux/uuid.h b/include/linux/uuid.h
> index 4dff73a..d3f8656 100644
> --- a/include/linux/uuid.h
> +++ b/include/linux/uuid.h
> @@ -58,6 +58,13 @@ static inline int uuid_be_cmp(const uuid_be u1,
> const uuid_be u2)
>  	return memcmp(&u1, &u2, sizeof(uuid_be));
>  }
>  
> +static inline bool uuid_is_null(u8 *uuid)
> +{
> +	static const u8 null_uuid[16];
> +
> +	return (memcmp(uuid, null_uuid, 16) == 0);
> +}
> +
>  void generate_random_uuid(unsigned char uuid[16]);
>  
>  extern void uuid_le_gen(uuid_le *u);

-- 
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux