lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 24 Jan 2019 19:18:19 +0100
From:   Matias Bjørling <mb@...htnvm.io>
To:     Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
        Javier González <javier@...igon.com>,
        Jens Axboe <axboe@...nel.dk>, linux-block@...r.kernel.org,
        Christoph Hellwig <hch@....de>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] lightnvm: pblk: Switch to use new generic UUID API

On 1/24/19 3:31 PM, Andy Shevchenko wrote:
> There are new types and helpers that are supposed to be used in new code.
> 
> As a preparation to get rid of legacy types and API functions do
> the conversion here.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
> ---
> 
> v2:
> - convert instance_uuid to guid_t and get rid of pblk_setup_uuid()
> - fix subject line to show subsystem
> 
>   drivers/lightnvm/pblk-core.c     |  4 ++--
>   drivers/lightnvm/pblk-init.c     |  2 +-
>   drivers/lightnvm/pblk-recovery.c |  8 +++++---
>   drivers/lightnvm/pblk.h          | 10 +---------
>   4 files changed, 9 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
> index 1ff165351180..189339965957 100644
> --- a/drivers/lightnvm/pblk-core.c
> +++ b/drivers/lightnvm/pblk-core.c
> @@ -1065,7 +1065,7 @@ static int pblk_line_init_metadata(struct pblk *pblk, struct pblk_line *line,
>   	bitmap_set(line->lun_bitmap, 0, lm->lun_bitmap_len);
>   
>   	smeta_buf->header.identifier = cpu_to_le32(PBLK_MAGIC);
> -	memcpy(smeta_buf->header.uuid, pblk->instance_uuid, 16);
> +	guid_copy((guid_t *)&smeta_buf->header.uuid, &pblk->instance_uuid);
>   	smeta_buf->header.id = cpu_to_le32(line->id);
>   	smeta_buf->header.type = cpu_to_le16(line->type);
>   	smeta_buf->header.version_major = SMETA_VERSION_MAJOR;
> @@ -1874,7 +1874,7 @@ void pblk_line_close_meta(struct pblk *pblk, struct pblk_line *line)
>   
>   	if (le32_to_cpu(emeta_buf->header.identifier) != PBLK_MAGIC) {
>   		emeta_buf->header.identifier = cpu_to_le32(PBLK_MAGIC);
> -		memcpy(emeta_buf->header.uuid, pblk->instance_uuid, 16);
> +		guid_copy((guid_t *)&emeta_buf->header.uuid, &pblk->instance_uuid);
>   		emeta_buf->header.id = cpu_to_le32(line->id);
>   		emeta_buf->header.type = cpu_to_le16(line->type);
>   		emeta_buf->header.version_major = EMETA_VERSION_MAJOR;
> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
> index f9a3e47b6a93..5768333d103f 100644
> --- a/drivers/lightnvm/pblk-init.c
> +++ b/drivers/lightnvm/pblk-init.c
> @@ -130,7 +130,7 @@ static int pblk_l2p_recover(struct pblk *pblk, bool factory_init)
>   	struct pblk_line *line = NULL;
>   
>   	if (factory_init) {
> -		pblk_setup_uuid(pblk);
> +		guid_gen(&pblk->instance_uuid);
>   	} else {
>   		line = pblk_recov_l2p(pblk);
>   		if (IS_ERR(line)) {
> diff --git a/drivers/lightnvm/pblk-recovery.c b/drivers/lightnvm/pblk-recovery.c
> index 5ee20da7bdb3..6761d2afa4d0 100644
> --- a/drivers/lightnvm/pblk-recovery.c
> +++ b/drivers/lightnvm/pblk-recovery.c
> @@ -703,11 +703,13 @@ struct pblk_line *pblk_recov_l2p(struct pblk *pblk)
>   
>   		/* The first valid instance uuid is used for initialization */
>   		if (!valid_uuid) {
> -			memcpy(pblk->instance_uuid, smeta_buf->header.uuid, 16);
> +			guid_copy(&pblk->instance_uuid,
> +				  (guid_t *)&smeta_buf->header.uuid);
>   			valid_uuid = 1;
>   		}
>   
> -		if (memcmp(pblk->instance_uuid, smeta_buf->header.uuid, 16)) {
> +		if (!guid_equal(&pblk->instance_uuid,
> +				(guid_t *)&smeta_buf->header.uuid)) {
>   			pblk_debug(pblk, "ignore line %u due to uuid mismatch\n",
>   					i);
>   			continue;
> @@ -737,7 +739,7 @@ struct pblk_line *pblk_recov_l2p(struct pblk *pblk)
>   	}
>   
>   	if (!found_lines) {
> -		pblk_setup_uuid(pblk);
> +		guid_gen(&pblk->instance_uuid);
>   
>   		spin_lock(&l_mg->free_lock);
>   		WARN_ON_ONCE(!test_and_clear_bit(meta_line,
> diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
> index 85e38ed62f85..12bf02df4204 100644
> --- a/drivers/lightnvm/pblk.h
> +++ b/drivers/lightnvm/pblk.h
> @@ -646,7 +646,7 @@ struct pblk {
>   
>   	int sec_per_write;
>   
> -	unsigned char instance_uuid[16];
> +	guid_t instance_uuid;
>   
>   	/* Persistent write amplification counters, 4kb sector I/Os */
>   	atomic64_t user_wa;		/* Sectors written by user */
> @@ -1360,14 +1360,6 @@ static inline unsigned int pblk_get_secs(struct bio *bio)
>   	return  bio->bi_iter.bi_size / PBLK_EXPOSED_PAGE_SIZE;
>   }
>   
> -static inline void pblk_setup_uuid(struct pblk *pblk)
> -{
> -	uuid_le uuid;
> -
> -	uuid_le_gen(&uuid);
> -	memcpy(pblk->instance_uuid, uuid.b, 16);
> -}
> -
>   static inline char *pblk_disk_name(struct pblk *pblk)
>   {
>   	struct gendisk *disk = pblk->disk;
> 

Thanks Andy. I've applied it for 5.1.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ