Messages in this thread | | | From | Jeff Moyer <> | Subject | Re: [PATCH] loop: add discard support for loop devices | Date | Thu, 18 Aug 2011 11:33:22 -0400 |
| |
Lukas Czerner <lczerner@redhat.com> 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.
Cheers, Jeff
| |