login
Header Space

 
 

Re: [PATCH 2/5] [FAT] Let the block device know when sectors can be discarded

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: OGAWA Hirofumi <hirofumi@...>
Cc: Jens Axboe <jens.axboe@...>, Andrew Morton <akpm@...>, Ric Wheeler <ricwheeler@...>, <linux-fsdevel@...>, <gilad@...>
Date: Thursday, August 7, 2008 - 12:09 pm

On Wed, 2008-08-06 at 22:37 +0100, David Woodhouse wrote:

Incremental patch over what I posted before...

diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c
index 5970fd6..a8b10ac 100644
--- a/fs/fat/fatent.c
+++ b/fs/fat/fatent.c
@@ -541,11 +541,6 @@ int fat_free_clusters(struct inode *inode, int cluster)
 	fatent_init(&fatent);
 	lock_fat(sbi);
 	do {
-		/* Issue discard for the sectors we no longer care about */
-		blkdev_issue_discard(sb->s_bdev,
-				     fat_clus_to_blknr(sbi, cluster),
-				     sbi->sec_per_clus, NULL);
-
 		cluster = fat_ent_read(inode, &fatent, cluster);
 		if (cluster < 0) {
 			err = cluster;
@@ -557,6 +552,10 @@ int fat_free_clusters(struct inode *inode, int cluster)
 			goto error;
 		}
 
+		/* Issue discard for the sectors we no longer care about */
+		sb_issue_discard(sb, fat_clus_to_blknr(sbi, fatent.entry),
+				 sbi->sec_per_clus, NULL);
+
 		ops->ent_put(&fatent, FAT_ENT_FREE);
 		if (sbi->free_clusters != -1) {
 			sbi->free_clusters++;
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 3f077a5..9b33909 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -840,6 +840,15 @@ extern int blkdev_issue_flush(struct block_device *, sector_t *);
 extern int blkdev_issue_discard(struct block_device *, sector_t sector,
 				unsigned nr_sects, bio_end_io_t *);
 
+static inline int sb_issue_discard(struct super_block *sb,
+				   sector_t block, unsigned nr_blocks,
+				   bio_end_io_t *endio)
+{
+	block <<= (sb->s_blocksize_bits - 9);
+	nr_blocks <<= (sb->s_blocksize_bits - 9);
+	return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, endio);
+}
+
 /*
 * command filter functions
 */
diff --git a/mm/bounce.c b/mm/bounce.c
index b6d2d0f..1cfe193 100644
--- a/mm/bounce.c
+++ b/mm/bounce.c
@@ -267,7 +267,7 @@ void blk_queue_bounce(struct request_queue *q, struct bio **bio_orig)
 	/*
 	 * Data-less bio, nothing to bounce
 	 */
-	if (bio_empty_barrier(*bio_orig))
+	if (bio_dataless(*bio_orig))
 		return;
 
 	/*


-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation



--
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:
[RFC] 'discard sectors' block request., David Woodhouse, (Mon Aug 4, 9:45 pm)
Re: [RFC] 'discard sectors' block request., Jens Axboe, (Tue Aug 5, 7:42 am)
Re: [RFC] 'discard sectors' block request., David Woodhouse, (Tue Aug 5, 12:29 pm)
Re: [RFC] 'discard sectors' block request., David Woodhouse, (Tue Aug 5, 1:25 pm)
Re: [PATCH 2/5] [FAT] Let the block device know when sectors..., David Woodhouse, (Thu Aug 7, 12:09 pm)
[PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Wed Aug 6, 5:25 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 5:33 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 6:52 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, Matthew Wilcox, (Fri Aug 8, 10:22 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 10:27 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, Matthew Wilcox, (Fri Aug 8, 10:34 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 7:29 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 11:32 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 8:05 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 8:32 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 8:49 am)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, Jamie Lokier, (Sat Aug 9, 9:05 pm)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Fri Aug 8, 7:04 am)
[PATCH 1/5, v2] [BLOCK] Add 'discard' request handling, David Woodhouse, (Thu Aug 7, 12:32 pm)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, OGAWA Hirofumi, (Wed Aug 6, 12:19 pm)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, David Woodhouse, (Wed Aug 6, 2:18 pm)
Re: [PATCH 1/5] [BLOCK] Add 'discard' request handling, OGAWA Hirofumi, (Wed Aug 6, 3:28 pm)
Re: [RFC] 'discard sectors' block request., David Woodhouse, (Tue Aug 5, 9:32 am)
Re: [RFC] 'discard sectors' block request., Ric Wheeler, (Tue Aug 5, 10:21 am)
Re: [RFC] 'discard sectors' block request., Andrew Morton, (Mon Aug 4, 9:59 pm)
Re: [RFC] 'discard sectors' block request., David Woodhouse, (Tue Aug 5, 5:01 am)
speck-geostationary