<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/nfsclient, branch releng/7.3</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F7.3</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F7.3'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2010-05-27T03:15:04Z</updated>
<entry>
<title>Change the current working directory to be inside the jail created by</title>
<updated>2010-05-27T03:15:04Z</updated>
<author>
<name>Colin Percival</name>
<email>cperciva@FreeBSD.org</email>
</author>
<published>2010-05-27T03:15:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=48a2dfb35961f9d14a3580b0fe97a3eb5dc486c0'/>
<id>urn:sha1:48a2dfb35961f9d14a3580b0fe97a3eb5dc486c0</id>
<content type='text'>
the jail(8) command. [10:04]

Fix a one-NUL-byte buffer overflow in libopie. [10:05]

Correctly sanity-check a buffer length in nfs mount. [10:06]

Approved by:	so (cperciva)
Approved by:	re (kensmith)
Security:	FreeBSD-SA-10:04.jail
Security:	FreeBSD-SA-10:05.opie
Security:	FreeBSD-SA-10:06.nfsclient
</content>
</entry>
<entry>
<title>MFC 198174:</title>
<updated>2009-10-23T19:53:04Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2009-10-23T19:53:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=bf63f02306f24f163c39bdf896502724d5a35029'/>
<id>urn:sha1:bf63f02306f24f163c39bdf896502724d5a35029</id>
<content type='text'>
Close a race with caching of -ve name lookups in the NFS client.
Specifically, clients only trust -ve cache entries while the directory
remains unchanged and discard any -ve cache entries for a directory when
they notice that the modification time of a directory entry changes.  The
race involves two concurrent lookups as follows:
- Thread A does a lookup for file 'foo' which sends a lookup RPC to the
  server.  The lookup fails and the server replies.
- The 'foo' file is created (either by the same client or a different
  client) updating the modification time on the parent directory of 'foo'.
- Thread B does a lookup for a different file 'bar' which updates the
  cached attributes of the parent directory of 'foo' to reflect the new
  modification time after 'foo' was created.
- Thread A finally resumes execution to parse the reply from the NFS
  server.  It adds a -ve cache entry and sets the cached value of the
  directory's modification time that is used for invalidating -ve cached
  lookups to the new modification time set by thread B.

At this point, future lookups of 'foo' will honor the -ve cached entry
until the cached entry is pushed out of the name cache's LRU or the
modification time of the parent directory is changed again by some other
change.  The fix is to read the directory's modification time before
sending the lookup RPC and use that cached modification time when setting
the directory's cached modification time.  Also, we do not add a -ve cache
entry if another thread has added -ve cache entry that set the directory's
cached modification time to a newer value than the value we read before
sending the lookup RPC.
</content>
</entry>
<entry>
<title>MFC: Add caching of -ve lookups to the NFS client.  To prevent clients from</title>
<updated>2009-05-15T20:36:54Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2009-05-15T20:36:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a43e11c99c1375e73805e23c14866f5c8179b977'/>
<id>urn:sha1:a43e11c99c1375e73805e23c14866f5c8179b977</id>
<content type='text'>
not noticing new files created by another client for a "long" time, reduce
the default timeout for caching attributes of directories from 30 seconds
to 3 seconds.
</content>
</entry>
<entry>
<title>Reimplement r189287 for -stable:</title>
<updated>2009-04-12T17:43:41Z</updated>
<author>
<name>Alexander Kabaev</name>
<email>kan@FreeBSD.org</email>
</author>
<published>2009-04-12T17:43:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=66fc931eec84a2fa5a9068e9d8771a0fe42eb0ad'/>
<id>urn:sha1:66fc931eec84a2fa5a9068e9d8771a0fe42eb0ad</id>
<content type='text'>
Change vfs_busy to wait until an outcome of pending unmount
operation is known and to retry or fail accordingly to that
outcome. This fixes the problem with namespace traversing
programs failing with random ENOENT errors if someone just
happened to try to unmount that same filesystem at the same
time.

Prodded by:	dhw, obrien
Approved by:	re(kib)
Sponsored by:	Juniper Networks, Inc.
</content>
</entry>
<entry>
<title>MFC 183005, 187812:</title>
<updated>2009-03-23T08:33:19Z</updated>
<author>
<name>Craig Rodrigues</name>
<email>rodrigc@FreeBSD.org</email>
</author>
<published>2009-03-23T08:33:19Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6eeb699cb509abd927f1c3c00fd192e0048fb896'/>
<id>urn:sha1:6eeb699cb509abd927f1c3c00fd192e0048fb896</id>
<content type='text'>
Add code to parse mount options passed as individual
items of the nmount() iovec.
</content>
</entry>
<entry>
<title>MFC: Add a new vfs.nfs.prime_access_cache sysctl to determine whether or</title>
<updated>2009-03-20T15:52:11Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2009-03-20T15:52:11Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=ea35732c7b84afcc73faea2deca38c08559e7219'/>
<id>urn:sha1:ea35732c7b84afcc73faea2deca38c08559e7219</id>
<content type='text'>
not nfs_getattr() will use an ACCESS RPC to prime the access cache instead
of a simple GETATTR RPC.  The sysctl defaults to enabled to maintain the
previous behavior.
</content>
</entry>
<entry>
<title>MFC: Don't clear the attribute cache of a file when it is closed.</title>
<updated>2009-02-26T18:55:55Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2009-02-26T18:55:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=c162d7ede7a4a8b25f17682cb45f4cee683b2220'/>
<id>urn:sha1:c162d7ede7a4a8b25f17682cb45f4cee683b2220</id>
<content type='text'>
</content>
</entry>
<entry>
<title>MFC r183211:</title>
<updated>2009-01-21T15:51:15Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2009-01-21T15:51:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1a037be619deeea5bdabca65dc3324d61cbccaef'/>
<id>urn:sha1:1a037be619deeea5bdabca65dc3324d61cbccaef</id>
<content type='text'>
Initialize birthtime fields in vn_stat() to prevent stat(2) from
returning uninitialized birthtime. Most file systems don't initialize
birthtime properly in their VOP_GETTATTR().

MFC r183212:
Initialize va_flags and va_filerev properly in VOP_GETATTR(). Don't
initialize va_vaflags and va_spare because they are not part of the
VOP_GETATTR() API. Also don't initialize birthtime to ctime or zero.

MFC rr183213:
Initialize va_rdev to NODEV and va_fsid to VNOVAL before the
VOP_GETATTR() call in vn_stat(). Thus if a file system doesn't
initialize those fields in VOP_GETATTR() they will have a sane default
value.

MFC r183214:
Initialize va_rdev to NODEV instead of 0 or VNOVAL in VOP_GETATTR().
NODEV is more appropriate when va_rdev doesn't have a meaningful value.

MFC r183215:
fdescfs, devfs, mqueuefs, nfs, portalfs, pseudofs, tmpfs and xfs
initialize the vattr structure in VOP_GETATTR() with VATTR_NULL(),
vattr_null() or by zeroing it. Remove these to allow preinitialization
of fields work in vn_stat(). This is needed to get birthtime initialized
correctly.
</content>
</entry>
<entry>
<title>MFC: Close several races with using shared vnode locks for pathname lookups</title>
<updated>2009-01-20T19:01:59Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2009-01-20T19:01:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5884081241a6b9931e4fd04cff92db32ee4955ba'/>
<id>urn:sha1:5884081241a6b9931e4fd04cff92db32ee4955ba</id>
<content type='text'>
with UFS and enable shared lookups for UFS.
- Change the name cache to fail lookups with EBADF if a directory vnode
  is recycled while it waits for a lock upgrade.
- Rework the locking of the dirhash to use an sx lock and reference count
  on each hash structure.  Using an sx lock instead of a mutex allows the
  lock to be held across disk I/O closing a number of races when using
  shared vnode locks that were previously handled by exclusive vnode
  locks.
- Remove the 'i_ino' and 'i_reclen' fields from the i-node.  i_ino is now
  a local variable in ufs_lookup(), and i_reclen is not needed since
  ufs_dirremove() always has the entire block holding the directory
  entry in memory when it updates the directory.
- 'i_diroff' and 'i_offset' are now local variables in ufs_lookup().
  'i_diroff' is updated after a successful lookup.
- Only set i_offset in the parent directory's i-node during a lookup for
  non-LOOKUP operations.
- Remove the LOOKUP_SHARED option.  One can set vfs.lookup_shared to 1
  in either loader.conf or sysctl.conf instead.  The default setting for
  vfs.lookup_shared is not changed and remains off by default.
</content>
</entry>
<entry>
<title>MFC: r180025,180064,180069,180217,180743,180779-180780</title>
<updated>2008-08-05T10:35:51Z</updated>
<author>
<name>Doug Rabson</name>
<email>dfr@FreeBSD.org</email>
</author>
<published>2008-08-05T10:35:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=822c10db3d0bc051cb80ff537d806743e2ca8728'/>
<id>urn:sha1:822c10db3d0bc051cb80ff537d806743e2ca8728</id>
<content type='text'>
Implement support for NFS advisory locking in the kernel including correct
semantics for flock(2) style locks.

Sponsored by:	Isilon Systems
PR:		94256
</content>
</entry>
</feed>
