History log of /haiku/src/add-ons/kernel/file_systems/nfs4/Inode.cpp
Revision Date Author Comments
# 6f7fc220 07-Mar-2016 Axel Dörfler <axeld@pinc-software.de>

NodeMonitor: Added B_WATCH_CHILDREN flag.

* Added a directory argument for notify_{stat/attribute}_changed().
* This allows to watch only a directory, and get the notifications for
all of its files, not just add/remove entry notifications.


# d072da23 20-Feb-2014 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Don't flush cache when closing read only share reservation

NFS4 specification requires that modified data has to be flushed before
sending CLOSE request. Our original implementation was stricter than that
by flushing all modified data at each file close. That caused problems
with e.g. Tracker, which likes to periodically open files for read only,
in a situation when there were still asynchronous writes pending
(e.g. large file copied).


# d94b1808 13-Jun-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use nothrow new when creating LockInfo


# 3ef8e34c 16-Apr-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: fix few issues related with file caches
* update metadata cache when writing to cache
* do not limit size of a io request
* minor checks in Inode::Write


# fa1ca5e2 08-Apr-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: use exponential backoff when the server ask to wait


# 469f13fd 25-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: support hard links properly

The main purpose of this patch is to prevent VFS from removing a vnode to early
what might have happened if the NFS client knew it had more than one name but
then one of them was deleted. Moreover, all discovered and still valid names
are stored what may be useful in proper file handle recovery when they are
volatile.

This patch fixes both #9558 and #9561.


# efc29cc5 21-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: update vnode objects and cached data when rename overrides a file
* this patch also fixes unnecessary cache invalidation when a file is renamed
without changing its parent directory


# bbd26dbf 21-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix #9558: in some cases sending SETATTR without open owner is legal


# edb12551 20-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix CID 991494: memory leak if acquiring a lock fails


# 18d2a360 20-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix #9556: wrong error handling in CreateObject


# 5bdf33bc 18-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove check for presence of mandatory attributes

This fixes CID 991495.


# c5a88cf7 12-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: VFS uses signed offsets while NFS4 expects unsigned


# 15a18a6b 16-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix write commit race condition


# 1c6f5025 16-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add not null assertions for Inode::fOpenState and fDelegation


# 4d120407 04-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove CacheRevalidator

There is no point in periodically revalidating all existing directory caches.
Directory snapshot can be revalidated when readdir is invoked.


# eed5b716 19-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix problems with reading directory entries
* Inode::ReadDir missed an entry when given buffer was too small
* Each OpenDirCookie now has its own copy of directory snapshot what
would prevent Inode::ReadDir from accessing freed memory when removing
files and reading directory entries simultaneously
* Several minor issues fixed


# 83444c23 03-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Complete outstanding AIO requests before releasing open state


# b352cbf6 03-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Introduce VnodeToInode mapping

VnodeToInode is another abstraction layer between VFS vnodes and NFS nodes.
It simplifies dealing with race conditions as well as faking some guarantees
VFS expects but NFS does not provide.


# fa5d300d 23-Aug-2012 François Revol <revol@free.fr>

nfs4: Fix timespec attribute allocation size

* copying the time attributes was fixed to copy the whole
st_?tim timespec struct but the allocation size was still only
that of st_?time subfield, which is only a time_t.

Signed-off-by: François Revol <revol@free.fr>
Signed-off-by: Pawel Dziepak <pdziepak@quarnos.org>


# 81f2b971 01-Nov-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix race condition between inode creation and removal

If the underlying file system reuses inode numbers it is possible that
an entry of inode with reused id in InodeIdMap will be removed.
This patch should also improve behavior when one of many hard links
is removed.


# 1e67a2cd 31-Oct-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add numerous assertion checks


# bcb18a9b 31-Oct-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4, dns_resolver: fix numerous style violations


# cae470f9 14-Sep-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix some cache revalidator problems


# dee0fd83 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Update FileInfo at rename


# 7c6cdb83 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix node removal


# 8568341a 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix bugs when metadata cache is disabled


# da950cb2 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix several problems with emulated attributes


# e8c12d94 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix file handle recovery


# 060a4636 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Make the client more configurable


# b1fd656d 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix server reboot recovery


# 0e0d53c7 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fill struct stat st_blksize and st_blocks fields


# 20d1b02e 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add basic support for extended attributes


# f7c35cf4 08-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add attribute directory related hooks


# 3ae5e813 07-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Implement node monitoring


# 49935f9b 06-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Check if user is allowed to use open state


# cde3994e 06-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Return delegation before open upgrade


# e2e5f06d 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not sync too often if delegation is held


# bfa20379 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Reclaim delegations after server reboot


# 4a153753 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Return delegations when asked to


# e743e243 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move cache management inside Inode class


# 52aaad17 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use one open state per inode


# eeabdab1 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not open too much files on server


# 7efb4c9b 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add ACCESS cache


# 0dbff361 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move low level NFS4 code to Inode's base class


# 13a90e37 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Revalidate cache before locks


# d4a75b9c 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use existing write cookie, do not send COMMIT if not necessary


# 0bc98afd 26-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Basic data cache implementation


# df6a5eae 24-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix several issues introduced in previous commits


# 7cac2f6e 19-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Local creation of node should not invalidate the cache


# 7b6f80fe 18-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not let local changes invalidate cache


# 75fe7b90 18-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add directory and name basic implementation


# 9cd76686 10-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Make Inode::Access() use cached attributes


# 78fc85a6 10-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Cache file attributes and filesystem info


# 00a8558c 08-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Rename Filehandle to FileHandle and Filesystem to FileSystem


# b664395b 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove several superfluous 'else'


# dd86fd8f 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add few lacking error checks after strdup() or malloc()


# 085c6e2d 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix double free at unmounting


# 8f57d30e 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Abandon owner and owner_group when id mapping causes problems


# 16ff38f8 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Support legacy owner and owner_group values


# 6197fa88 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Allow WriteStat() to set UID and GID


# ed097dd0 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not attempt to set owner, owner_group when not supported


# b2cea80c 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add id mapper


# 9b7f2d1b 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move file handle recovery code out of Inode class


# a28e8732 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use FileInfo instead of filehandle to identify a file


# 1a082070 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Allow the server to release unused lock owners


# 62869605 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add proper lock owners management


# ceed5fe0 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Solve confusion between bigtime_t and seconds


# 62167cc0 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: vfs makes sure that l_start + l_len <= OFF_MAX


# 87d2aacd 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Be careful when translating unsigned lock length to signed


# 89f05134 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Enforce checking lock type against open mode


# 574521e3 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use team_id instead of thread_id as lock owner


# 2a73e4c5 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Put file and dir specific code in separate files


# 2f03ff09 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add full support for lease migration


# 6ebe67d0 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use correct mode in share reclaimation


# 55f29309 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Filesystem is responsible for its opened files


# e586522b 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use MutexLocker for locking


# 97b7eb47 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Take advantage of supported_attrs attribute


# 4318f15f 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Check for reace conditions in filehandle recovery


# 0e1fd494 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: close() should also wake snoozing threads

When server returns error codes like LOCKED, DEALY, etc the client waits
some time before retrying (unless in O_NONBLOCK mode), close() should wake
snoozing threads.


# f7bf941a 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Verify inode number before opening a file


# ef629eaf 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix LookUp returning wrong error code if file doesn't exist


# 7d0b8c97 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for file locking


# 1c97a367 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_NONBLOCK mode


# 2f6ae723 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Read from st_*tim instead of st_*time


# 38a1270e 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Wrong filehandle used when creating a file


# abba2fdd 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add write_stat() hook


# 684d0a10 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Partial handling of NFS4ERR_LEASE_MOVED error


# 97378968 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix removing nodes other than NF4DIR or NF4REG


# 69adfb6d 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create_dir() hook


# e27b9ff7 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Improve handling errors in NFS replies


# 07f2e2d2 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Put all NFS error handling code in one function


# 38e72110 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_TRUNC mode


# 86d2cab3 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_APPEND mode


# 636e922e 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix cookie and vnode creation in create() hook


# e36a5442 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add write() hook


# 20bd3ee1 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create() hook


# f5baf2ef 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create_symlink() hook


# c0de7aca 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add link() hook


# cf511f24 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: unlink() and remove_dir() should check node type


# 6fb3845b 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add unlink() and remove_dir() hooks


# 1ec6b0c1 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add rename() hook


# be4c74ea 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: close*() should wake all blocked operations


# 19df56ac 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for server migration


# 47c4ae37 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix ReadDir() bug when skipping inodes


# 963a5e65 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Forbid accessing multiple NFS4 filesystems from one local mount

Haiku assumes that a pair dev_t:ino_t uniquely identifies a file. That may not be the case if we allow multiple filesystems share one dev_t.


# 5a451a54 16-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix OPEN and CLOSE sequence numbers


# c702f887 16-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for volatile filehandles


# d1e6b61e 13-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Let opened files survive server reboot


# 8b499ea6 13-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Behave correctly if server is in grace period


# f2da914d 12-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read_symlink() hook


# 6ee3ed0f 12-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add per server NFS4 objects

RPC::Server is now able to store RPC programs data.
NFS4Server objects are currently used mainly for managing client id.


# 96e3dbc2 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Let stat() retrieve access, change, etc dates


# 0792abe0 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix timeout handling code


# d8a22387 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use ACCESS if server does not provide file mode


# e6e9b107 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Partial support for servers not providing FileId


# 01d6381d 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add Request class for better handling of NFS4 requests


# 631d9e98 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add access() hook


# 60a8140d 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add close() and free_cookie() hooks


# 2f2e57d0 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read() hook


# 2a292557 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add open() hook


# 87c6b832 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Inodes should know their name and parent's filehandle


# f29ac4af 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: readdir() should not read more than requested

Additionally, file attribute decoding checks more strictly whether
received data are sane.


# ed517d6c 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not store pointer to parent in inodes


# 7bfa4fe8 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add lookup() and get_vnode() hooks

get_vnode() needs a way to retrieve filehandle knowing only inode number.
Since NFS4 sever does not provide such services client manages its own mapping
between ino_t and filehandles.


# 4b48348f 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read_dir() hook


# 821f13b0 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add open_dir, close_dir and free_dir_cookie hooks


# 212de720 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add basic nfs4_read_stat() procedure

Not all data are retrieved and there is a room for improvement in handling
situations when server does not provide necessary information.


# d38e98d8 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Implement nfs4_mount() procedure


# bf31ee39 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add stub Inode class, fix and extend Filesystem class

Additionally PUTFH support is added to both RequestBuilder and
ReplyInterpreter.


# d072da23441ac6843722b30a8d2df68cbee16b5e 20-Feb-2014 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Don't flush cache when closing read only share reservation

NFS4 specification requires that modified data has to be flushed before
sending CLOSE request. Our original implementation was stricter than that
by flushing all modified data at each file close. That caused problems
with e.g. Tracker, which likes to periodically open files for read only,
in a situation when there were still asynchronous writes pending
(e.g. large file copied).


# d94b1808ec0146dcbc7254685a2054c95fbf9d9a 13-Jun-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use nothrow new when creating LockInfo


# 3ef8e34c0adbe5d9cd72a2dc526a8d4e7340d82d 16-Apr-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: fix few issues related with file caches
* update metadata cache when writing to cache
* do not limit size of a io request
* minor checks in Inode::Write


# fa1ca5e20c4aefee918ed52799fb2c99fbe846e3 08-Apr-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: use exponential backoff when the server ask to wait


# 469f13fdfe886f0eca9cc9204ad2e3da7377f7ba 25-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: support hard links properly

The main purpose of this patch is to prevent VFS from removing a vnode to early
what might have happened if the NFS client knew it had more than one name but
then one of them was deleted. Moreover, all discovered and still valid names
are stored what may be useful in proper file handle recovery when they are
volatile.

This patch fixes both #9558 and #9561.


# efc29cc57a620c89cbb0ac0be6dfaf522282441e 21-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: update vnode objects and cached data when rename overrides a file
* this patch also fixes unnecessary cache invalidation when a file is renamed
without changing its parent directory


# bbd26dbf1eaa93abda77ae00392bd4c2ab39e474 21-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix #9558: in some cases sending SETATTR without open owner is legal


# edb1255117f4f49c49281e72eefc0beaa5c28625 20-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix CID 991494: memory leak if acquiring a lock fails


# 18d2a3609e8bb8422b568deb1c481f38d9f90792 20-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix #9556: wrong error handling in CreateObject


# 5bdf33bc7a55acae20d715fb7527b676ca77fd49 18-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove check for presence of mandatory attributes

This fixes CID 991495.


# c5a88cf7e6c5f032e1aecea28cf3d90d0c1b7310 12-Mar-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: VFS uses signed offsets while NFS4 expects unsigned


# 15a18a6b891de5945e958b4de54c0fbb462bc5fa 16-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix write commit race condition


# 1c6f50254980bd074b0035b6bf459a3dec2ce4ee 16-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add not null assertions for Inode::fOpenState and fDelegation


# 4d120407378d6ec21783c076cdbb753e81a62eba 04-Jan-2013 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove CacheRevalidator

There is no point in periodically revalidating all existing directory caches.
Directory snapshot can be revalidated when readdir is invoked.


# eed5b716d0d47b766659295406c54f910dc1a092 19-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix problems with reading directory entries
* Inode::ReadDir missed an entry when given buffer was too small
* Each OpenDirCookie now has its own copy of directory snapshot what
would prevent Inode::ReadDir from accessing freed memory when removing
files and reading directory entries simultaneously
* Several minor issues fixed


# 83444c23219eb01b3d9ea95a9c288b6e811168c6 03-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Complete outstanding AIO requests before releasing open state


# b352cbf6ca8ed101ac83e0f87747b8be47dda1df 03-Dec-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Introduce VnodeToInode mapping

VnodeToInode is another abstraction layer between VFS vnodes and NFS nodes.
It simplifies dealing with race conditions as well as faking some guarantees
VFS expects but NFS does not provide.


# fa5d300d6b01032ece3f4d2dcf2391b6cc9a6ef1 23-Aug-2012 François Revol <revol@free.fr>

nfs4: Fix timespec attribute allocation size

* copying the time attributes was fixed to copy the whole
st_?tim timespec struct but the allocation size was still only
that of st_?time subfield, which is only a time_t.

Signed-off-by: François Revol <revol@free.fr>
Signed-off-by: Pawel Dziepak <pdziepak@quarnos.org>


# 81f2b97177995973754f099b35a0cdb66762508d 01-Nov-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix race condition between inode creation and removal

If the underlying file system reuses inode numbers it is possible that
an entry of inode with reused id in InodeIdMap will be removed.
This patch should also improve behavior when one of many hard links
is removed.


# 1e67a2cdd9414d6f699f253161d19d4aa8fe35e6 31-Oct-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add numerous assertion checks


# bcb18a9b361caf5ec949023dce39b831709a917d 31-Oct-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4, dns_resolver: fix numerous style violations


# cae470f9229eab46fe7e8dd8a8091f626504b394 14-Sep-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix some cache revalidator problems


# dee0fd8348ec064654517af747c9554c993eed4f 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Update FileInfo at rename


# 7c6cdb836049521a65ae47018e15020b1701dc5c 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix node removal


# 8568341ae61b9ecdd5f96b6167c5eb5589a20ed1 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix bugs when metadata cache is disabled


# da950cb2ef76ecc309a833bcf9cc748b16f78bc1 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix several problems with emulated attributes


# e8c12d9410d16c9a504198755b85c385e7ab667a 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix file handle recovery


# 060a4636e4a286dd70b9cbf335d12ddc10924937 16-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Make the client more configurable


# b1fd656d454ab89fbfdac09fda1b6aafd81bbe89 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix server reboot recovery


# 0e0d53c7995f23e83364ec628c9623041e2b22bc 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fill struct stat st_blksize and st_blocks fields


# 20d1b02eefc137b62fac748323e6747c7f9e6ef3 09-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add basic support for extended attributes


# f7c35cf464752e44ce966c9a12d61882f5387611 08-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add attribute directory related hooks


# 3ae5e813c43fe9602bbc5a06ee3821887f9e17cb 07-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Implement node monitoring


# 49935f9b4f55bfad77098bf6e2652c8163760bd6 06-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Check if user is allowed to use open state


# cde3994e6907eaa3324ce4918b259b65da290c84 06-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Return delegation before open upgrade


# e2e5f06d6e736c019ed37c475ff4f68e3c4f401c 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not sync too often if delegation is held


# bfa20379a3d5756dda6f3ebab0dcf52b6f4ca749 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Reclaim delegations after server reboot


# 4a153753100503cf374d01079fb29ca83d3ac44b 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Return delegations when asked to


# e743e243206509ccb41281a1aab140597bfb40b7 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move cache management inside Inode class


# 52aaad172fd93ba9b286d237dd299746e6458e1b 05-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use one open state per inode


# eeabdab19f7fe5d1a704d21cf0dbb67c0c80c8a7 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not open too much files on server


# 7efb4c9b493ccd82c277f013238cfc78aa8ab62d 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add ACCESS cache


# 0dbff361721c31a831a7adda62f198b6e6960b23 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move low level NFS4 code to Inode's base class


# 13a90e37953e4551e39dbe51feb6c1c92635c4d7 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Revalidate cache before locks


# d4a75b9c9f2d3d77613ee8f0acb66cabf2238377 03-Aug-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use existing write cookie, do not send COMMIT if not necessary


# 0bc98afd433d6b193773d937c06048b4ade01cd6 26-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Basic data cache implementation


# df6a5eaefa0e549032f0a58e9191679f2c1eb60c 24-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix several issues introduced in previous commits


# 7cac2f6e50588ad130d2770ada1b1981569a1602 19-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Local creation of node should not invalidate the cache


# 7b6f80fee2eee9724b8146cc480c0ffe87b25c32 18-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not let local changes invalidate cache


# 75fe7b90bbb751ea161dc6d4c81a3f8e694047b5 18-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add directory and name basic implementation


# 9cd76686f17b2ba8a1b0498a534d3a46e1fab541 10-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Make Inode::Access() use cached attributes


# 78fc85a6ba25da91d4a0a591d53e0fad073f50d9 10-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Cache file attributes and filesystem info


# 00a8558cc75d9aee84f6d9b34c28d6706952558c 08-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Rename Filehandle to FileHandle and Filesystem to FileSystem


# b664395b9e9243f5d2de962913803bad6e3e4751 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Remove several superfluous 'else'


# dd86fd8f4c72d0247d65b7916d13e95a63e53429 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add few lacking error checks after strdup() or malloc()


# 085c6e2d99dede3cc2e2b9631040201e2a8d78d7 04-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix double free at unmounting


# 8f57d30ea4934abc215ae850fa3612474087d7a3 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Abandon owner and owner_group when id mapping causes problems


# 16ff38f8289b93fe84a8e04aeddf33f9e78434fb 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Support legacy owner and owner_group values


# 6197fa881fea5641fd7c1433c3c1adf27c5d3fdf 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Allow WriteStat() to set UID and GID


# ed097dd0a27587d885a777401a519bf03991d62e 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not attempt to set owner, owner_group when not supported


# b2cea80ce5328c07e9f5c42c72213c186737aea5 03-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add id mapper


# 9b7f2d1b24a8f67aacc5f80434f9480a10f88e25 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Move file handle recovery code out of Inode class


# a28e873222fd2e506c495feede6fcf7a5425e143 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use FileInfo instead of filehandle to identify a file


# 1a0820703b7687877d1eb3d34d9d6b3a12064ddb 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Allow the server to release unused lock owners


# 62869605c565855e3293809a9974846fa50c423f 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add proper lock owners management


# ceed5fe0762ad5e37c023e420f46c913e46f022e 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Solve confusion between bigtime_t and seconds


# 62167cc0dafd86a0bdbf888d010140f6d1cf2370 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: vfs makes sure that l_start + l_len <= OFF_MAX


# 87d2aacd8b5fc30e4cabf8eb886eb8305f9e8a87 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Be careful when translating unsigned lock length to signed


# 89f0513425b174bc0ec51ca49d3ce0b4384c184b 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Enforce checking lock type against open mode


# 574521e3f0bd627db257165553af97cb40128fcb 02-Jul-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use team_id instead of thread_id as lock owner


# 2a73e4c578d91aa936a012a930d543154a94a1c0 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Put file and dir specific code in separate files


# 2f03ff09af62ad9036c0c90d6388de860deaf7ca 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add full support for lease migration


# 6ebe67d0d0a4157361f598e2890324c0713826d3 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use correct mode in share reclaimation


# 55f2930931f8ec0739f5fcabb8942813ff891d28 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Filesystem is responsible for its opened files


# e586522b518ec2fcb0212f55f3b83fb09e3516a3 28-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use MutexLocker for locking


# 97b7eb47f7d8baa3109902fb2b5d4000706edf50 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Take advantage of supported_attrs attribute


# 4318f15fa156865c22c3fc24250c582d82096975 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Check for reace conditions in filehandle recovery


# 0e1fd494e5376135714e2af0de5f1eb97b29f770 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: close() should also wake snoozing threads

When server returns error codes like LOCKED, DEALY, etc the client waits
some time before retrying (unless in O_NONBLOCK mode), close() should wake
snoozing threads.


# f7bf941a8c770ed5963f1598f268fec16908827e 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Verify inode number before opening a file


# ef629eaf23e52f315956c45fffe368a244ccb379 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix LookUp returning wrong error code if file doesn't exist


# 7d0b8c97865cb6a2ab1f534305913343de78ac50 27-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for file locking


# 1c97a367c56e45ea8121ce39f1f9f1639585ac2a 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_NONBLOCK mode


# 2f6ae7236d98a3400ea69b6a85b88d834a11a2a5 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Read from st_*tim instead of st_*time


# 38a1270e112ba367d35b8b38bb82c5933b417695 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Wrong filehandle used when creating a file


# abba2fddf17a30a2097f7e04c57b67b50f708ece 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add write_stat() hook


# 684d0a10368ef10ce0ad68ce09ecde8ca2d4bf12 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Partial handling of NFS4ERR_LEASE_MOVED error


# 97378968277307db7d9426a6fa253e9b133823c8 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix removing nodes other than NF4DIR or NF4REG


# 69adfb6de2fbb3d8a90071beb5576593228dc7b5 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create_dir() hook


# e27b9ff74286c8ea666594ea0f6af5207ccca4ee 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Improve handling errors in NFS replies


# 07f2e2d2b8531ac9a4ad340dcfb8ab58dc53a8d7 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Put all NFS error handling code in one function


# 38e721106d205d1c57f7f3119f669494be632e01 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_TRUNC mode


# 86d2cab33f5846228cb51382da46bc7185f7c676 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for O_APPEND mode


# 636e922e5c38aab48923a27a7f8d73300b7bda62 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix cookie and vnode creation in create() hook


# e36a54427c52d685efec2862cba812ac46a15ad4 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add write() hook


# 20bd3ee165c505a6105c7ca16b707db2a479ee05 26-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create() hook


# f5baf2ef9f3afe4df5e1565ba2651a0ae3ea38a9 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add create_symlink() hook


# c0de7aca1ccdb82519b67c63dfc5f4586fb9b368 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add link() hook


# cf511f2446a526785babcef7c74793911266cf53 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: unlink() and remove_dir() should check node type


# 6fb3845b38c8ab73fe79bc92a16604bfd3b9d209 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add unlink() and remove_dir() hooks


# 1ec6b0c1f74d5cc239bf210740ad35b9479b8ef6 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add rename() hook


# be4c74ead31246bd9b332f83a9e298969385fc4e 21-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: close*() should wake all blocked operations


# 19df56ac66b03acd52570ed050113652a5e93606 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for server migration


# 47c4ae37512708eb7cd2e8c05ad60e196e7764ad 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix ReadDir() bug when skipping inodes


# 963a5e658a898f898f8c07c56d8f29a31d01b82a 20-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Forbid accessing multiple NFS4 filesystems from one local mount

Haiku assumes that a pair dev_t:ino_t uniquely identifies a file. That may not be the case if we allow multiple filesystems share one dev_t.


# 5a451a5405216830bb61289f75c14ce8f3bc992d 16-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix OPEN and CLOSE sequence numbers


# c702f887ad5ef4665e3d45d2e2edda325a9d6290 16-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add support for volatile filehandles


# d1e6b61e2e9523967fce63900692bafe3765d10f 13-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Let opened files survive server reboot


# 8b499ea677bcd1317528c3cadc4b659c88c32888 13-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Behave correctly if server is in grace period


# f2da914d39a0dd3e6819bd7ddca4c4f95f9b9253 12-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read_symlink() hook


# 6ee3ed0f6f3da3a9d930837b75ab4e6416ce8cd8 12-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add per server NFS4 objects

RPC::Server is now able to store RPC programs data.
NFS4Server objects are currently used mainly for managing client id.


# 96e3dbc2d0e58ab0798ea433242696d982057fb6 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Let stat() retrieve access, change, etc dates


# 0792abe0062dc05163f5873f3753fe74a6e307c6 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Fix timeout handling code


# d8a223873f9743816a10660c41da8a3e05c74191 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Use ACCESS if server does not provide file mode


# e6e9b107de2da882cfbc24625942ec90f87cd530 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Partial support for servers not providing FileId


# 01d6381d20122ada695eefd7696b156800808662 11-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add Request class for better handling of NFS4 requests


# 631d9e9867f037d35944f4fce87fdfef5f63e4da 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add access() hook


# 60a8140ded7da888e1ebf0d03ac6c20130b08aeb 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add close() and free_cookie() hooks


# 2f2e57d03557301f838496118884de305d6abde8 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read() hook


# 2a292557d4bffd34841c3db2ee1095a1a51f0274 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add open() hook


# 87c6b83293724346b8b2899fb288fd28d200a5da 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Inodes should know their name and parent's filehandle


# f29ac4afd944ae3c279fae69ad325a3976b5fa82 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: readdir() should not read more than requested

Additionally, file attribute decoding checks more strictly whether
received data are sane.


# ed517d6c6220cb2e3357f24b98fc02fcdc6e1323 05-Jun-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Do not store pointer to parent in inodes


# 7bfa4fe80524316059e722a48b93e4266533f4ad 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add lookup() and get_vnode() hooks

get_vnode() needs a way to retrieve filehandle knowing only inode number.
Since NFS4 sever does not provide such services client manages its own mapping
between ino_t and filehandles.


# 4b48348f9747400f0a2b63544e2806b1e6943215 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add read_dir() hook


# 821f13b0779e068d43bdd380b4c9791a1aec3832 31-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add open_dir, close_dir and free_dir_cookie hooks


# 212de7205336baeee1889f9d5fb595e028b19a83 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add basic nfs4_read_stat() procedure

Not all data are retrieved and there is a room for improvement in handling
situations when server does not provide necessary information.


# d38e98d806f2ac17786ca558c16ebbfeb3e770f8 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Implement nfs4_mount() procedure


# bf31ee39e56f00cb60142910f1770e0a26b604b5 30-May-2012 Pawel Dziepak <pdziepak@quarnos.org>

nfs4: Add stub Inode class, fix and extend Filesystem class

Additionally PUTFH support is added to both RequestBuilder and
ReplyInterpreter.