FALLOC_FL_PUNCH_HOLE changes file content, so it looks strange
we skip such the operations, when we are doing freeze_super().

Signed-off-by: Kirill Tkhai <[email protected]>
---
 drivers/block/loop.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 1e6edd568214..741e0a7bce41 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -434,7 +434,9 @@ static int lo_discard(struct loop_device *lo, struct 
request *rq, loff_t pos)
                goto out;
        }
 
+       file_start_write(file);
        ret = file->f_op->fallocate(file, mode, pos, blk_rq_bytes(rq));
+       file_end_write(file);
        if (unlikely(ret && ret != -EINVAL && ret != -EOPNOTSUPP))
                ret = -EIO;
  out:

Reply via email to