* [PATCH 3/4] ext4: convert extent zeroout to generic function [not found] <1265885625-21608-1-git-send-email-dmonakhov@openvz.org> @ 2010-02-11 10:59 ` Dmitry Monakhov [not found] ` <1265885870-21858-1-git-send-email-dmonakhov@openvz.org> 1 sibling, 0 replies; 2+ messages in thread From: Dmitry Monakhov @ 2010-02-11 10:59 UTC (permalink / raw) To: linux-kernel; +Cc: jens.axboe, linux-ext4, Dmitry Monakhov Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> --- fs/ext4/extents.c | 70 +++------------------------------------------------- 1 files changed, 4 insertions(+), 66 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 765a482..ff4473a 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -2432,76 +2432,14 @@ void ext4_ext_release(struct super_block *sb) #endif } -static void bi_complete(struct bio *bio, int error) -{ - complete((struct completion *)bio->bi_private); -} - /* FIXME!! we need to try to merge to left or right after zero-out */ static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex) { - int ret = -EIO; - struct bio *bio; - int blkbits, blocksize; - sector_t ee_pblock; - struct completion event; - unsigned int ee_len, len, done, offset; - - - blkbits = inode->i_blkbits; - blocksize = inode->i_sb->s_blocksize; - ee_len = ext4_ext_get_actual_len(ex); - ee_pblock = ext_pblock(ex); + sector_t nr_sects = ((sector_t)ext4_ext_get_actual_len(ex)) << + inode->i_blkbits; - /* convert ee_pblock to 512 byte sectors */ - ee_pblock = ee_pblock << (blkbits - 9); - - while (ee_len > 0) { - - if (ee_len > BIO_MAX_PAGES) - len = BIO_MAX_PAGES; - else - len = ee_len; - - bio = bio_alloc(GFP_NOIO, len); - bio->bi_sector = ee_pblock; - bio->bi_bdev = inode->i_sb->s_bdev; - - done = 0; - offset = 0; - while (done < len) { - ret = bio_add_page(bio, ZERO_PAGE(0), - blocksize, offset); - if (ret != blocksize) { - /* - * We can't add any more pages because of - * hardware limitations. Start a new bio. - */ - break; - } - done++; - offset += blocksize; - if (offset >= PAGE_CACHE_SIZE) - offset = 0; - } - - init_completion(&event); - bio->bi_private = &event; - bio->bi_end_io = bi_complete; - submit_bio(WRITE, bio); - wait_for_completion(&event); ^ permalink raw reply related [flat|nested] 2+ messages in thread
[parent not found: <1265885870-21858-1-git-send-email-dmonakhov@openvz.org>]
* Re: [PATCH 2/4] block: support compat discard mode by default. [not found] ` <1265885870-21858-1-git-send-email-dmonakhov@openvz.org> @ 2010-02-11 11:25 ` Dmitry Monakhov 0 siblings, 0 replies; 2+ messages in thread From: Dmitry Monakhov @ 2010-02-11 11:25 UTC (permalink / raw) To: linux-kernel; +Cc: jens.axboe, linux-ext4 Dmitry Monakhov <dmonakhov@openvz.org> writes: > Currently there are many filesystems which has implemented > discard support, but ssd discs not widely used yet. > Let's allow user to use compat discard mode by default. > After this feature is enabled by default for all devices which has > no native discard support it will be possible to use this feature > simply by passing appropriate mount option to fs (-odiscard in ext4) BTW i've run tested ext4 with -odiscard option, and it survived more 24hour of stress tests test which consists of fsstress, compilation, and etc > > This default option has many advantages: > - Hope that this helps in real filesystem testing. > - People who are crazy about data security whould be really happy. > - Virtual machine developers also would like this feature. > > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> > --- > include/linux/blkdev.h | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h > index c762c9f..d7d028c 100644 > --- a/include/linux/blkdev.h > +++ b/include/linux/blkdev.h > @@ -1010,7 +1010,7 @@ static inline int sb_issue_discard(struct super_block *sb, > block <<= (sb->s_blocksize_bits - 9); > nr_blocks <<= (sb->s_blocksize_bits - 9); > return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_KERNEL, > - DISCARD_FL_BARRIER); > + DISCARD_FL_BARRIER|DISCARD_FL_COMPAT); > } > > extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm); ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-02-11 11:25 UTC | newest] Thread overview: 2+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1265885625-21608-1-git-send-email-dmonakhov@openvz.org> 2010-02-11 10:59 ` [PATCH 3/4] ext4: convert extent zeroout to generic function Dmitry Monakhov [not found] ` <1265885870-21858-1-git-send-email-dmonakhov@openvz.org> 2010-02-11 11:25 ` [PATCH 2/4] block: support compat discard mode by default Dmitry Monakhov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).