Commit Graph

971 Commits (65de83140aa6264b75a8cb5eda9e0ba1b1f56b9b)

Author SHA1 Message Date
Ronnie Sahlberg 65de83140a NFSv4: Add support (and tests) for open(O_APPEND)
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-08-03 20:25:59 +10:00
Ronnie Sahlberg 2ce8890458 NFSv4: Add open(O_SYNC) support
Also update close() so we only send a COMMIT if there is still
unstaged data written.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-30 09:44:31 +10:00
Ronnie Sahlberg 42d14779b7 NFSv4: Add support for open(O_TRUNC)
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-30 08:36:18 +10:00
Ronnie Sahlberg 61e071d448 NFSv4: Add support for nfs_[p]write()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-29 19:52:41 +10:00
Ronnie Sahlberg 5c73d788b1 NFSv4: Populate functions should return how many operations they did append.
The populate functions will soon start appending varying number of operations.
For examle the case of open(O_TRUNC) where we would append an extra
SETATTR(size=0) at the end of the compound chain.

Thus use the number of ops that the populate function retured for when
we compute the length of the compound chain instead of assuming it is always
a constant.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-29 09:27:35 +10:00
Ronnie Sahlberg 5a78bd5a7a NFSv4: Update nfs_open() to support symlinks
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-28 19:39:27 +10:00
Ronnie Sahlberg 9f44b157f0 NFSv4: fix compiler warnings
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-27 07:28:23 +10:00
Ronnie Sahlberg 4fa3b4b258 NFSv4: Always send a GETATTR as part of the path lookup
Send a GETATTR for the final component in the path lookup so that
we can detect and act on it being a symlink.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-27 07:16:18 +10:00
Ronnie Sahlberg 5c2d989887 NFSv4: Add support for readlink()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-26 14:26:29 +10:00
Ronnie Sahlberg f3211e9be5 NFSv4 Add support for symlink()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-26 14:26:29 +10:00
Ronnie Sahlberg dce044ab53 NFSv4: Add support for read() and pread()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-26 14:26:29 +10:00
Ronnie Sahlberg 0d9dd0ee44 NFSv4 Add support for nfs_open() nfs_fstat64() nfs_close()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-26 14:26:29 +10:00
Ronnie Sahlberg 93fbecd7c1 NFSv4 Add support for nfs_rmdir()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-14 07:04:28 +10:00
Ronnie Sahlberg 8a9fceb725 NFSv4: Add support for nfs_mkdir2()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-13 23:04:35 +10:00
Ronnie Sahlberg 3ced39f567 Rework the NFSv4 path lookup framework so it handles symlinks properly.
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-13 18:22:27 +10:00
Ronnie Sahlberg df94ae931a pdu->timeout needs to be uint64_t
pdu->timeout is the timeout for for the pdu using the unix epoch but
expressed in ms, not seconds.
As such it must be 64 bit as on 32 bit we would have already wrapped the
timer.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 17:08:17 +10:00
Ronnie Sahlberg 419e196979 rpc->timeout does not need to be 64 bit
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 16:46:24 +10:00
Ronnie Sahlberg dc9669abd5 Fix compiler warnings about cast from char* -> uint32_t*
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 16:33:55 +10:00
Ronnie Sahlberg 8df917633d TESTS: Tweak timeout test settings
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 15:00:23 +10:00
Ronnie Sahlberg 5a6865c7ab Change the paths for the nfs includes from libnfs-private.h
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 14:34:29 +10:00
Ronnie Sahlberg 5159b76e00 NFSv4: add support for nfs_lstat64()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 13:46:28 +10:00
Ronnie Sahlberg 0d95058e4e TESTS: Add tests for nfs_lstat64()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 13:38:32 +10:00
Ronnie Sahlberg 546c9455c7 Don't use random()/srandom()
We can create a initial verifier that is good enough by just using
the current time and the pid.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 12:58:31 +10:00
Ronnie Sahlberg 825d8c2aa3 WIN32: Update the project file with nfs_v4.c (and the renamed nfs_v3.c)
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 10:04:22 +10:00
Ronnie Sahlberg 4cb34e2c9a Merge branch 'nfsv4' 2017-07-08 09:58:11 +10:00
Ronnie Sahlberg fc677be6a3 Bump the pdu timeout by 1000ms when we do not have clock_gettime()
If we fallback to time() we have 1 second granularity of our timestamps.
Thus we need to bump the pdu timestamp we set by this granularity or
the timeout will trigger too early.

For a 1s timeout, this means that we now will trigger the timeout between
1.0 - 2.0 seconds instead of the previous  0.0 - 1.0 seconds.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 09:55:14 +10:00
Chris Richards fb1efbe51c Increased resolution of PDU timeout from seconds to milliseconds 2017-07-08 09:47:51 +10:00
Ronnie Sahlberg e27453b4a9 Make valgrind happy for libnfs_zdr_bytes
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 07:56:23 +10:00
Ronnie Sahlberg 2b764fa926 NFSv4: Add support for nfs_stat64()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-08 07:41:11 +10:00
Ronnie Sahlberg 56194deeee NFS4: Add support to nfs_mount()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-06 10:04:17 +10:00
Ronnie Sahlberg 70197d5ab8 TETS: rename the tests
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-04 08:43:55 +10:00
Ronnie Sahlberg 4ed461ffee TESTS Add tests for nfs_open()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-04 08:18:13 +10:00
Ronnie Sahlberg 2762897585 Typos
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-04 07:00:30 +10:00
Ronnie Sahlberg 673860b1bf Reformat socket.c
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 11:31:29 +10:00
Ronnie Sahlberg c9e546ba3c Reformat libnfs.h
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 11:07:58 +10:00
Ronnie Sahlberg 6144c01732 TESTS: Add path and valgrind leak tests for nfs_fstat64()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 10:27:03 +10:00
Ronnie Sahlberg 422713e701 TESTS: Add path adn valgrind tests for nfs_stat64()
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 10:10:46 +10:00
Ronnie Sahlberg abf2f7fc70 TESTS: Split the leak checks tests out based on function
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 07:39:50 +10:00
Ronnie Sahlberg 6ea6002e08 Fix nfs_creat() so it works with local directories and add tests
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-03 07:01:07 +10:00
Ronnie Sahlberg 9fdc774bf3 TESTS: add tests for mknod
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-02 12:28:06 +10:00
Ronnie Sahlberg aff3099f00 TEST: add tests for nfs_link
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-02 10:42:19 +10:00
Ronnie Sahlberg c6ac1b5a14 Make nfs_unlink work for local paths and add tests
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-02 09:31:17 +10:00
Ronnie Sahlberg e1a2f9f5e7 Allow mkdir/rmdir to work for the local directory and add tests
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-02 08:52:36 +10:00
Ronnie Sahlberg 0c5732eb26 Fix SEGV in rename error paths and add tests
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-02 07:48:56 +10:00
Ronnie Sahlberg 903021ed59 TESTS: Tests and fixes for nfs_rename
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-01 17:10:23 +10:00
Ronnie Sahlberg ea94d4e3a6 nfs_symlink: Fix it so we can create symlinks in the current directory
Fix a bug in hte symlink code that required that linkname contained at least one
path component and thus prevented us from creating symlinks in the current
directory.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-01 10:19:00 +10:00
Ronnie Sahlberg 8fa13b3a90 TESTS: improve softlink tests and validate the links are visible locally
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-01 09:21:57 +10:00
Ronnie Sahlberg ad6f95d9f9 More reformatting of libnfs-raw.h
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-01 09:07:28 +10:00
Ronnie Sahlberg e1f01238d5 README: clarify status of nfsv4 support. I.e. not yet functional.
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
2017-07-01 08:44:25 +10:00
Ronnie Sahlberg 9776ca3a95 Merge branch 'nfsv4' 2017-07-01 08:43:23 +10:00