Deleted Added
full compact
2.t (1639) 2.t (108533)
1.\" Copyright (c) 1993
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" This document is derived from software contributed to Berkeley by
5.\" Rick Macklem at The University of Guelph.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions

--- 20 unchanged lines hidden (view full) ---

29.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33.\" SUCH DAMAGE.
34.\"
35.\" @(#)2.t 8.1 (Berkeley) 6/8/93
36.\"
1.\" Copyright (c) 1993
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" This document is derived from software contributed to Berkeley by
5.\" Rick Macklem at The University of Guelph.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions

--- 20 unchanged lines hidden (view full) ---

29.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33.\" SUCH DAMAGE.
34.\"
35.\" @(#)2.t 8.1 (Berkeley) 6/8/93
36.\"
37.\" $FreeBSD: head/share/doc/smm/06.nfs/2.t 108533 2003-01-01 18:49:04Z schweikh $
38.\"
37.sh 1 "Not Quite NFS, Crash Tolerant Cache Consistency for NFS"
38.pp
39Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
40consistency between clients in a crash tolerant manner.
41It is an adaptation of the NFS protocol such that the server supports both NFS
42and NQNFS clients while maintaining full consistency between the server and
43NQNFS clients.
44This section borrows heavily from work done on Spritely-NFS [Srinivasan89],

--- 77 unchanged lines hidden (view full) ---

122clock synchronization. There are three important time constants known to
123the server. The \fBmaximum_lease_term\fR sets an upper bound on lease duration.
124The \fBclock_skew\fR is added to all lease terms on the server to correct for
125differing clock speeds between the client and server and \fBwrite_slack\fR is
126the number of seconds the server is willing to wait for a client with
127an expired write caching lease to push dirty writes.
128.pp
129The server maintains a \fBmodify_revision\fR number for each file. It is
39.sh 1 "Not Quite NFS, Crash Tolerant Cache Consistency for NFS"
40.pp
41Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
42consistency between clients in a crash tolerant manner.
43It is an adaptation of the NFS protocol such that the server supports both NFS
44and NQNFS clients while maintaining full consistency between the server and
45NQNFS clients.
46This section borrows heavily from work done on Spritely-NFS [Srinivasan89],

--- 77 unchanged lines hidden (view full) ---

124clock synchronization. There are three important time constants known to
125the server. The \fBmaximum_lease_term\fR sets an upper bound on lease duration.
126The \fBclock_skew\fR is added to all lease terms on the server to correct for
127differing clock speeds between the client and server and \fBwrite_slack\fR is
128the number of seconds the server is willing to wait for a client with
129an expired write caching lease to push dirty writes.
130.pp
131The server maintains a \fBmodify_revision\fR number for each file. It is
130defined as a unsigned quadword integer that is never zero and that must
132defined as an unsigned quadword integer that is never zero and that must
131increase whenever the corresponding file is modified on the server.
132It is used
133by the client to determine whether or not cached data for the file is
134stale.
135Generating this value is easier said than done. The current implementation
136uses the following technique, which is believed to be adequate.
137The high order longword is stored in the ufs inode and is initialized to one
138when an inode is first allocated.

--- 256 unchanged lines hidden (view full) ---

395.)l
396Type of lease requested. NQLNONE is used to indicate no piggybacked lease
397request.
398.ip \(bu
399modifyrev
400.(l
401 typedef unsigned hyper modifyrev;
402.)l
133increase whenever the corresponding file is modified on the server.
134It is used
135by the client to determine whether or not cached data for the file is
136stale.
137Generating this value is easier said than done. The current implementation
138uses the following technique, which is believed to be adequate.
139The high order longword is stored in the ufs inode and is initialized to one
140when an inode is first allocated.

--- 256 unchanged lines hidden (view full) ---

397.)l
398Type of lease requested. NQLNONE is used to indicate no piggybacked lease
399request.
400.ip \(bu
401modifyrev
402.(l
403 typedef unsigned hyper modifyrev;
404.)l
403The "modifyrev" is a unsigned quadword integer value that is never zero
405The "modifyrev" is an unsigned quadword integer value that is never zero
404and increases every time the corresponding file is modified on the server.
405.ip \(bu
406nqnfs_time
407.(l
408 struct nqnfs_time {
409 unsigned seconds;
410 unsigned nano_seconds;
411 };

--- 119 unchanged lines hidden ---
406and increases every time the corresponding file is modified on the server.
407.ip \(bu
408nqnfs_time
409.(l
410 struct nqnfs_time {
411 unsigned seconds;
412 unsigned nano_seconds;
413 };

--- 119 unchanged lines hidden ---