move callback breaking into a separate thread
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
the rest of it. somehow the original version of this was lost.
====================
the rest of it. somehow the original version of this was lost.
====================
the rest of it. somehow the original version of this was lost.
it all compiles nicely
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
a little more cleanup
====================
a little more cleanup
====================
a little more cleanup
====================
a little more cleanup
i probably missed something here.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
i did miss something. also, change FileEntry padding and axe useless comment
====================
try, try again
====================
once more with feeling
====================
make typing of the indexes into timeout[] match
====================
make struct CallBack a multiple of 32 bit so the weird math works again
screw it. if winnt can have generic pointers, so can we
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
and cast all the pointers
This patch adds support for building OpenAFS user-mode code on SunOS 4.
It does not include libafs, ulibafs, or any code that needs to understand
the filesystem layout (so, no vfsck, and while the salvager will be built,
it won't work).
based on report from lha@stacken.kth.se
"identP = (struct Identity *)malloc(1);
This can't be right, there should not be an assumption how the
c-compiler will lay out code. I find it acceptable to do something like this
/* sizeof valid + offset of valid. */
i.. = malloc(sizeof(identP->valid) + (int)&(((struct Identity *)0)->valid));
But then, why not just allocate a whole identP and be happy. A afsUUID
is not that bloted (16 bytes) so I can't see why way this is
chosen. 20 bytes will probably be allocated on 32 bit platforms for
the whole struct Identity.
"
doesn't fix any problem that i can find, but results in ihandles not
having thousands of bogus references (and may fix problems if refcnt were to wrap)
deleted at that point; otherwise, the host may be deleted by
another thread between a call to h_Lookup_r and the time when
we actually get around to h_Hold'ing it.
based on report from mattiasa@e.kth.se who has the following feedback from
lha@e.kth.se:
Patch from Love to make filserver not loop on MUTEX_ENTER() in
rx_SetSpecific()
rx_call instead of rx_connection, and make CallPreamble()
type-safe by taking two arguments instead of magically
turning an rx_call into rx_connection.
to it, in the fileserver. This prevents some additional lossage
cases with poorly-connected clients.
Disable same feature for other Rx services, since they don't
need to incur extra RTT delay.
a) a freebsd client that compiles, and to a certain extent, works. Should
not be used except by people doing freebsd client development
b) configure glue for freebsd 4.3, 4.4, and 4.5
c) freebsd tfileserver support. Note that, by default, this isn't very
interesting, as the supported freebsd pthreads are just as cooperative as
LWP. if you install the linuxthreads port and swap the MT_* variables in
osconf.m4, you will get a more traditional tfileserver though. configure
glue for that will be forthcoming at some point.
d) a maybe-fix that sets sin_len in sockaddrs on platforms that have them.
(and also a fix for the AC_PROG_CC issue which affects autoconf 2.13 and 2.5x
on same conf files issue)
Currently it's possible to give StoreData negative Pos/Length/FileLength
arguments and thereby set the volume quota usage to arbitrary values.
This patch makes these values unsigned, since negative file positions
and lengths don't make sense anyway.
Currently nothing clears the CLIENTDELETED flag in hosts, so once
a client has been deleted, h_TossStuff_r() will keep getting called
with every host release. This patch clears the CLIENTDELETED flag
every time we take care of deleted clients.
based on complaint from and work with jimmy@e.kth.se
h_OtherHolds_r will never return 0 if we mask our own hold
bit before calling it. however we must be careful to mask before h_TossStuff_r
so we aren't still "holding" then
otherwise just release our hold
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
mask holdbit in case i missed
perhaps too careful. to fix potential crash in TDel and TAdd
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
remove extra ) which snuck in
previously and since 3.5 rx enhancements fileserver would delay 3 seconds
on sending an rx abort when the abort was the 11th or more occurance of
the same error on the same call. the problem was fetchstatus/bulkstatus
on a directory on which you have "l" but not "r" would take forever after the
first 5 files (bulkstatus and then fetchstatus on each file, 2*5=10)
so in FetchStatus and BulkStatus stubs we suppress repeated errors from
Check_PermissionRights *only*, which has the effect of suppressing the
problem without removing the theoretical benefit of avoiding letting any
one client throw requests at as as fast as we can abort them unless those
requests happen to be fetch/bulkstat requests which fail a permission check,
but in order to avoid that we'd also need to cache what they last tried
to stat, and then things would get ugly.
according to jeff:
- Renames the top-level 'install' target to 'build'. This should be
transparent, since no one should be using that.
- Improves on Sam's dirpath patches, by splitting out server binaries
into separate bin, sbin, and libexec directories in GCS mode (these
are all /usr/afs/bin in Transarc mode).
- Updates the top-level 'all' target so that it builds the software
but does not generate a dest tree. Top-level 'lib' and 'include'
directories are generated to hold the intermediate libraries and headers
used during the build.
- Adds a new top-level 'install' target, which installs things in the
appropriate directories under ${DESTDIR}, based on configure's install
directories plus the extras added by Sam's patch.
- Adds a new top-level 'dest' target, which creates an old-style dest
directory under ${DEST}. The ${DEST} variable defaults to the
traditional value of ${SRCDIR_PARENT}/${SYS_NAME}/dest. Note that
this variable used to be called ${DESTDIR}; it was renamed to avoid
conflicts with the de facto standard usage of ${DESTDIR}.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
fix missed makefile
====================
update another missed file
====================
eliminate bogus escaping
====================
get rid of another bogus escape
====================
remove unused include directory
====================
get rid of no longer used libdir
====================
remove unused incdir
====================
fix up some problems for make compatibility and missing trailing /
====================
put afs.exp in the right place
====================
remove bogus afssrvdir reference
====================
update dest version of output
====================
update ref to libexecdir
====================
kill refs to afssrvdir
====================
convert missed LIBDIR to TOP_LIBDIR
====================
remove explicit INSTALL and use makefile.@sys value instead
====================
except it's helpful to actually include makefile.@sys
====================
convert LIBDIR to TOP_LIBDIR
get rid of cases where we'd end up with two / because of DESTDIR pasting
macroize calls to rm
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
get rid of another case of bogus trailing quoting
clean up all the makefiles to remove bogus targets, eliminate trailing /
requirement from DESTDIR, avoid needing to pass things like DESTDIR around
between makefiles
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
remove bogus quoting
bcopy, bcmp, bzero, index, rindex, you're all cut.
memcpy, memcmp, memset, strchr, strrchr, show us how it's done
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
fix reference to memset the right thing
====================
make change to arguments globally and not just for e.g. linux/darwin/fbsd
====================
fix a minor flub in how this was done
====================
correct another bad memcpy coversion
====================
fix up more inadvertant turds
====================
fix two errors found by chas williams
convert rest of source to afsconfig; include rcsid macros
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
remove bogus if/define/endif triple
====================
revert non-rcsid and afsconfig portion of patch
replace existing build system with autoconf faceplate
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
so we can fix the file modes
====================
commit withj correct file modes
====================
stuff which got left behind
====================
more stuff which was missed
====================
get this right so build completes
====================
also make these correct (no obj reference)
====================
so autoconf dependancy chain need not change
====================
set correct variable for obsolete buildng
====================
so we can more easily use autoconf'd CC var
based on suggestion from rees@umich.edu
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
update for solaris cc joy
setup for darwin port
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
changes for darwin port
====================
added files for the darwin port
====================
changes for darwin port
Changes for Alpha to previous 64 bit changes for sparc (sparc64 isn't
necessarily analogous to alpha or any other 64 bit linux platform)
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
use mkstemp
====================
Include necessary file for alpha config
====================
Deal with 64 bit time_t
====================
Don't do increments in a way that can be miscompiled
====================
configure for alpha linux
====================
deal with time and initialize a variable
====================
don't use ViceIoctl32 for alpha linux
====================
deal with compiling kdump for alpha linux
====================
mods in callback.c analogous to dux port; mods in viced to deal with
thread creation function return convention
====================
config for linux alpha
====================
ids for alpha linux consistent with new-style sysname grouping
====================
makefile and config files for new-style sysnames
====================
MakefileProto changes for alpha linux with new-style sysnames. A change
in config/mc.c will be needed for this to configure correctly, and it will
be added soon
====================
note alpha port and the state it's in to hopefully avoid questions
Add support for syslogging server log messages
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Add syslogging capability to ptserver
====================
add syslog capability to fileserver
====================
Add syslog capability to the volserver
====================
Add syslog capability to the vlserver
====================
fix my own error when hand-applying nathan's patch
====================
remove unused function
"First, some background: The AFS Fileserver tries really hard to keep
track of all the "interfaces" of a client. Generally this is for a
multi-homed client, so that the server realizes that you are the same
client when you come from multiple addresses. However, this also
winds up applying to a mobile host whose IP address changes over time.
When the Fileserver sees a "new" address, it asks the client for its
Uuid and, if that Uuid already exists, it adds this new address to the
list of interfaces for the existing host. However, it keeps a
callback connection open to the original address.
Here's the problem: Assume the client has callbacks registered with
the server and then disappears from the network. While the client is
off the net, someone else makes a change that causes that callback to
be broken. The fileserver can't reach the client, so the break gets
added to the delayed callback list. The logic is such that no client
requests will be processed by a host while there are outstanding
delayed callbacks to that client.
Now, if the client comes back on the same IP Address, everything works
fine. The fileserver uses the cached callback connection and the
callbacks are cleared successfully. However, if the client returns to
the network under a different address, this new address is added to
the existing host structure and then the delayed callbacks are
attempted. Unfortunately it is using the (invalid) cached connection
to the old IP Address, so the delayed break fails. Therefore, this
client is locked out of the fileserver until:
1) the fileserver reboots,
2) the client returns to the original IP Address, or
3) All the callbacks timeout on their own.
This patch will fix this problem. When the client makes a request and
the fileserver tries to break the delayed callbacks, if the breaking
fails then the fileserver will attempt to find a 'working' interface
by probing all the host interfaces for one that responds with the
correct Uuid. If that succeeds then it resets the cached callback
connection and then breaks the delayed callbacks, thereby regaining
the connection to the client and proceeding with the proper cleanup
before the original request is completed."
" Extensions used by MR-AFS in the client. I have added only two
pioctl-calls which are used by the "fs"-command for a large number
of MR-AFS specific subcommands. With this modification also the
data type afs_int64 is introduced because MR-AFS supports large files.
afs_int64 is either "long long" or a structure consisting of two
32-bit numbers. We are already running on rs_aix42 a fully large-file
capable AFS-client, but these changes are still in a beta test and
not yet added here."