It is safe to execute a fallocate on a opened and in-use file?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,
I would like to understand if it is safe, or not, to execute a fallocate on a opened an possibly in-use file.

Scenario: a running Qemu/KVM virtual machine that need its RAW-image vdisk to be expanded.

I normally stop the virtual machine and issue "fallocate -l <newsize> <filename>", then I restart it. I wonder if I can skip the stop/start phases, going directly for the fallocate.

Reasoning on the question, I naively think that fallocating when the VM is writing on the file has the potential to cause corruption, due to this racing condition:
- I execute fallocate;
- the filesystem begins searching for to-be-allocated chunks, and finds one; - the VM suddenly writes to the very same block found on the previous step; - the filesystem continue allocating the previos block, accidentally discarding the just-written data.

This scenario can be avoided if the relevant critical path are protected with mutex (or equivalent structures). Is it the case?

In general, how to consider concurrent metadata updates for the same file/block? Should I expect file corruption, similar to concurrently writing data to the same file/block?

Thanks.

--
Danti Gionatan
Supporto Tecnico
Assyoma S.r.l. - www.assyoma.it
email: g.danti@xxxxxxxxxx - info@xxxxxxxxxx
GPG public key ID: FF5F32A8
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux