ext4 needs to deal with 2 different max file offsets for block- and extent-allocated file formats, whereas the s_maxbytes scheme can only deal with one. So, for block-allocated files, we must catch and fix up too-large offsets from within the filesystem. Having iov_shorten exported allows such things as: if (pos + length > sbi->s_bitmap_maxbytes) { nr_segs = iov_shorten((struct iovec *)iov, nr_segs, sbi->s_bitmap_maxbytes - pos); } to fix up too-large writes to these files in ext4_file_write(). This patch is currently living in the ext4 patch queue. Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- Index: linux-2.6.24-rc3/fs/read_write.c =================================================================== --- linux-2.6.24-rc3.orig/fs/read_write.c +++ linux-2.6.24-rc3/fs/read_write.c @@ -451,6 +451,8 @@ unsigned long iov_shorten(struct iovec * return seg; } +EXPORT_SYMBOL(iov_shorten); + ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov, unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn) { - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html