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: Issue discards in 512b sectors
Date: Fri, 22 Mar 2013 15:04:18 +0000	[thread overview]
Message-ID: <1363964658.2709.27.camel@menhir> (raw)
In-Reply-To: <1515439990.70978652.1363961244435.JavaMail.root@redhat.com>

Hi,

On Fri, 2013-03-22 at 10:07 -0400, Bob Peterson wrote:
> Hi,
> 
> This patch changes GFS2's discard issuing code so that it calls
> function sb_issue_discard rather than blkdev_issue_discard. The
> code was calling blkdev_issue_discard and specifying the correct
> sector offset and sector size, but blkdev_issue_discard expects
> these values to be in terms of 512 byte sectors, even if the native
> sector size for the device is different. Calling sb_issue_discard
> with the BLOCK size instead ensures the correct block-to-512b-sector
> translation. I verified that "minlen" is specified in blocks, so
> comparing it to a number of blocks is correct.
> 

Now in the -nmw git tree. Thanks,

Steve.


> Regards,
> 
> Bob Peterson
> Red Hat File Systems
> 
> Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
> ---
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index dddeb0f..0c5a575 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -1181,12 +1181,9 @@ int gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset,
>  			     const struct gfs2_bitmap *bi, unsigned minlen, u64 *ptrimmed)
>  {
>  	struct super_block *sb = sdp->sd_vfs;
> -	struct block_device *bdev = sb->s_bdev;
> -	const unsigned int sects_per_blk = sdp->sd_sb.sb_bsize /
> -					   bdev_logical_block_size(sb->s_bdev);
>  	u64 blk;
>  	sector_t start = 0;
> -	sector_t nr_sects = 0;
> +	sector_t nr_blks = 0;
>  	int rv;
>  	unsigned int x;
>  	u32 trimmed = 0;
> @@ -1206,35 +1203,34 @@ int gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset,
>  		if (diff == 0)
>  			continue;
>  		blk = offset + ((bi->bi_start + x) * GFS2_NBBY);
> -		blk *= sects_per_blk; /* convert to sectors */
>  		while(diff) {
>  			if (diff & 1) {
> -				if (nr_sects == 0)
> +				if (nr_blks == 0)
>  					goto start_new_extent;
> -				if ((start + nr_sects) != blk) {
> -					if (nr_sects >= minlen) {
> -						rv = blkdev_issue_discard(bdev,
> -							start, nr_sects,
> +				if ((start + nr_blks) != blk) {
> +					if (nr_blks >= minlen) {
> +						rv = sb_issue_discard(sb,
> +							start, nr_blks,
>  							GFP_NOFS, 0);
>  						if (rv)
>  							goto fail;
> -						trimmed += nr_sects;
> +						trimmed += nr_blks;
>  					}
> -					nr_sects = 0;
> +					nr_blks = 0;
>  start_new_extent:
>  					start = blk;
>  				}
> -				nr_sects += sects_per_blk;
> +				nr_blks++;
>  			}
>  			diff >>= 2;
> -			blk += sects_per_blk;
> +			blk++;
>  		}
>  	}
> -	if (nr_sects >= minlen) {
> -		rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS, 0);
> +	if (nr_blks >= minlen) {
> +		rv = sb_issue_discard(sb, start, nr_blks, GFP_NOFS, 0);
>  		if (rv)
>  			goto fail;
> -		trimmed += nr_sects;
> +		trimmed += nr_blks;
>  	}
>  	if (ptrimmed)
>  		*ptrimmed = trimmed;
> 




      reply	other threads:[~2013-03-22 15:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <125081692.70967633.1363961176037.JavaMail.root@redhat.com>
2013-03-22 14:07 ` [Cluster-devel] [GFS2 PATCH] GFS2: Issue discards in 512b sectors Bob Peterson
2013-03-22 15:04   ` 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=1363964658.2709.27.camel@menhir \
    --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.