On Thu, 18 Aug 2011, Jeff Moyer wrote: > Lukas Czerner <lczerner@xxxxxxxxxx> writes: > > >> @@ -484,6 +485,29 @@ static int do_bio_filebacked(struct loop_device *lo, struct bio *bio) > >> } > >> } > >> > >> + /* > >> + * We use punch hole to reclaim the free space used by the > >> + * image a.k.a. discard. However we do support discard if > >> + * encryption is enabled, because it may give an attacker > >> + * useful information. > >> + */ > >> + if (bio->bi_rw & REQ_DISCARD) { > >> + struct file *file = lo->lo_backing_file; > >> + int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; > >> + > >> + if ((!file->f_op->fallocate) || > >> + lo->lo_encrypt_key_size) { > >> + ret = -EOPNOTSUPP; > >> + goto out; > >> + } > >> + ret = file->f_op->fallocate(file, mode, pos, > >> + bio->bi_size); > >> + if (unlikely(ret && ret != -EINVAL && > >> + ret != -EOPNOTSUPP)) > >> + ret = -EIO; > >> + goto out; > >> + } > >> + > > Seems you missed the bizarre case of configuring a loop device over top > of a block device. Wow, that is a bizarre case I did not think about at all. But since it is so bizarre, do we even care ? The thing is that the only case where it would make a difference is if the loop device is put on top of block device which actually supports discard. In order to fix that I would need to dig out the actual limits for that device and set that appropriately for the loop device. Is that worth it ? It is not like someone will ever do that (or should) :). Thanks! -Lukas > > Cheers, > Jeff > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html