fspacectl(2) questions
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 18 Aug 2021 00:00:02 UTC
First off, thanks for doing this. I am just implementing the NFSv4.2 Deallocate operation using it. (I'll put the patches up on phabricator soon.) There are a couple of things I've spotted during testing. 1 - If you specify (for example): rqst.r_offset = 65536 rqst.r_len = 1048576 and then use these to do a fspacectl(fd, SPACECTL_DEALLOC, &rqst, 0, &rqst) on a file < 1048576 bytes in length, it works and zeros out 65536->EOF, which is what I would have expected. However, rqst.r_offset is set to 1114112 after the syscall. Is that intended? I just thought it was a little weird to return r_offset > EOF instead of the size of the file. If that is the intended behaviour, I'm fine with that, but maybe "man fspacectl" should indicate that? Maybe something like "bytes beyond EOF in the specified range will not be set to zero (ie. file size not increased), but that r_offset will be advanced to the end of the range, even if beyond EOF". 2 - Setting rqst.r_offset = OFF_MAX rqst.r_len = 65536 results in an EINVAL errno, which seems fine, but isn't mentioned in the man page. But overall, works fine for me. (Of course, it will be nice when UFS and ZFS get VOP_DEALLOCATE() calls that really deallocate.) Again, thanks for doing this, rick