login
Header Space

 
 

Re: [PATCH 0/2] MMC discard support (was [PATCH 0/7] Discard requests, v2)

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Pierre Ossman <drzeus-list@...>
Cc: <linux-fsdevel@...>, David Woodhouse <dwmw2@...>
Date: Friday, August 22, 2008 - 5:24 am

On Sat, Aug 16 2008, Pierre Ossman wrote:

I agree with that, the thought did cross my mind earlier as well. I
committed something like the below (in two patches). Do you want me to
queue up your mmc patches as well?

diff --git a/block/blk-core.c b/block/blk-core.c
index d785466..52824c0 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1381,7 +1381,8 @@ end_io:
 			break;
 		}
 
-		if (unlikely(nr_sectors > q->max_hw_sectors)) {
+		if (unlikely(bio_has_data(bio) &&
+		     nr_sectors > q->max_hw_sectors)) {
 			printk(KERN_ERR "bio too big device %s (%u > %u)\n",
 				bdevname(bio->bi_bdev, b),
 				bio_sectors(bio),
diff --git a/block/ioctl.c b/block/ioctl.c
index 375c579..ec6fa5d 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -125,52 +125,41 @@ static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
 			     uint64_t len)
 {
 	struct request_queue *q = bdev_get_queue(bdev);
+	DECLARE_COMPLETION_ONSTACK(wait);
+	struct bio *bio;
 	int ret = 0;
 
 	if (start & 511)
 		return -EINVAL;
 	if (len & 511)
 		return -EINVAL;
-	start >>= 9;
-	len >>= 9;
 
-	if (start + len > (bdev->bd_inode->i_size >> 9))
+	if (start + len > bdev->bd_inode->i_size)
 		return -EINVAL;
 
 	if (!q->prepare_discard_fn)
 		return -EOPNOTSUPP;
 
-	while (len && !ret) {
-		DECLARE_COMPLETION_ONSTACK(wait);
-		struct bio *bio;
-
-		bio = bio_alloc(GFP_KERNEL, 0);
-		if (!bio)
-			return -ENOMEM;
-
-		bio->bi_end_io = blk_ioc_discard_endio;
-		bio->bi_bdev = bdev;
-		bio->bi_private = &wait;
-		bio->bi_sector = start;
-
-		if (len > q->max_hw_sectors) {
-			bio->bi_size = q->max_hw_sectors << 9;
-			len -= q->max_hw_sectors;
-			start += q->max_hw_sectors;
-		} else {
-			bio->bi_size = len << 9;
-			len = 0;
-		}
-		submit_bio(DISCARD_NOBARRIER, bio);
-
-		wait_for_completion(&wait);
-
-		if (bio_flagged(bio, BIO_EOPNOTSUPP))
-			ret = -EOPNOTSUPP;
-		else if (!bio_flagged(bio, BIO_UPTODATE))
-			ret = -EIO;
-		bio_put(bio);
-	}
+	bio = bio_alloc(GFP_KERNEL, 0);
+	if (!bio)
+		return -ENOMEM;
+
+	bio->bi_end_io = blk_ioc_discard_endio;
+	bio->bi_bdev = bdev;
+	bio->bi_private = &wait;
+	bio->bi_sector = start >> 9;
+	bio->bi_size = len;
+
+	submit_bio(DISCARD_NOBARRIER, bio);
+
+	wait_for_completion(&wait);
+
+	if (bio_flagged(bio, BIO_EOPNOTSUPP))
+		ret = -EOPNOTSUPP;
+	else if (!bio_flagged(bio, BIO_UPTODATE))
+		ret = -EIO;
+
+	bio_put(bio);
 	return ret;
 }
 

-- 
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/7] Discard requests, v2, David Woodhouse, (Sat Aug 9, 12:26 pm)
Re: [PATCH 0/2] MMC discard support (was [PATCH 0/7] Discard..., Jens Axboe, (Fri Aug 22, 5:24 am)
[PATCH 2/2] mmc_block: erase discarded blocks, Pierre Ossman, (Sat Aug 16, 1:12 pm)
[PATCH 11/7] Kill REQ_TYPE_FLUSH, David Woodhouse, (Wed Aug 13, 7:39 am)
Re: [PATCH 11/7] Kill REQ_TYPE_FLUSH, Jens Axboe, (Wed Aug 13, 11:40 am)
Re: [PATCH 11/7] Kill REQ_TYPE_FLUSH, David Woodhouse, (Wed Aug 13, 11:46 am)
Re: [PATCH 11/7] Kill REQ_TYPE_FLUSH, Geert Uytterhoeven, (Wed Aug 13, 7:58 am)
Re: [PATCH 11/7] Kill REQ_TYPE_FLUSH, David Woodhouse, (Wed Aug 13, 8:43 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Tue Aug 12, 5:14 am)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Tue Aug 12, 3:53 pm)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Tue Aug 12, 4:11 pm)
Re: [PATCH 0/7] Discard requests, v2, Matthew Wilcox, (Tue Aug 12, 7:42 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 7:46 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 6:00 am)
Re: [PATCH 0/7] Discard requests, v2, Jamie Lokier, (Tue Aug 12, 2:10 pm)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 6:20 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Tue Aug 12, 6:54 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 7:16 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 8:19 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Tue Aug 12, 8:53 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 9:04 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Tue Aug 12, 11:47 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Wed Aug 13, 7:15 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 7:23 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Wed Aug 13, 7:32 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Thu Aug 14, 3:25 am)
Re: [PATCH 0/7] Discard requests, v2, Stephen Rothwell, (Thu Aug 14, 3:33 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Thu Aug 14, 3:42 am)
Re: [PATCH 0/7] Discard requests, v2, Stephen Rothwell, (Thu Aug 14, 3:46 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Thu Aug 14, 3:37 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 7:34 am)
Re: [PATCH 0/7] Discard requests, v2, Jens Axboe, (Thu Aug 14, 3:49 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Thu Aug 14, 3:52 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 8:07 am)
Re: [PATCH 0/7] Discard requests, v2, Jamie Lokier, (Tue Aug 12, 2:04 pm)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 6:22 am)
Re: [PATCH 0/7] Discard requests, v2, Jamie Lokier, (Wed Aug 13, 8:19 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Wed Aug 13, 8:26 am)
[PATCH 8/7] blktrace: support discard requests, David Woodhouse, (Sun Aug 10, 6:29 am)
Re: [PATCH 8/7] blktrace: support discard requests, David Woodhouse, (Sun Aug 10, 6:41 am)
Re: [PATCH 8/7] blktrace: support discard requests, Jens Axboe, (Wed Aug 13, 7:17 am)
[USERSPACE PATCH] blktrace: support discard requests, David Woodhouse, (Sun Aug 10, 6:35 am)
Re: [USERSPACE PATCH] blktrace: support discard requests, David Woodhouse, (Fri Aug 15, 5:01 am)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Sat Aug 9, 6:48 pm)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Sun Aug 10, 6:25 am)
Re: [PATCH 0/7] Discard requests, v2, Jamie Lokier, (Sun Aug 10, 12:37 pm)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Sun Aug 10, 1:55 pm)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Sun Aug 10, 4:07 pm)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Sun Aug 10, 5:40 pm)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Mon Aug 11, 5:40 am)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Mon Aug 11, 6:25 am)
Re: [PATCH 0/7] Discard requests, v2, David Woodhouse, (Mon Aug 11, 9:17 am)
Re: [PATCH 0/7] Discard requests, v2, OGAWA Hirofumi, (Mon Aug 11, 10:21 am)
[PATCH 6/7] [MTD] [FTL] Support 'discard sectors' operation., David Woodhouse, (Sat Aug 9, 12:33 pm)
[PATCH 3/7] [BLOCK] Add 'discard' request handling, David Woodhouse, (Sat Aug 9, 12:30 pm)
Re: [PATCH 3/7] [BLOCK] Add 'discard' request handling, OGAWA Hirofumi, (Sat Aug 9, 4:39 pm)
Re: [PATCH 3/7] [BLOCK] Add 'discard' request handling, David Woodhouse, (Sun Aug 10, 2:32 am)
Re: [PATCH 3/7] [BLOCK] Add 'discard' request handling, David Woodhouse, (Sat Aug 9, 5:37 pm)
speck-geostationary