diff options
author | Anton Ivanov <anton.ivanov@cambridgegreys.com> | 2018-11-14 18:41:09 +0000 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2018-12-27 22:48:20 +0100 |
commit | 50109b5a03b4024eb6b8df3ab8f427625f54fe92 (patch) | |
tree | 763dffe32e8a11bf9c6ac69bbf4a45cbc8e1ebff /arch/um/os-Linux | |
parent | a41421edb926fcc8f212742b2e7a1f21c9047853 (diff) |
um: Add support for DISCARD in the UBD Driver
Support for DISCARD and WRITE_ZEROES in the ubd driver using
fallocate.
DISCARD is enabled by default and can be disabled using a new
UBD command line flag.
If the underlying fs on which the UBD image is stored does not
support DISCARD the support for both DISCARD and WRITE_ZEROES
is turned off.
Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/os-Linux')
-rw-r--r-- | arch/um/os-Linux/file.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c index c0197097c86e..f25b110d4e70 100644 --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c @@ -610,3 +610,13 @@ unsigned long long os_makedev(unsigned major, unsigned minor) { return makedev(major, minor); } + +int os_falloc_punch(int fd, unsigned long long offset, int len) +{ + int n = fallocate(fd, FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE, offset, len); + + if (n < 0) + return -errno; + return n; +} + |