All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nfs-utils: calculate stripe device size during process phase
@ 2011-02-14 19:32 Jim Rees
       [not found] ` <20110214193233.GA3555-8f4Pc2RrbJmHXe+LvDLADg@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Jim Rees @ 2011-02-14 19:32 UTC (permalink / raw)
  To: Benny Halevy; +Cc: linux-nfs, peter honeyman

If a device has stripe device components, the total size will be wrong.
Calculate the stripe device size earlier, during the process phase, so that
later devices will have the correct size.

Signed-off-by: Jim Rees <rees@umich.edu>
---
 utils/blkmapd/device-process.c |    3 ++-
 utils/blkmapd/dm-device.c      |    2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/utils/blkmapd/device-process.c b/utils/blkmapd/device-process.c
index b709b48..9a78457 100644
--- a/utils/blkmapd/device-process.c
+++ b/utils/blkmapd/device-process.c
@@ -318,7 +318,8 @@ decode_blk_volume(uint32_t **pp, uint32_t *end, struct bl_volume *vols, int voln
 			}
 		}
 		/* Truncate size to a stripe unit boundary */
-		vol->bv_size = vol->bv_vols[0]->bv_size & ~(chunksize - 1);
+		vol->bv_size = vol->bv_vols[0]->bv_size * vol->bv_vol_n;
+		vol->bv_size &= ~(chunksize - 1);
 		break;
 	case BLOCK_VOLUME_CONCAT:
 		BLK_READBUF(p, end, 4);
diff --git a/utils/blkmapd/dm-device.c b/utils/blkmapd/dm-device.c
index 2e87db8..c4fe4e9 100644
--- a/utils/blkmapd/dm-device.c
+++ b/utils/blkmapd/dm-device.c
@@ -418,7 +418,7 @@ uint64_t dm_device_create(struct bl_volume *vols, int num_vols)
 			stripe_size = stripe_unit * node->bv_vol_n;
 			nstripes = node->bv_size * node->bv_vol_n / stripe_size;
 			/* Make sure total size is a multiple of stripe size */
-			size = node->bv_size * node->bv_vol_n;
+			size = node->bv_size;
 			if (size % stripe_size != 0) {
 				/* XXX Should this be an error? */
 				BL_LOG_WARNING(
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] nfs-utils: calculate stripe device size during process phase
       [not found] ` <20110214193233.GA3555-8f4Pc2RrbJmHXe+LvDLADg@public.gmane.org>
@ 2011-02-14 20:45   ` Benny Halevy
  0 siblings, 0 replies; 2+ messages in thread
From: Benny Halevy @ 2011-02-14 20:45 UTC (permalink / raw)
  To: Jim Rees; +Cc: linux-nfs, peter honeyman

Merged.  Thanks!

Benny

On 2011-02-14 14:32, Jim Rees wrote:
> If a device has stripe device components, the total size will be wrong.
> Calculate the stripe device size earlier, during the process phase, so that
> later devices will have the correct size.
> 
> Signed-off-by: Jim Rees <rees@umich.edu>
> ---
>  utils/blkmapd/device-process.c |    3 ++-
>  utils/blkmapd/dm-device.c      |    2 +-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/utils/blkmapd/device-process.c b/utils/blkmapd/device-process.c
> index b709b48..9a78457 100644
> --- a/utils/blkmapd/device-process.c
> +++ b/utils/blkmapd/device-process.c
> @@ -318,7 +318,8 @@ decode_blk_volume(uint32_t **pp, uint32_t *end, struct bl_volume *vols, int voln
>  			}
>  		}
>  		/* Truncate size to a stripe unit boundary */
> -		vol->bv_size = vol->bv_vols[0]->bv_size & ~(chunksize - 1);
> +		vol->bv_size = vol->bv_vols[0]->bv_size * vol->bv_vol_n;
> +		vol->bv_size &= ~(chunksize - 1);
>  		break;
>  	case BLOCK_VOLUME_CONCAT:
>  		BLK_READBUF(p, end, 4);
> diff --git a/utils/blkmapd/dm-device.c b/utils/blkmapd/dm-device.c
> index 2e87db8..c4fe4e9 100644
> --- a/utils/blkmapd/dm-device.c
> +++ b/utils/blkmapd/dm-device.c
> @@ -418,7 +418,7 @@ uint64_t dm_device_create(struct bl_volume *vols, int num_vols)
>  			stripe_size = stripe_unit * node->bv_vol_n;
>  			nstripes = node->bv_size * node->bv_vol_n / stripe_size;
>  			/* Make sure total size is a multiple of stripe size */
> -			size = node->bv_size * node->bv_vol_n;
> +			size = node->bv_size;
>  			if (size % stripe_size != 0) {
>  				/* XXX Should this be an error? */
>  				BL_LOG_WARNING(

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-02-14 20:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-14 19:32 [PATCH] nfs-utils: calculate stripe device size during process phase Jim Rees
     [not found] ` <20110214193233.GA3555-8f4Pc2RrbJmHXe+LvDLADg@public.gmane.org>
2011-02-14 20:45   ` Benny Halevy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.