All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] GFS2: Change maxlen variables to size_t
Date: Wed, 06 Aug 2014 17:48:11 +0100	[thread overview]
Message-ID: <53E25C4B.5010507@redhat.com> (raw)
In-Reply-To: <593876862.2538301.1407330516489.JavaMail.zimbra@redhat.com>

Hi,

On 06/08/14 14:08, Bob Peterson wrote:
> Hi,
>
> This patch changes some variables (especially maxlen in function
> gfs2_block_map) from unsigned int to size_t. We need 64-bit arithmetic
> for very large files (e.g. 1PB) where the variables otherwise get
> shifted to all 0's.
Now in the -nmw tree. Thanks,

Steve.

> Regards,
>
> Bob Peterson
> Red Hat File Systems
>
> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
> ---
> diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
> index e6ee5b6..f0b945a 100644
> --- a/fs/gfs2/bmap.c
> +++ b/fs/gfs2/bmap.c
> @@ -359,7 +359,7 @@ static inline void release_metapath(struct metapath *mp)
>    * Returns: The length of the extent (minimum of one block)
>    */
>   
> -static inline unsigned int gfs2_extent_length(void *start, unsigned int len, __be64 *ptr, unsigned limit, int *eob)
> +static inline unsigned int gfs2_extent_length(void *start, unsigned int len, __be64 *ptr, size_t limit, int *eob)
>   {
>   	const __be64 *end = (start + len);
>   	const __be64 *first = ptr;
> @@ -449,7 +449,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
>   			   struct buffer_head *bh_map, struct metapath *mp,
>   			   const unsigned int sheight,
>   			   const unsigned int height,
> -			   const unsigned int maxlen)
> +			   const size_t maxlen)
>   {
>   	struct gfs2_inode *ip = GFS2_I(inode);
>   	struct gfs2_sbd *sdp = GFS2_SB(inode);
> @@ -483,7 +483,8 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
>   	} else {
>   		/* Need to allocate indirect blocks */
>   		ptrs_per_blk = height > 1 ? sdp->sd_inptrs : sdp->sd_diptrs;
> -		dblks = min(maxlen, ptrs_per_blk - mp->mp_list[end_of_metadata]);
> +		dblks = min(maxlen, (size_t)(ptrs_per_blk -
> +					     mp->mp_list[end_of_metadata]));
>   		if (height == ip->i_height) {
>   			/* Writing into existing tree, extend tree down */
>   			iblks = height - sheight;
> @@ -605,7 +606,7 @@ int gfs2_block_map(struct inode *inode, sector_t lblock,
>   	struct gfs2_inode *ip = GFS2_I(inode);
>   	struct gfs2_sbd *sdp = GFS2_SB(inode);
>   	unsigned int bsize = sdp->sd_sb.sb_bsize;
> -	const unsigned int maxlen = bh_map->b_size >> inode->i_blkbits;
> +	const size_t maxlen = bh_map->b_size >> inode->i_blkbits;
>   	const u64 *arr = sdp->sd_heightsize;
>   	__be64 *ptr;
>   	u64 size;
>



      reply	other threads:[~2014-08-06 16:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1526676745.2537367.1407330433566.JavaMail.zimbra@redhat.com>
2014-08-06 13:08 ` [Cluster-devel] [GFS2 PATCH] GFS2: Change maxlen variables to size_t Bob Peterson
2014-08-06 16:48   ` Steven Whitehouse [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53E25C4B.5010507@redhat.com \
    --to=swhiteho@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.