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 --- |