Index: openafs/doc/arch/README
diff -c /dev/null openafs/doc/arch/README:1.1.2.2
*** /dev/null	Mon Apr 21 17:11:51 2008
--- openafs/doc/arch/README	Fri Mar 14 14:51:52 2008
***************
*** 0 ****
--- 1,7 ----
+ dafs-fsa.dot is a description of the finite-state machine for volume
+ states in the Demand Attach fileserver in Dot (http://www.graphviz.org)
+ format.  An invocation like:
+ 
+     dot -Tsvg dafs-fsa.dot > dafs-fsa.svg
+ 
+ will convert the description to an SVG file.
Index: openafs/doc/arch/dafs-fsa.dot
diff -c /dev/null openafs/doc/arch/dafs-fsa.dot:1.1.2.2
*** /dev/null	Mon Apr 21 17:11:51 2008
--- openafs/doc/arch/dafs-fsa.dot	Fri Mar 14 14:51:52 2008
***************
*** 0 ****
--- 1,109 ----
+ #
+ # This is a dot (http://www.graphviz.org) description of the various
+ # states volumes can be in for DAFS (Demand Attach File Server).
+ #
+ # Author: Steven Jenkins
+ # Date: 2007-05-24
+ #
+ 
+ digraph VolumeStates {
+ 	size="11,17"
+ 	graph [
+ 		rankdir = "TB"
+ 	];
+ 
+ 	subgraph clusterKey {
+ 		rankdir="LR";
+ 		shape = "rectangle";
+ 
+ 	s1 [ shape=plaintext, label = "VPut after VDetach in brown",
+ 			fontcolor="brown" ];
+ 	s2 [ shape=plaintext, label = "VAttach in blue",
+ 			fontcolor="blue" ];
+ 	s3 [ shape=plaintext, label = "VGet/VHold in purple",
+ 			fontcolor="purple" ];
+ 	s4 [ shape=plaintext, label = "Error States in red",
+ 			fontcolor="red" ];
+ 	s5 [ shape=plaintext, label = "VPut after VOffline in green",
+ 			fontcolor="green" ];
+ 	s6 [ shape=ellipse, label = "re-entrant" ];
+ 	s7 [ shape=ellipse, peripheries=2, label="non re-entrant" ];
+ 	s8 [ shape=ellipse, color="red", label="Error States" ];
+ 
+ 	s6->s7->s8->s1->s2->s3->s4->s5 [style="invis"];
+ 
+ 	}
+ 
+ 	node [ peripheries = "2" ] ATTACHING \
+ 		LOADING_VNODE_BITMAPS HDR_LOADING_FROM_DISK \
+ 		HDR_ATTACHING_LRU_PULL \
+ 		"UPDATING\nSYNCING_VOL_HDR_TO_DISK" \
+ 		OFFLINING DETACHING;
+ 	node [ shape = "ellipse", peripheries = "1" ];
+ 	node [ color = "red" ] HARD_ERROR SALVAGE_REQUESTED SALVAGING;
+ 
+ 	node [ color = "black" ]; // default back to black
+ 
+ 	UNATTACHED->Exclusive_vol_op_executing [label = "controlled by FSSYNC" ];
+ 	Exclusive_vol_op_executing->UNATTACHED  [label = "controlled by FSSYNC" ];
+ 	UNATTACHED->FREED [ label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ];
+ 	OFFLINING->UNATTACHED;
+ 	UNATTACHED->PREATTACHED [ color = "orange", label = "PreAttach()" ];
+ 	PREATTACHED->UNATTACHED [ color = "orange", label = "VOffline()"];
+ 	HARD_ERROR->PREATTACHED [ color = "orange", label = "operator intervention via FSSYNC" ];
+ 
+ 	PREATTACHED->Exclusive_vol_op_executing [color = "orange", label = "controlled by FSSYNC" ];
+ 	Exclusive_vol_op_executing->PREATTACHED [color = "orange", label = "controlled by FSSYNC" ];
+ 	PREATTACHED->FREED [ color = "orange", label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ];
+ 	PREATTACHED->ATTACHING [ color = "blue", weight = "8" ];
+ 	SALVAGING->PREATTACHED [ label = "controlled via FSSYNC" ];	
+ 
+ 	DETACHING->FREED ;
+ 	SHUTTING_DOWN->DETACHING [ color = "brown" ];
+ 	ATTACHED_nUsers_GT_0->SHUTTING_DOWN [ color = "orange", label = "VDetach()" ];
+ 
+ 	DETACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "brown" ];
+ 	"UPDATING\nSYNCING_VOL_HDR_TO_DISK"->DETACHING [ color = "brown" ];
+ 	OFFLINING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "green" ];
+ 	"UPDATING\nSYNCING_VOL_HDR_TO_DISK"->OFFLINING [ color = "green" ];
+ 	GOING_OFFLINE->OFFLINING [ color = "green" ];
+ 
+ 	"UPDATING\nSYNCING_VOL_HDR_TO_DISK"->SALVAGE_REQUESTED [ color = "red" ];	
+ 	"UPDATING\nSYNCING_VOL_HDR_TO_DISK"->ATTACHING [ color = "blue" ];	
+ 	ATTACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "blue" ];
+ 
+ 	ATTACHED_nUsers_GT_0->GOING_OFFLINE [ color = "orange", label = "VOffline" ];	
+ 	ATTACHED_nUsers_GT_0->ATTACHED_nUsers_EQ_0 [ color = "orange", label = "VPut" ];	
+ 
+ 	ATTACHED_nUsers_GT_0->SALVAGE_REQUESTED [ color = "red" ];
+ 
+ 	LOADING_VNODE_BITMAPS->ATTACHING [ color = "blue" ];
+ 	ATTACHING->LOADING_VNODE_BITMAPS [ color = "blue" ] ;
+ 	LOADING_VNODE_BITMAPS->SALVAGE_REQUESTED [ color = "red" ];
+ 	HDR_LOADING_FROM_DISK->SALVAGE_REQUESTED [ color = "red" ];
+ 	HDR_LOADING_FROM_DISK->ATTACHING [ color = "blue" ] ;
+ 	HDR_LOADING_FROM_DISK->ATTACHED_nUsers_GT_0 [ color = "purple" ];
+ 
+ 	SALVAGE_REQUESTED->SALVAGING [ label = "controlled via FSSYNC" ];
+ 	SALVAGE_REQUESTED->HARD_ERROR [ color = "red", 
+ 		label = "After hard salvage limit reached,\n hard error state is in effect\nuntil there is operator intervention" ];
+ 	
+ 	HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "blue" ];
+ 	HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "purple" ];
+ 	HDR_ATTACHING_LRU_PULL->ATTACHED_nUsers_GT_0 [ color = "purple", label = "header can be in LRU\nand not have been reclaimed\nthus skipping disk I/O" ];
+ 
+ 	ATTACHING->HDR_ATTACHING_LRU_PULL [ color = "blue" ];
+ 	ATTACHING->ATTACHED_nUsers_EQ_0 [ color = "blue" ];
+ 
+ 	ATTACHING->SALVAGE_REQUESTED [ color = "red" ];
+ 	ATTACHED_nUsers_EQ_0->HDR_ATTACHING_LRU_PULL [ color = "purple" ];
+ 	
+ 	ATTACHED_nUsers_EQ_0->SALVAGE_REQUESTED [ color = "red" ];
+ 
+ 	// Various loopback transitions
+ 	GOING_OFFLINE->GOING_OFFLINE [ label = "VPut when (nUsers > 1)" ];
+ 	SHUTTING_DOWN->SHUTTING_DOWN 
+ 		[ label = "VPut when ((nUsers > 1) ||\n((nUsers == 1) && (nWaiters > 0)))" ];
+ 	SHUTTING_DOWN->SHUTTING_DOWN
+ 		[ label = "VCancelReservation_r when ((nWaiters > 1)\n|| ((nWaiters == 1) && (nUsers > 0)))"];	
+ } 
Index: openafs/doc/man-pages/README
diff -c openafs/doc/man-pages/README:1.8.2.17 openafs/doc/man-pages/README:1.8.2.18
*** openafs/doc/man-pages/README:1.8.2.17	Tue Feb 19 10:28:55 2008
--- openafs/doc/man-pages/README	Tue Apr  1 02:57:18 2008
***************
*** 213,219 ****
         vldb_convert
         vos clone
         vos setfields
-        vos shadow
         vsys
  
     * klog.krb, pagsh.krb, and tokens.krb need to be listed as alternative
--- 213,218 ----
Index: openafs/doc/man-pages/pod1/vos_shadow.pod
diff -c /dev/null openafs/doc/man-pages/pod1/vos_shadow.pod:1.1.2.2
*** /dev/null	Mon Apr 21 17:11:52 2008
--- openafs/doc/man-pages/pod1/vos_shadow.pod	Tue Apr  1 02:57:19 2008
***************
*** 0 ****
--- 1,174 ----
+ =head1 NAME
+ 
+ vos_shadow - Creates a shadow copy of a volume on a different server/partition
+ 
+ =head1 SYNOPSIS
+ 
+ =for html
+ <div class="synopsis">
+ 
+ B<vos shadow> S<<< [B<-id>] <I<volume name or ID on source>> >>>
+     S<<< [B<-fromserver>] <I<machine name on source>> >>>
+     S<<< [B<-frompartition>] <I<partition name on source>> >>>
+     S<<< [B<-toserver>] <I<machine name on destination>> >>>
+     S<<< [B<-topartition>] <I<partition name on destination>> >>>
+     S<<< [B<-toname> <I<volume name on destination>>] >>>
+     S<<< [B<-toid> <I<volume ID on destination>>] >>> [B<-offline>] [B<-readonly>]
+     [B<-live>] [B<-incremental>] S<<< [B<-cell> <I<cell name>>] >>> [B<-noauth>]
+     [B<-localauth>] [B<-verbose>] [B<-encrypt>] [B<-help>]
+ 
+ =for html
+ </div>
+ 
+ =head1 DESCRIPTION
+ 
+ The B<vos shadow> command creates a shadow copy of a volume on a
+ different partition or server.
+ 
+ A shadow volume is a copy of a volume that does not normally appear in
+ the volume location database (VLDB). It is a primitive operation that
+ is meant to be used in backup or disaster recovery situations.
+ 
+ =head1 CAUTIONS
+ 
+ This command is not used during normal OpenAFS administration and may
+ have adverse effects on the VLDB if not used properly! This command
+ should only be used by an expert.
+ 
+ Using this command on a volume when the source volume is not the same
+ as parent volume used to create the shadow will leave the destination
+ volume in a unknown state.
+ 
+ Do NOT run the B<vos syncserv> or B<vos syncvldb> on any fileserver
+ containing shadow volumes. This would update the VLDB to show all
+ shadowed Read/Write volumes instead of the source volumes from which
+ they were copied.
+ 
+ Currently, the maximum size of a volume is 2 terabytes (2^31 bytes).
+ 
+ =head1 OPTIONS
+ 
+ =over 4
+ 
+ =item [B<-id>] <I<volume name or ID>>
+ 
+ Specifies either the complete name or volume ID number of a read/write
+ volume.
+ 
+ =item [B<-fromserver>] <I<machine name for source>>
+ 
+ Identifies the file server machine where the source volume resides. Provide
+ the machine's IP address or its host name (either fully qualified or using
+ an unambiguous abbreviation). For details, see L<vos(1)>.
+ 
+ =item [B<-frompartition>] <I<partition name for source>>
+ 
+ Names the partition where the source volume resides. Provide the full
+ partition name (for, example, B</vicepa>) or one of the abbreviated forms
+ described in L<vos(1)>.
+ 
+ =item [B<-toserver>] <I<machine name for destination>>
+ 
+ Identifies the file server machine to which to copy the volume.  Provide
+ the machine's IP address or its host name (either fully qualified or using
+ an unambiguous abbreviation). For details, see L<vos(1)>.
+ 
+ =item [B<-topartition>] <I<partition name for destination>>
+ 
+ Names the partition to which to copy the volume. Provide the full partition
+ name (for, example, B</vicepa>) or one of the abbreviated forms described in
+ L<vos(1)>.
+ 
+ =item B<-toname> <I<volume name for new copy>>
+ 
+ The complete name of the new volume to create.
+ 
+ =item B<-offline>
+ 
+ Leaves the new volume flagged as off-line in the volume database.
+ 
+ =item B<-readonly>
+ 
+ Flags the new volume as read-only in the volume database.
+ 
+ =item B<-live>
+ 
+ Copies the live volume without cloning.  This is normally not necessary and
+ causes the volume to be kept locked for longer than the normal copy
+ mechanism.
+ 
+ =item B<-incremental>
+ 
+ Copy the changes from the source volume to a previously created shadow
+ volume.
+ 
+ =item B<-cell> <I<cell name>>
+ 
+ Names the cell in which to run the command. Do not combine this argument
+ with the B<-localauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-noauth>
+ 
+ Assigns the unprivileged identity C<anonymous> to the issuer. Do not
+ combine this flag with the B<-localauth> flag. For more details, see
+ L<vos(1)>.
+ 
+ =item B<-localauth>
+ 
+ Constructs a server ticket using a key from the local
+ F</usr/afs/etc/KeyFile> file. The B<vos> command interpreter presents
+ it to the Volume Server and Volume Location Server during mutual
+ authentication. Do not combine this flag with the B<-cell> argument or
+ B<-noauth> flag. For more details, see L<vos(1)>.
+ 
+ =item B<-verbose>
+ 
+ Produces on the standard output stream a detailed trace of the command's
+ execution. If this argument is omitted, only warnings and error messages
+ appear.
+ 
+ =item B<-encrypt>
+ 
+ Encrypts the command so that the operation's results are not transmitted
+ across the network in clear text.
+ 
+ =item B<-help>
+ 
+ Prints the online help for this command. All other valid options are
+ ignored.
+ 
+ =back
+ 
+ =head1 OUTPUT
+ 
+ This command has no output unless C<-verbose> is specified or there is
+ an error.
+ 
+ =head1 PRIVILEGE REQUIRED
+ 
+ The issuer must be listed in the F</usr/afs/etc/UserList> file on the
+ machines specified with the B<-toserver> and B<-fromserver> arguments and
+ on each database server machine.  If the B<-localauth> flag is included,
+ the issuer must instead be logged on to a server machine as the local
+ superuser C<root>.
+ 
+ =head1 SEE ALSO
+ 
+ L<vos(1)>,
+ L<vos_backup(1)>,
+ L<vos_copy(1)>,
+ L<vos_move(1)>
+ 
+ L<http://www.openafs.org/pipermail/openafs-info/2005-July/018469.html>
+ discusses motivation for the creation of this command.
+ 
+ L<http://workshop.openafs.org/afsbpw06/talks/drh.scs.html> discusses
+ one possible use for it.
+ 
+ =head1 COPYRIGHT
+ 
+ Copyright 2008 Jason Edgecombe <jason@rampaginggeek.com>
+ 
+ This documentation is covered by the BSD License as written in the
+ doc/LICENSE file. This man page was written by Jason Edgecombe for
+ OpenAFS.
Index: openafs/doc/man-pages/pod8/buserver.pod
diff -c openafs/doc/man-pages/pod8/buserver.pod:1.5 openafs/doc/man-pages/pod8/buserver.pod:1.5.2.1
*** openafs/doc/man-pages/pod8/buserver.pod:1.5	Wed Mar  1 00:02:31 2006
--- openafs/doc/man-pages/pod8/buserver.pod	Wed Apr  2 15:51:53 2008
***************
*** 9,16 ****
  
  B<buserver> S<<< [B<-database> <I<database directory>>] >>>
      S<<< [B<-cellservdb> <I<cell configuration directory>>] >>> [B<-resetdb>]
!     [B<-noauth>] [B<-smallht>] [-servers <I<list of ubik database servers>>+]
!     [B<-enable_peer_stats>]  [-enable_process_stats] [B<-help>]
  
  =for html
  </div>
--- 9,17 ----
  
  B<buserver> S<<< [B<-database> <I<database directory>>] >>>
      S<<< [B<-cellservdb> <I<cell configuration directory>>] >>> [B<-resetdb>]
!     [B<-noauth>] [B<-smallht>] [B<-servers> <I<list of ubik database servers>>+]
!     [B<-enable_peer_stats>]  [B<-enable_process_stats>] [B<-rxbind>]
!     [B<-p> <I<number of threads>>] [B<-help>]
  
  =for html
  </div>
***************
*** 115,120 ****
--- 116,131 ----
  other machines. To display or otherwise access the records, use the Rx
  Monitoring API.
  
+ =item B<-rxbind>
+ 
+ Bind the Rx socket to the primary interface only.  (If not specified, the
+ Rx socket will listen on all interfaces.)
+ 
+ =item B<-p> <I<number of threads>>
+ 
+ Sets the number of server lightweight processes (LWPs or pthreads) to run.
+ Provide a positive integer from the range 3 to 16. The default value is 3.
+ 
  =item B<-help>
  
  Prints the online help for this command. All other valid options are
Index: openafs/doc/man-pages/pod8/ptserver.pod
diff -c openafs/doc/man-pages/pod8/ptserver.pod:1.3.2.1 openafs/doc/man-pages/pod8/ptserver.pod:1.3.2.2
*** openafs/doc/man-pages/pod8/ptserver.pod:1.3.2.1	Tue Jan 22 23:18:10 2008
--- openafs/doc/man-pages/pod8/ptserver.pod	Wed Apr  2 15:51:53 2008
***************
*** 7,15 ****
  =for html
  <div class="synopsis">
  
! B<ptserver> S<<< [B<-database> <I<db path>>] >>> S<<< [B<-p> <I<number of processes>>] >>>
      [B<-rebuildDB>] [B<-enable_peer_stats>] [B<-enable_process_stats>]
!     [B<-allow-dotted-principal>] [B<-help>]
  
  =for html
  </div>
--- 7,15 ----
  =for html
  <div class="synopsis">
  
! B<ptserver> S<<< [B<-database> <I<db path>>] >>> S<<< [B<-p> <I<number of threads>>] >>>
      [B<-rebuildDB>] [B<-enable_peer_stats>] [B<-enable_process_stats>]
!     [B<-allow-dotted-principal>] [B<-rxbind>] [B<-help>]
  
  =for html
  </div>
***************
*** 63,72 ****
  example, the appropriate value for the default database files is
  F</usr/afs/db/prdb>.
  
! =item B<-p> <I<number of processes>>
  
! Sets the number of server lightweight processes (LWPs) to run.  Provide a
! positive integer from the range C<3> to C<16>. The default value is C<3>.
  
  =item B<-rebuildDB>
  
--- 63,73 ----
  example, the appropriate value for the default database files is
  F</usr/afs/db/prdb>.
  
! =item B<-p> <I<number of threads>>
  
! Sets the number of server lightweight processes (LWPs or pthreads) to run.
! Provide a positive integer from the range C<3> to C<16>. The default
! value is C<3>.
  
  =item B<-rebuildDB>
  
***************
*** 99,104 ****
--- 100,110 ----
  between principal names may disable this check by starting the server
  with this option.
  
+ =item B<-rxbind>
+ 
+ Bind the Rx socket to the primary interface only.  (If not specified, the
+ Rx socket will listen on all interfaces.)
+ 
  =item B<-help>
  
  Prints the online help for this command. All other valid options are
Index: openafs/doc/man-pages/pod8/vlserver.pod
diff -c openafs/doc/man-pages/pod8/vlserver.pod:1.3.2.1 openafs/doc/man-pages/pod8/vlserver.pod:1.3.2.2
*** openafs/doc/man-pages/pod8/vlserver.pod:1.3.2.1	Tue Jan 22 23:18:10 2008
--- openafs/doc/man-pages/pod8/vlserver.pod	Wed Apr  2 15:51:53 2008
***************
*** 7,13 ****
  =for html
  <div class="synopsis">
  
! B<vlserver> S<<< [B<-p> <I<lwp processes>>] >>> [B<-nojumbo>]
      [B<-allow-dotted-principal>] [B<-enable_peer_stats>] [B<-enable_process_stats>] 
      [B<-help>]
  
--- 7,13 ----
  =for html
  <div class="synopsis">
  
! B<vlserver> S<<< [B<-p> <I<number of threads>>] >>> [B<-nojumbo>] [B<-rxbind>]
      [B<-allow-dotted-principal>] [B<-enable_peer_stats>] [B<-enable_process_stats>] 
      [B<-help>]
  
***************
*** 55,64 ****
  
  =over 4
  
! =item B<-p> <I<lwp processes>>
  
! Sets the number of server lightweight processes (LWPs) to run.  Provide an
! integer between C<4> and C<16>. The default is C<9>.
  
  =item B<-nojumbo>
  
--- 55,64 ----
  
  =over 4
  
! =item B<-p> <I<number of threads>>
  
! Sets the number of server lightweight processes (LWPs or pthreads) to run.
! Provide an integer between C<3> and C<16>. The default is C<9>.
  
  =item B<-nojumbo>
  
***************
*** 93,98 ****
--- 93,103 ----
  between principal names may disable this check by starting the server
  with this option.
  
+ =item B<-rxbind>
+ 
+ Bind the Rx socket to the primary interface only.  (If not specified, the
+ Rx socket will listen on all interfaces.)
+ 
  =item B<-help>
  
  Prints the online help for this command. All other valid options are
Index: openafs/doc/txt/winnotes/afs-changes-since-1.2.txt
diff -c openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.50 openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.51
*** openafs/doc/txt/winnotes/afs-changes-since-1.2.txt:1.72.2.50	Fri Mar 21 13:17:41 2008
--- openafs/doc/txt/winnotes/afs-changes-since-1.2.txt	Mon Apr 21 11:51:28 2008
***************
*** 1,3 ****
--- 1,46 ----
+ Since 1.5.34
+  * Fix a bug preventing the re-initialization of the Freelance 
+    root.cell contents when a change is made.
+ 
+  * Properly return CM_ERROR_NOSUCHFILE when removing a symlink 
+    or mountpoint that does not exist.
+ 
+  * aklog, afscreds, integrated logon, and the NIM AFS credential 
+    provider will all attempt to first acquire an afs service ticket 
+    using the service principal: afs/<cell>@<CLIENT_REALM>.  This 
+    permits the proper detection of the cell realm when multiple 
+    realms are local realms for the cell.
+ 
+  * Fix fs commands that re-use file identifiers instead of forcing 
+    a path evaluation each time.  This was broken in 1.5.33 when 
+    hashes were added to the cm_fid_t structure.
+ 
+  * Fix symlink and mountpoint removal and then recreation when 
+    applied to the fake Freelance root.afs volume.
+ 
+  * Fix SMB change notifications for the Freelance root.afs volume 
+    when creating or removing symlinks and mount points.
+ 
+  * Force DNS AFSDB cell name lookups to lower case if the DNS 
+    response is not all lower case.
+ 
+  * 32-bit installers are now built with Visual Studio 2005
+ 
+  * All vos.exe commands now support the "-noresolve" option which 
+    forces the display of IP addresses instead of DNS hostnames.
+ 
+  * No longer hold the cm_volume_t mutex across VL_xxx RPCs.  This 
+    permits operations that do not require up to date volume 
+    location data to continue while waiting for the RPC to complete.  
+    Multiple threads waiting for a volume location update on the 
+    same volume set no longer trigger multiple calls VL_xxx RPCs.
+ 
+  * Volume server references could be marked offline and never 
+    reset to the not_busy state.  
+ 
+  * Further optimizations to cm_Analyze() retry logic for 
+    CM_ERROR_OFFLINE and CM_ERROR_ALLBUSY error handling.
+ 
  Since 1.5.33
   * Optimize the DNLC by applying Interlocked incrementing for 
     statistics gathering and enabling greater use of read 
