Windows: RDR RXAFS_GetVolumeStatus vs 1.1 'l' only
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 3 Jul 2012 19:38:33 +0000 (15:38 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Wed, 4 Jul 2012 14:05:34 +0000 (07:05 -0700)
commit561b9ce80938d316223f2b313f8224fe06af9d5a
tree96079ff179804d3ed9913cc7d9ecd121bfcc3d69
parent261ec65f20df46ed043d16a869d042cf61c6eda7
Windows: RDR RXAFS_GetVolumeStatus vs 1.1 'l' only

The Windows redirector relies upon the ability to obtain volume
status information to decide whether a file system volume object
can be created and whether or not an extending write can be
permitted.  As of this writing, the file server always performs
a PRFS_READ access check on the volume's root directory (1.1)
vnode as a condition for releasing the volume state information
which includes:

  Message of the day (if any)
  Offline message (if any)
  Online flag
  InService flag
  Blessed flag
  NeedsSalvage flag
  Type
  MinQuota
  MaxQuota
  BlocksInUse
  PartBlocksAvail
  PartMaxBlocks

All of this information is publicly available to anonymous users
via "vos examine" so it is odd that it is hidden from anonymous
cache managers.  When RXAFS_GetVolumeStatus fails, the AFS redirector
was failing to create a file system object for the AFS volume.  That
in turn prevented the volume from being accessed even if the user
had 'l' in the root directory and full access everywhere else.

This patchset will make up fake data for the AFS volume if the
RPC fails.  However, doing so does have consequences.  The client
will be unable to make an accurate determination regarding free space
on the file server.  As a result, an extending write may be permitted
which writes data into the system page cache which in turn cannot
be written to the file server.   Such data will be lost and unrecoverable.

Change-Id: Ic818ce9d51893181941f41d6628394b5917dc811
Reviewed-on: http://gerrit.openafs.org/7704
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
src/WINNT/afsrdr/user/RDRFunction.c