[AFS3-std] File Server/Cache Manager Extended Status Information

Matt Benjamin matt@linuxbox.com
Sun, 06 Apr 2008 18:05:31 -0400


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Jeffrey Altman wrote:
| Matt Benjamin wrote:
|> Changes to file access permissions are added, because they were
|> enumerated by Jeff Altman as of interest.  Some details in this area are
|> not finalized, and feedback/discussion is requested.  Locking specific
|> change notifications are omitted (just the NotificationType flag is
|> included) to simplify discussion.  We expect to send a separate proposal
|> on locking interfaces.
| You misunderstood our discussion.

Our discussion was terminated by you you, before I could get any
clarification on your ideas.

ACL changes are not an area of interest.
| They are one of the reasons that BreakCallback() is executed in the file
| server.
|
| The full list includes:
|
|    * StoreACL
|    * StoreData
|    * StoreStatus
|    * RemoveFile
|    * CreateFile
|    * RenameFile
|    * Symlink
|    * Link
|    * MakeDir
|    * RemoveDir
|    * ReleaseLock
|    * when the callback is dropped by the file server due to lack of space

Ok.  Using the pseudo-prototypes below, there are a variety of disjoint
messages, tagged by a type.  Do you object to the idea of distinct
CallBack RPCs to pass these data?  I would prefer not to define a giant
structure, and although rx seems to support a "union" type, I don't see
anyone using it in published RPCs.  That preference was implicit in the
document I sent.

|> typedef    AFSRangeInvalidateCallBack AFSRangeCallBackSeq<AFSCBMAX>;
|>
|> ***
| I do not understand this level of complexity.  A callback is issued
| because a
| change has occurred on the file server.  The problem that the cache
| managers
| have with the existing callback mechanism is that the cache manager has no
| idea what the trigger was.  From my perspective, the cache manager should
| simply be told the reason for the trigger.
|
| For example:
|
|    *     StoreData (newDV, offset, length)
|    *     StoreACL (newDV)
|    *     StoreStatus (newDV, status data)
|    *     CreateFile (newDV, filename, fid)
|    *     RemoveFile (newDV, filename, fid)
|    *     RenameFile (newDV, oldname, newname, fid)
|    *     Symlink (newDV, name, fid)
|    *     Link (newDV, name, fid)
|    *     MakeDir (newDV, name, fid)
|    *     RemoveDir (newDV, name, fid)
|    *     ReleaseLock (newDV, type, fid)
|    *     Cancelled
|
| By doing so the cache managers obtain the data they need without requiring
| any architectural changes to the file server.  These changes could be
| deployed
| today.

We don't seem to be disagreeing on the merits.

However.  I suggested the "bulk" mechanism as an optimization which
could be performed at the file server, to reduce storms of call backs on
busy files.  Bulk operations are already a feature of the AFS protocol.
~ Is that really not relevant to the discussion?

I would not like to author a potentially expensive feature without due
consideration for efficiency.  In fact, as would envision implementing
this feature, there would be a queue of calls in any case.

Thanks,

Matt


- --

Matt Benjamin

The Linux Box
206 South Fifth Ave. Suite 150
Ann Arbor, MI  48104

http://linuxbox.com

tel. 734-761-4689
fax. 734-769-8938
cel. 734-216-5309

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFH+UkrJiSUUSaRdSURCNsbAJ90tmRkIjXFnQkiIjHvRyI9c3rq2QCfVAfL
KmPYQI6L7OY/XMrgjkC77Ko=
=jMhr
-----END PGP SIGNATURE-----