Re: [PATCH 1/2] md: bcache: Replace get_seconds with ktime_get_seconds

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

 



Hello Shraddha,

I don't think you can use ktime_get_seconds() for last_mount in the
superblock, since the superblock is persistent between reboots and the
monotonic time value doesn't make any sense on next reboot.

Vojtech


On Tue, Dec 22, 2015 at 06:32:59PM +0530, shraddha.6596@xxxxxxxxx wrote:
> From: Shraddha Barke <shraddha.6596@xxxxxxxxx>
> 
> 32-bit systems using function get_seconds will break in the year 2038,
> in order to avoid that replace the code with more appropriate
> function ktime_get_seconds which is y2038 safe.
> Function ktime_get_seconds is used since it uses monotonic instead of
> real time and thus will not cause overflow.
> 
> Signed-off-by: Shraddha Barke <shraddha.6596@xxxxxxxxx>
> ---
>  drivers/md/bcache/super.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
> index 679a093..f4bd17d 100644
> --- a/drivers/md/bcache/super.c
> +++ b/drivers/md/bcache/super.c
> @@ -188,7 +188,7 @@ static const char *read_super(struct cache_sb *sb, struct block_device *bdev,
>  		goto err;
>  	}
>  
> -	sb->last_mount = get_seconds();
> +	sb->last_mount = ktime_get_seconds();
>  	err = NULL;
>  
>  	get_page(bh->b_page);
> @@ -696,7 +696,7 @@ static void bcache_device_detach(struct bcache_device *d)
>  
>  		SET_UUID_FLASH_ONLY(u, 0);
>  		memcpy(u->uuid, invalid_uuid, 16);
> -		u->invalidated = cpu_to_le32(get_seconds());
> +		u->invalidated = cpu_to_le32(ktime_get_seconds());
>  		bch_uuid_write(d->c);
>  	}
>  
> @@ -927,7 +927,7 @@ void bch_cached_dev_detach(struct cached_dev *dc)
>  
>  int bch_cached_dev_attach(struct cached_dev *dc, struct cache_set *c)
>  {
> -	uint32_t rtime = cpu_to_le32(get_seconds());
> +	uint32_t rtime = cpu_to_le32(ktime_get_seconds());
>  	struct uuid_entry *u;
>  	char buf[BDEVNAME_SIZE];
>  
> @@ -959,7 +959,7 @@ int bch_cached_dev_attach(struct cached_dev *dc, struct cache_set *c)
>  	    (BDEV_STATE(&dc->sb) == BDEV_STATE_STALE ||
>  	     BDEV_STATE(&dc->sb) == BDEV_STATE_NONE)) {
>  		memcpy(u->uuid, invalid_uuid, 16);
> -		u->invalidated = cpu_to_le32(get_seconds());
> +		u->invalidated = cpu_to_le32(ktime_get_seconds());
>  		u = NULL;
>  	}
>  
> @@ -1261,7 +1261,7 @@ int bch_flash_dev_create(struct cache_set *c, uint64_t size)
>  
>  	get_random_bytes(u->uuid, 16);
>  	memset(u->label, 0, 32);
> -	u->first_reg = u->last_reg = cpu_to_le32(get_seconds());
> +	u->first_reg = u->last_reg = cpu_to_le32(ktime_get_seconds());
>  
>  	SET_UUID_FLASH_ONLY(u, 1);
>  	u->sectors = size >> 9;
> @@ -1670,7 +1670,7 @@ static void run_cache_set(struct cache_set *c)
>  		goto err;
>  
>  	closure_sync(&cl);
> -	c->sb.last_mount = get_seconds();
> +	c->sb.last_mount = ktime_get_seconds();
>  	bcache_write_super(c);
>  
>  	list_for_each_entry_safe(dc, t, &uncached_devices, list)
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 
Vojtech Pavlik
Director SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-bcache" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux