mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: linux-kernel@vger.kernel.org, cluster-devel@redhat.com
Cc: Abhijith Das <adas@redhat.com>, Steven Whitehouse <swhiteho@redhat.com>
Subject: [PATCH 11/12] GFS2: Fix fstrim boundary conditions
Date: Mon,  1 Jul 2013 10:33:14 +0100	[thread overview]
Message-ID: <1372671195-3472-12-git-send-email-swhiteho@redhat.com> (raw)
In-Reply-To: <1372671195-3472-1-git-send-email-swhiteho@redhat.com>

From: Abhijith Das <adas@redhat.com>

This patch correctly distinguishes two boundary conditions:

1. When the given range is entire within the unaccounted space between
   two rgrps, and
2. The range begins beyond the end of the filesystem

Also fix the unit of the returned value r.len (total trimming) to be in bytes
instead of the (incorrect) 512 byte blocks

With this patch, GFS2 passes multiple iterations of all the relevant xfstests
(251, 260, 288) with different fs block sizes.

Signed-off-by: Abhi Das <adas@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 9809156..6931743 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1288,13 +1288,15 @@ int gfs2_fitrim(struct file *filp, void __user *argp)
 	minlen = max_t(u64, r.minlen,
 		       q->limits.discard_granularity) >> bs_shift;
 
+	if (end <= start || minlen > sdp->sd_max_rg_data)
+		return -EINVAL;
+
 	rgd = gfs2_blk2rgrpd(sdp, start, 0);
-	rgd_end = gfs2_blk2rgrpd(sdp, end - 1, 0);
+	rgd_end = gfs2_blk2rgrpd(sdp, end, 0);
 
-	if (end <= start ||
-	    minlen > sdp->sd_max_rg_data ||
-	    start > rgd_end->rd_data0 + rgd_end->rd_data)
-		return -EINVAL;
+	if ((gfs2_rgrpd_get_first(sdp) == gfs2_rgrpd_get_next(rgd_end))
+	    && (start > rgd_end->rd_data0 + rgd_end->rd_data))
+		return -EINVAL; /* start is beyond the end of the fs */
 
 	while (1) {
 
@@ -1336,7 +1338,7 @@ int gfs2_fitrim(struct file *filp, void __user *argp)
 	}
 
 out:
-	r.len = trimmed << 9;
+	r.len = trimmed << bs_shift;
 	if (copy_to_user(argp, &r, sizeof(r)))
 		return -EFAULT;
 
-- 
1.7.4


  parent reply	other threads:[~2013-07-01 10:01 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-01  9:33 GFS2: Pre-pull patch posting (merge window) Steven Whitehouse
2013-07-01  9:33 ` [PATCH 01/12] GFS2: Sort buffer lists by inplace block number Steven Whitehouse
2013-07-01  9:33 ` [PATCH 02/12] GFS2: Eliminate gfs2_rg_lops Steven Whitehouse
2013-07-01  9:33 ` [PATCH 03/12] GFS2: Cocci spatch "ptr_ret.spatch" Steven Whitehouse
2013-07-01  9:33 ` [PATCH 04/12] GFS2: Remove no-op wrapper function Steven Whitehouse
2013-07-01  9:33 ` [PATCH 05/12] GFS2: fix error propagation in init_threads() Steven Whitehouse
2013-07-01  9:33 ` [PATCH 06/12] GFS2: Only do one directory search on create Steven Whitehouse
2013-07-01  9:33 ` [PATCH 07/12] GFS2: Add atomic_open support Steven Whitehouse
2013-07-01  9:33 ` [PATCH 08/12] GFS2: fix regression in dir_double_exhash Steven Whitehouse
2013-07-01  9:33 ` [PATCH 09/12] GFS2: aggressively issue revokes in gfs2_log_flush Steven Whitehouse
2013-07-01  9:33 ` [PATCH 10/12] GFS2: fix warning message Steven Whitehouse
2013-07-01  9:33 ` Steven Whitehouse [this message]
2013-07-01  9:33 ` [PATCH 12/12] GFS2: Reserve journal space for quota change in do_grow Steven Whitehouse

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=1372671195-3472-12-git-send-email-swhiteho@redhat.com \
    --to=swhiteho@redhat.com \
    --cc=adas@redhat.com \
    --cc=cluster-devel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®