openafs.git
12 years agodir: Remove extraneous printf from Create
Andrew Deason [Tue, 21 Jun 2011 23:34:46 +0000]
dir: Remove extraneous printf from Create

Change-Id: Id226d5457119a9f898aa35bc7b4d4db830a2f7fc
Reviewed-on: http://gerrit.openafs.org/4878
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agodir: Fix DRead
Andrew Deason [Tue, 21 Jun 2011 23:33:16 +0000]
dir: Fix DRead

DRead was missing a return statement in one of the cases where we
found the buffer we were looking for, so we locked the buffer but kept
looking. Return it instead.

Change-Id: If72a0ba3ce60a847f2796b51a82f0f473bbc608a
Reviewed-on: http://gerrit.openafs.org/4877
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agovol: Do not overwrite specialStatus in attach2
Andrew Deason [Tue, 21 Jun 2011 19:58:42 +0000]
vol: Do not overwrite specialStatus in attach2

attach2 wants to set specialStatus to VBUSY in certain conditions
(such as, it discovers a conflicting vol op where VVolOpSetVBusy_r is
true). However, specialStatus may already be set to something else,
like VMOVED if the volume is being moved off of the server. This can
happen if the volserver has checked out and FSYNC_VOL_MOVE'd a
preattached volume but hasn't deleted or checked the volume back in
yet.

So, if specialStatus is already set, don't touch it, so we don't start
reporting VBUSY errors to clients when we should be reporting VMOVED,
or some other error code previously set.

Change-Id: Icb2895036620f186230e1558b8bc04d18cc45c86
Reviewed-on: http://gerrit.openafs.org/4873
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Exit fast restart on non-duplicate ACK
Simon Wilkinson [Sat, 18 Jun 2011 14:50:08 +0000]
rx: Exit fast restart on non-duplicate ACK

The current code only exits fast restart when we receive an ACK
packet that contains no missing chunks at all. On a network that is
dropping a reasonable chunk of its packets, this means that we spend
most of the call in fast recovery. (I originally found this by running
with the intentionally drop packets feature set to 10%)

TCP's fast retransmit behaviour is that we stay in fast recovery until
we receive our first non-duplicate acknowledgement. In TCP that means an
acknowledgement that moves the window. In RX, it is an acknowledgment
that ACKs a new packet.

Change-Id: If8e461dd91315be845397dd1bf42771c9223d156
Reviewed-on: http://gerrit.openafs.org/4869
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Don't limit the # of packets sent in recovery
Simon Wilkinson [Sat, 18 Jun 2011 12:17:07 +0000]
rx: Don't limit the # of packets sent in recovery

The RX transmit engine limits the number of packets sent whilst in
loss recovery to one per invocation of the transmit engine. As the
engine cannot be called by the application thread whilst in recovery,
this means that we end up being limited to one packet per ACK received,
which means that despite a growing congestion window we'll only send
one packet per RTT (in effect, a congenstion window of 1).

This will remain the case until we exit recovery, and all of a sudden
can send a large number of packets. If this is larger than the current
capacity of the network, we'll probably end straight back in recovery
again.

Let the congestion window do its job, by removing this arbitrary limit.

Change-Id: I9f21138662b0918d6d2b885f0fb5ada7fa4c79ec
Reviewed-on: http://gerrit.openafs.org/4868
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Don't wait for TQ busy when entering recovery
Simon Wilkinson [Sat, 18 Jun 2011 12:01:35 +0000]
rx: Don't wait for TQ busy when entering recovery

Two different threads can cause a call to enter recovery. The event
thread will move a call into recovery as a result of a timeout, or
the listener thread will move it there following a fast retransmit.

In both of these cases, recovery looks different. In the case of
a timeout, we enter slow start, starting as if we were begininning
transmission for the first time. Following fast retransmit, we enter
fast recovery, with different starting parameters than those coming
from slow start.

As a reslt, the current behaviour, where either call sitting in
FAST_RECOVERY_WAIT causes the other to simply return is inappropriate.

Further investigation indiciates that FAST_RECOVER_WAIT is actually
uncessary. There is no harm caused to a thread which is currently
blocked on the network in the middle of a transmit, in adjusting the
window size underneath it. As both of these states collapse the window,
that thread will simply cease sending earlier.

So, simplify the code, and remove the potential race between event and
listener by removing the FAST_RECOVER_WAIT state.

Change-Id: Ic2e7606136ca04c869685345b63101c346ce702b
Reviewed-on: http://gerrit.openafs.org/4867
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Enter loss recovery when we retransmit
Simon Wilkinson [Sat, 18 Jun 2011 11:43:44 +0000]
rx: Enter loss recovery when we retransmit

Since I mistakenly wrote commit 36e2d13b, RX hasn't entered congestion
avoidance when a loss event occurs. This is bad, because on todays
networks the majority of packet losses are due to some form of
congestion.

Now that the timeout code has been restructured, the chances of entering
the retransmit routine in error are much much smaller, so this code
needs to be restored.

This change reverts 36e2d13b55085c996d38b30d003296c602ef8ee3. However,
the original RX code has the problem that it assumes that all forms of
fast recovery are the same - in particular, that the call settings that
result from entering fast recovery due to a fast retransmit are
identical to those resulting from a timeout. This is not the case, and
this will be fixed in a later change.

Change-Id: Iedb34437db9fcfbc90307b01e566a8d089eef4bb
Reviewed-on: http://gerrit.openafs.org/4866
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Add Karn-style backoffs to RX retransmits
Simon Wilkinson [Sat, 18 Jun 2011 10:58:57 +0000]
rx: Add Karn-style backoffs to RX retransmits

When we retransmit a packet, we may be doing so because the RTT of the
connection has grown dramatically larger than earlier within the call.
However, RX doesn't permit all ACKs to retransmitted packets to be
counted within the RTT calculation.

So, adopt the same approach as Karn developed for TCP, and as described
in detail in RFC2988. When a retransmit event occurs, backoff the
connection RTT by doubling its value, and hold at this doubled value
until either another retransmit occurs (in which case we back off again,
up to a predetermined ceiling), or we receive an ACK packet which we
can use within the RTT calculation, in which case we drop back down to
the newly measured value.

This change replaces the per-packet backoff strategy originally
implemented in RX (which, whilst allowing resent packets more chance of
arriving, doesn't help with computing a correct RTT).

Change-Id: I715dc673a0b379733e3be26fa594ea13f492a58f
Reviewed-on: http://gerrit.openafs.org/4865
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Make clock_Add correctly add to itself
Simon Wilkinson [Sat, 18 Jun 2011 10:48:45 +0000]
rx: Make clock_Add correctly add to itself

With the existing clock_Add code, the following:
    struct clock a = {2, 800000};
    clock_Add(&a, &a);
gives a clock value of {6, 600000}, rather than the expected {5, 60000}.

This is because the ordering of instructions leads it to double count
the carry on the seconds field. Reorder the instructions so that the
carry is correctly applied.

Change-Id: Ia71b387ce521a11e4caf9ec200907efe1d2be8ff
Reviewed-on: http://gerrit.openafs.org/4864
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorx: Remove resending logic into its own function
Simon Wilkinson [Sat, 18 Jun 2011 10:35:30 +0000]
rx: Remove resending logic into its own function

Create a new function, rxi_Resend, which is the entry point to running
the transmit queue as a result of a resend event. This concentrates all
of the resend logic into one place, removes the need for
rxi_StartUnlocked, and means that rxi_Start's arguments don't need to
match those of an event handler.

Change-Id: I550ebbbae63b7d659bb980eea709a14882038914
Reviewed-on: http://gerrit.openafs.org/4863
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: Change the way that the RTT timer is applied
Simon Wilkinson [Sat, 18 Jun 2011 09:46:53 +0000]
rx: Change the way that the RTT timer is applied

RX maintains a retryTime for every packet that it has transmitted,
which is held as the time that that packet was sent, plus the smoothed
RTT of the connection. If a packet is in the queue with a retryTime
older than the current time, then it is resent at the first opportunity.
In some circumstances, this first opportunity will be as a result of
the resend event timer expiring, in others it will happen as part of
a normal queue run.

There are a number of problems with this approach on congested networks.

Firstly, on a network with a large window size, which is in "normal"
flow, it means that we will never actually perform fast retransmit as
the timeout for this packet will have expired before we have received
any further ACKs. This is because, on a network with a relatively stable
RTT the ACK for packet n+1, n+2, or n+3 cannot arrive before the
expected time of arrival of the ACK for packet n. As we retry
immediately this expected time of arrival has passed, we never have the
opportunity of using these later ACKs to learn that packet n is lost.

Secondly, the fact that we may resend packets from a "normal" queue run,
rather than as a result of a resend event, means that there is no clear
entry point for resends. As resends should be assumed to be a result of
network congestion, and result in both the call throttling back, and the
RTT being increased, this lack of a clean entry point makes things
tricky.

As a solution, this patch changes the way in which retransmit times are
applied to use the algorithm described in RFC2988.

*) Whenever we send a new packet, we start a timer for the current call
   rto value if one isn't already running.
*) Whenever we receive an ACK that acknowledges new data, and we have
   packets that are sent but not yet acknowledged, we restart the
   retransmit timer using the current rto value.

This alogrithm solves the first problem, as it means that if the
connection is still flowing, we will continue to receive ACKs, and we
can enter fast retransmit.

In implementation terms, we longer track a retryTime per packet, and
instead simply record if a packet has been sent or not. Packets which
have been sent may only be resent as a result of a resend timer
expiring, or of entering fast retransmit, so solving the second issue.

Change-Id: Ic1e2b32876197f8a1fb620b7d70c0c3ec3f6bb88
Reviewed-on: http://gerrit.openafs.org/4862
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Compute smoothed RTT per call, not per peer.
Simon Wilkinson [Fri, 17 Jun 2011 21:06:54 +0000]
rx: Compute smoothed RTT per call, not per peer.

RX uses the TCP RTT smoothing algorithm as described in RFC2988.
However, the TCP algorithm is designed to accept samples from a
single connection, accepting a new sample once per RTT.
RFC2988 suggests that "when multiple samples are taken
per RTT the [ alogrithm ] may keep an inadequate RTT history."

In RX's implementation, we use a single instance of this alogrithm
per peer, and input all of the samples from all of the active calls
and connections into this same instance. This leads to us taking
a significantly (potentially many magnitudes) larger number of samples
per RTT, and rapidly losing the RTT history. With RX's implementation,
short lived network events may easily bias the RTT, and cause large
numbers of packets to time out.

This change fixes this by moving the RTT calculation onto a per call
basis. We still update the peer with our caclulated value, so that new
calls may be created with an RTT corresponding to the current value for
the connection, rather than having to start high and converge downwards.

Change-Id: I2ed6bce63adf160c03518686ec25cbecc5084f5f
Reviewed-on: http://gerrit.openafs.org/4861
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: Make testclient build on Unix
Simon Wilkinson [Tue, 21 Jun 2011 08:34:50 +0000]
rx: Make testclient build on Unix

The "testclient" utility is built as part of the build on Windows.
Fix it so that it actually builds on Unix, so we can test changes to
testclient there.

Change-Id: I751e905f6d9676598e3b7be9ccaf321250804f11
Reviewed-on: http://gerrit.openafs.org/4872
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: Reverse the consumption order of idle queue
Simon Wilkinson [Sat, 14 May 2011 07:55:50 +0000]
rx: Reverse the consumption order of idle queue

Currently, the rx server thread idle queue is used in an LRU manner.
This means that we round robin requests between all of the threads
configured on a given system, which means that we end up thrashing
CPU caches on machines whose workload doesn't require that all of
the configured threads be used.

Change this so that we always use the most recently idle thread. This
isn't as "fair" to all of our waiting threads, but should mean that we
scale better on SMP machines, as a thread that is recently idle is
likely to have been recently scheduled.

Performance numbers to follow ...

Change-Id: I6072183b5ca72754755c3ac854e30a064c4187e5
Reviewed-on: http://gerrit.openafs.org/4871
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agomacos: package shared libraries
Derrick Brashear [Mon, 20 Jun 2011 16:31:51 +0000]
macos: package shared libraries

include our shared libraries in the package when we have them

Change-Id: I18a38c69410a7fded361b05479c93698e3d618e2
Reviewed-on: http://gerrit.openafs.org/4870
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: Remove incorrect backoff code
Simon Wilkinson [Fri, 17 Jun 2011 19:35:59 +0000]
rx: Remove incorrect backoff code

The ACK packet handling routine contains code which causes the
RTT to backoff if the selective ACK response indicates that there is
a missing packet. The comment justifies this code as being in line
with Phil Karn's work on TCP.

However, the TCP behaviour is that we backoff when we enter resend. Both
TCP and RX have difficulty computing RTTs for resent packets due to the
ambiguous ACK problem. Whilst RX is slightly better than TCP in this
regard, we can't always tell whether an ACK refers to the original, or
resent packet, so resent packets are unable to contribute to the RTT.
This means that if the RTT ends up too low for the connection, and we
start resending every packet, the RTT will never grow to account for
this, as we never feed it any packet samples.

Karn's solution to this was to backoff (double) the RTT value when we
resend a packet, and then to not drop it back down until we receive an
ACK that we can count. This means that we will always get a new sample
for the connection, and the RTT will grow again.

The original author confirms that the current behaviour in RX is
incorrect, so simply remove it with this patchset.

Change-Id: I0f4af56601c43b72394d7903cacc3fc19bc9d046
Reviewed-on: http://gerrit.openafs.org/4860
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Account for delayed ACKS when computing RTO
Simon Wilkinson [Fri, 17 Jun 2011 18:38:29 +0000]
rx: Account for delayed ACKS when computing RTO

RX currently only soft ACKs every second packet, therefore a soft ACK
may be delayed by a period of time (currently 100ms, although RX did
expose this as a public variable in earlier versions).

RTT values are computed using only non-delayed ACKs, so the timeout
is a smoothed average of the exact time taken to send and directly
ACK a packet. Therefore, if the peer ends up using a delayed ACK for
the packet, using just the RTT will cause that packet to be timed out.

A while ago, this was dealt with by padding the calculated RTT with an
additional 350ms. This was then removed, and changed to a 350ms minimum
value. When this caused large numbers of spurious resends, the padding
was restored, but with a 20ms default value. As noted above, 20ms is
too low, as we may wait for up to 100ms before sending an ACK.

This patch changes minPeerTimeout so that it does what it says on
the tin - sets a minimum value below which the peer timout may not
fall. It then adds to either this value, or the calculated one, 200ms
of padding. This makes our padding identical to TCPs, and allows some
future leway as to the softAckDelay value.

Change-Id: I48ab28e03bb7c0a49fe21c21f83adbb02b7665f2
Reviewed-on: http://gerrit.openafs.org/4859
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorx: Make rx_softAckDelay & rx_lastAckDelay private
Simon Wilkinson [Fri, 17 Jun 2011 18:12:09 +0000]
rx: Make rx_softAckDelay & rx_lastAckDelay private

The values of these two parameters directly affect the modifiers
that are needed in the peer's RTT calculations, and so can not
arbitrarily be changed by applications.

lastAckDelay has been 400ms since the first OpenAFS release, and
that value is used as a modifier when computing the timeout of the
last packet. It is likely that any change which made this value
longer than 400ms would have detrimental effects on deployed clients

softAckDelay has been 100ms for a similar time period. We have
chopped and changed the value of minPeerTimeout, so it is unclear
what the maximal value for this parameter is. For much of OpenAFS's
life, minPeerTimeout was a 350ms padding value, which suggests that
copying TCP, and setting the maximal value at 200ms would be a safe
option. For now, however, leave it at 100ms to avoid unexpected
side effects.

hardAckDelay is not addressed by this patch set, as all ACK packets
sent from the application thread are marked as delayed, and so
currently have no part in computing RTT times. It is likely, however,
that any changes to the hard ACK timeout should be very carefully
considered.

Change-Id: Ibdeae4577b09d120f22bb922697f92d63aaf0dff
Reviewed-on: http://gerrit.openafs.org/4858
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agoDocumented vos restore -creation and -lastupdate
Jeff Blaine [Sat, 18 Jun 2011 00:35:17 +0000]
Documented vos restore -creation and -lastupdate

Culled info from commit 21592fe6 by Kris Hees.  These allow
one to specify how to set the creation date and last update
date at volume restore.

Change-Id: I6cfebb41c18e1acca5bbb70e3ee179c8ee976be3
Reviewed-on: http://gerrit.openafs.org/4852
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoEnable -afsdb in the Red Hat packages.
Ken Dreyer [Wed, 15 Jun 2011 18:21:27 +0000]
Enable -afsdb in the Red Hat packages.

Change-Id: Ib701b248155a9a59da132ecb22116cc594089250
Reviewed-on: http://gerrit.openafs.org/4844
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoFBSD: do not FlushAllVCaches
Ben Kaduk [Fri, 17 Jun 2011 06:22:34 +0000]
FBSD: do not FlushAllVCaches

In normal operation, any AFS vcache with associated data will have
an associated vnode, which will be on the list of vnodes associated
with the /afs mountpoint.  We already call FreeBSD's vflush() in
our afs_unmount, which walks the list of vnodes associated with the
mountpoint and calls vgonel() on them, which calls VOP_CLOSE and
VOP_RECLAIM on the vnode.  Our implementation of VOP_RECLAIM already
calls FlushVCache, so in normal operation, FlushAllVCaches() will
be a no-op.
However, in the presence of bugs, it is actively harmful, causing
panics.  For example, if a vnode has been reclaimed but FlushVCache
failed (which we cannot report back since the VFS will panic in this
case), and we attempt to flush it again, the associated vnode has
already been cleaned up and we will panic.  Likewise if our list of
vcaches becomes corrupt and has a vcache with bad or missing vnode
for some other reason, we will panic.

Since there is no gain in normal operation and abnormal operation
is more likely to panic than save data, skip the extra flush.

Change-Id: Id227ca74f4036c1c1f40a41a922e73198f16f958
Reviewed-on: http://gerrit.openafs.org/4847
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoFBSD: do not install kdump
Ben Kaduk [Fri, 17 Jun 2011 06:44:46 +0000]
FBSD: do not install kdump

Since it's just an empty file, installing it is rather silly.

Change-Id: I93279c5d7b0e5262bfdb68cdbd92c49e1984fa97
Reviewed-on: http://gerrit.openafs.org/4849
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux: remove typedef from configure test comment
Marc Dionne [Sat, 11 Jun 2011 01:49:58 +0000]
Linux: remove typedef from configure test comment

Remove the "typedef" from the structure element configure test
comment.  The typedef version of the macro is used by the more
general element test, so the comment should be more general.
This affects comments in src/config/afsconfig.h

Change-Id: If5b748e1a63de83e15906fc16e7c94b357c4363c
Reviewed-on: http://gerrit.openafs.org/4836
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: fix false good magic line
Michael Meffie [Tue, 7 Jun 2011 16:37:40 +0000]
volinfo: fix false good magic line

Fix false report of good magic/version numbers in volume
header file.

Change-Id: I26869b6e6ada331373d626e501f6520755d5c070
Reviewed-on: http://gerrit.openafs.org/4817
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agogenerated: take into account the things needed in master
Derrick Brashear [Fri, 10 Jun 2011 22:40:33 +0000]
generated: take into account the things needed in master

we need roken and hcrypto to build the bits we need to build the
compiler tools on master. do so.

Change-Id: I3e974a5d94bdfdf3e89f3d18aed55ed586b0034d
Reviewed-on: http://gerrit.openafs.org/4835
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agorxkad ticket5 function rewriting
Derrick Brashear [Fri, 10 Jun 2011 22:33:30 +0000]
rxkad ticket5 function rewriting

avoid conflicting with heimdal in environments where we might
need bits of their asn1 library also

Change-Id: Ib76c158297a331fcaf650c435c5696e5b5aaab8c
Reviewed-on: http://gerrit.openafs.org/4834
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agomore death to des
Derrick Brashear [Fri, 10 Jun 2011 07:02:38 +0000]
more death to des

des is in the generated targets. kill it.

Change-Id: Ifb4ad48b0f57e95842411046cb79b589669265b7
Reviewed-on: http://gerrit.openafs.org/4833
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agodarwin armv6 and armv7 support
Derrick Brashear [Fri, 10 Jun 2011 06:11:26 +0000]
darwin armv6 and armv7 support

simply compile lwp process assembler for both arm arches.

Change-Id: Ie09ec1e3684656a492373f86e4c8be71e6abfabd
Reviewed-on: http://gerrit.openafs.org/4832
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux: rpm: Update openafs.spec.in to include changes to installed files
Jonathan Billings [Mon, 6 Jun 2011 20:29:28 +0000]
Linux: rpm: Update openafs.spec.in to include changes to installed files

* Remove several files from the packaging manifest that are no longer
generated or included in the distribution, such as the DES header
files.
* Exclude the aklog_dynamic_auth man page, since it is AIX-only
* Add new files that have appeared in the distribution, such as the
'afsio' binary.
* Add librokenafs.so.1 and libafshcrypto.so.1 to the base package,
because many of the binaries in the base package are linked against
librokenafs and the 'butc' binary is linked against libafshcrypto.
* Move the librokenafs.{so,a} and libafshcrypto.{so,a} to the -devel
package instead of the authlibs-devel package, now that the .so.1
library is part of the base package.
* Set the executable bits on the libraries installed in libdir.  This
change is important because it causes 'rpmbuild' to generate Provide
tag metadata for the libraries in the package, which is necessary now
that some binaries in other packages have generated Requires tags for
libraries packaged in the base package.  'rpmbuild' will not generate
the Provides tag if the libraries lack executable permission.

Change-Id: I8f66cf882008b5576528ccc0f4a9694015db85bb
Reviewed-on: http://gerrit.openafs.org/4814
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoafsd: Fail gracefully on mtab open failure
Andrew Deason [Wed, 8 Jun 2011 18:19:59 +0000]
afsd: Fail gracefully on mtab open failure

On Linux and IRIX, fail gracefully when we fail to open /etc/mtab,
instead of segfaulting. Move strdup'ing cacheMountDir until after
opening /etc/mtab, to simplify the error handling.

Change-Id: I58d64548303f25a51753d093a733608fea1282e1
Reviewed-on: http://gerrit.openafs.org/4825
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: PrintFileNames is namei-only
Andrew Deason [Thu, 9 Jun 2011 04:06:58 +0000]
volinfo: PrintFileNames is namei-only

PrintFileNames only exists on namei, so make sure it's inside a namei
ifdef.

Change-Id: I65867b54e3747b6f3a26cdfd70ab84ed7fe4e44d
Reviewed-on: http://gerrit.openafs.org/4830
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agolibafs: memset dirHeader->hashTable
Andrew Deason [Thu, 9 Jun 2011 03:50:27 +0000]
libafs: memset dirHeader->hashTable

Clear dirHeader->hashTable via memset instead of via a loop. This is
more efficient, and avoids the loop getting optimized into an unusable
_memset call on recent versions of Solaris Studio when building for
the kernel.

Thanks to Jeff Blaine for reporting the issue with Solaris Studio.

Change-Id: Ibaa5140d510c2df7e1129352a6677594785b42b4
Reviewed-on: http://gerrit.openafs.org/4829
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoRemove NetBSD-specific debugging statement
Jonathan A. Kollasch [Thu, 9 Jun 2011 01:31:49 +0000]
Remove NetBSD-specific debugging statement

Change-Id: I458a6b50fee4ed41dd512e23de6b4e516e0ddc93
Reviewed-on: http://gerrit.openafs.org/4828
Reviewed-by: Jonathan A. Kollasch <jakllsch@kollasch.net>
Tested-by: Jonathan A. Kollasch <jakllsch@kollasch.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoRemoved detail of prev. completed work found listed todo list
Jeff Blaine [Wed, 8 Jun 2011 18:56:58 +0000]
Removed detail of prev. completed work found listed todo list

A todo item was in the "Known Problems" list, but the work was
already completed.  Cleared this item from the list (klog man
page info about krb5, klog.krb5, fakeka)

Change-Id: I9dbff50afd7bbaa6f5d20f7d4acfc796731b9c2d
Reviewed-on: http://gerrit.openafs.org/4826
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>

12 years agoWindows: shell extension is multithreaded
Jeffrey Altman [Wed, 8 Jun 2011 06:22:41 +0000]
Windows: shell extension is multithreaded

Since the shell extension is multithreaded and it is possible
for more than one thread to be executing in the gui2fs.cpp module
at a time, it is not safe to use a single static 'space' buffer
by more than one thread at a time.   Move the buffer into the
stack of each function that uses it so that we have thread safety.

Change-Id: Idbec3e0027fc7e3c43b503c55c1b479bcb5984bc
Reviewed-on: http://gerrit.openafs.org/4819
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agodoc: fixes for the xsltproc -> fop -> pdf toolchain
Chas Williams (CONTRACTOR) [Tue, 7 Jun 2011 18:26:11 +0000]
doc: fixes for the xsltproc -> fop -> pdf toolchain

"Empty" <anchor> entities seem to trigger a bug in fop.  These are
easily converted to reference on the containing block.  Additionally,
<indexterm>'s seem to need to be inside a non-structural entity (like
a <para>) in order to determine their page number/location correctly.

Change-Id: I2ab577f6ba8989685257fb9429e00a71dd51075c
Reviewed-on: http://gerrit.openafs.org/4812
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agoAlso install afszcm.cat for i386_fbsd
Ben Kaduk [Tue, 7 Jun 2011 15:30:18 +0000]
Also install afszcm.cat for i386_fbsd

The change gerrit/4760 enabled the use of gencat to actually build
this file, but failed to also change installation logic, so it was
sitting unused in the build tree.  Fix this, and install the file.
This allows us to remove a shell case statement which had formerly
been needed to enforce this restriction.

Change-Id: I7f9e94b09c504193084e1e04ae137df08b27b447
Reviewed-on: http://gerrit.openafs.org/4815
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: Don't maintain maxSerial
Simon Wilkinson [Fri, 5 Nov 2010 00:23:23 +0000]
rx: Don't maintain maxSerial

There were no users within the code of the rx connection maxSerial
element, and maintaining it required locking on a critical path. So,
get rid of it.

Change-Id: Ied5653b6f01b78525091d8bf09bdc454002eedc0
Reviewed-on: http://gerrit.openafs.org/4797
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorx: Reorganise transmit queue walk
Simon Wilkinson [Sun, 5 Jun 2011 10:04:12 +0000]
rx: Reorganise transmit queue walk

The transmit queue is stored in the order that we transmitted the
packets (by sequence number). This means that we can do all of the
ACK processing by just doing a single walk of this queue, rather
than having to walk the queue multiple times, once for each type of
ACK.

This clarifies the queue processing, and should reduce the amount of
time that we spending iterating large transmit queues.

Change-Id: I59578956e81197bbea7ce496e2f520a2995a3e95
Reviewed-on: http://gerrit.openafs.org/4796
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorx: Add RX_CALL_ACKALL_SENT flag and rxi_SendAck processing
Jeffrey Altman [Sun, 5 Jun 2011 22:41:24 +0000]
rx: Add RX_CALL_ACKALL_SENT flag and rxi_SendAck processing

3cd3715e608b801b4848399e42cb47464e6e3cc3 modified rxi_ReceiveDataPacket
to send an ACKALL whenever RX_CALL_RECEIVE_DONE is set on the call.
This produced the potential for a race with ACKs that set the
firstPacket value to 'rnext' when the receive queue for the call
has yet to be emptied.  From the perspective of receiver the ACK
was already processed and does not require a response since the
previously received ACKALL acknowledged the delivery of all data
packets to the application.  When sending ACKs after ACKALL it is
therefore required that firstPacket be set to the sequence number
after the last unprocessed packet in the receive queue.

Thanks to Simon Wilkinson for his extensive assistance in identifying
the problem and the development of this patchset.

Change-Id: I3bdf0c8f297b1d91b1a2bf3284adfeb9301874eb
Reviewed-on: http://gerrit.openafs.org/4798
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agoAdded fstrace subcommand help to binary
Jeff Blaine [Thu, 26 May 2011 18:22:52 +0000]
Added fstrace subcommand help to binary

Added subcommand help to fstrace binary.

Change-Id: I00ef50a27ec9bf799c84b1c8d949a75e6be36eb3
Reviewed-on: http://gerrit.openafs.org/4727
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agorx: do not rxi_AckAll for one data packet call
Jeffrey Altman [Sun, 5 Jun 2011 20:02:46 +0000]
rx: do not rxi_AckAll for one data packet call

rxi_ReceiveDataPacket() calls rxi_AckAll() when the call reaches
the RX_CALL_RECEIVE_DONE state to permit the caller to empty the
transmit queue.  That reduces the memory consumption of the caller
and avoids unnecessary retransmits which the call is in process.

If the call data consists of a single packet it is possible that
Ping ACK packets sent as part of connection establishment could
race with the ACKALL and be delivered out of order.  If the Ping
ACK is delivered second, it will be ignored by the peer forcing
a two second delay in connection establishment.  To avoid the race
do not send an ACKALL for a single packet call.

Change-Id: I69d967b3b2e9ee77636ca12bc7ade4896bb8a071
Reviewed-on: http://gerrit.openafs.org/4799
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agoubik: Use supplied config directory in ugen
Simon Wilkinson [Mon, 30 May 2011 19:07:01 +0000]
ubik: Use supplied config directory in ugen

ugen_ClientInit permits the configuration directory to use to be
passed on the command line. However, it was then promptly overwritting
the supplied directory with the standard client (or server) directories,
depending on whether localauth was in use or not.

As a start to fixing this anti-social behaviour, modify ugen so that if
we're not doing localauth, and if the caller has passed us a config
directory, use that instead of the system default one. This allows us to
start creating test harnesses for our command line tools.

Change-Id: I6916389ce56df4cee62845a03282c5c10d3095eb
Reviewed-on: http://gerrit.openafs.org/4809
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agotests: Use a real IP address for the test cell
Simon Wilkinson [Tue, 31 May 2011 08:27:57 +0000]
tests: Use a real IP address for the test cell

When creating the test CellServDB, use the IP address of the machine
that we are running on, rather than 127.0.0.1. This makes it possible
to actually start up ubik servers using this CellServDB.

Change-Id: Iec0be80921dd1f01825177562f8a3dcc59400b9a
Reviewed-on: http://gerrit.openafs.org/4808
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agotests: Move code to add new DES keys to common
Simon Wilkinson [Mon, 30 May 2011 17:18:33 +0000]
tests: Move code to add new DES keys to common

Make the code which adds a new (static) DES key to a cell's
configuration generally available, as this will also be useful in
constructing other tests

Change-Id: I5d284016628e9d25a198607ffd6f8f1a63ddf652
Reviewed-on: http://gerrit.openafs.org/4807
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agotests: Move common code to its own directory
Simon Wilkinson [Mon, 30 May 2011 16:47:35 +0000]
tests: Move common code to its own directory

Move code for faking up an OpenAFS configuration directory into its
own "common" directory, as it's going to be of use to more tests than
just those in auth.

Change-Id: I9c80dd66763e222deca98bc7744ff317111c6ed8
Reviewed-on: http://gerrit.openafs.org/4806
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovos: Add the -config option
Simon Wilkinson [Mon, 30 May 2011 19:14:45 +0000]
vos: Add the -config option

Add the -config option to all vos commands, so that the user can set
the location of the configuration directory to use. This is primarily
provided for testing purposes, and will shortly be used to hook vos
up into the TAP-style test suite.

Change-Id: I610a3161c7d5d52ce43e77a400bc752d43f76134
Reviewed-on: http://gerrit.openafs.org/4811
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agocmd: Add support for disabling specific abbrevs
Simon Wilkinson [Mon, 30 May 2011 19:02:31 +0000]
cmd: Add support for disabling specific abbrevs

Sometimes, when adding a new command parameter, it's necessary to
prevent it from colliding with an existing abbreviation. This patch
adds a new command flag CMD_NOABBRV which can be set on a parameter
to indicate that it should not be considered when checking for
ambiguous abbreviations.

For example, if a command has the existing '-cell' option which is
popularly abbreviated to '-c', adding a '-config' option would
cause the existing abbreviation to stop working. However, if '-config'
is added with the NOABBRV flag set, '-c' will continue to work.

Change-Id: I3b6d718f9dd81c44fb1d10c904db6a4a0fd763b8
Reviewed-on: http://gerrit.openafs.org/4810
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoWindows: refactor fs acl funcs into fs_acl.c
Jeffrey Altman [Sat, 4 Jun 2011 17:28:26 +0000]
Windows: refactor fs acl funcs into fs_acl.c

The ACL structure definitions and manipulation functions
were defined both in WINNT/afsd/fs.c and WINNT/client_exp/gui2fs.cpp.
Extract them to WINNT/afsd/fs_acl.c and refactor them so that a
single copy can be maintained for both modules.

The most significant change is to CleanAcl() which now accepts
a cellname instead of a file path.  By accepting a cellname the
ACL functionality is completely isolated from the path processing
and pioctl operations.

At the present time, fs.exe calls CleanAcl() with a cell name
and afs_shl_ext.dll does not.  All callers in fs.c have been updated
to use the new behavior.

gui2fs.cpp also comments functions that exist in the file but
have no caller.  These can be removed at a later date if they
are not required.

Change-Id: Ibc5f411c6410769bdfeaf9e37b6d39a64958baff
Reviewed-on: http://gerrit.openafs.org/4783
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agoWindows: Add GetFileInformationByHandleEx to fs_InAFS
Jeffrey Altman [Sat, 4 Jun 2011 03:39:59 +0000]
Windows: Add GetFileInformationByHandleEx to fs_InAFS

If available on the operating system, use
GetFileInformationByHandleEx to translate the path into
the file system normalized form.  This permits paths that
cross NTFS reparse points to be successfully evaluated as
being in afs.   For example:

  c:\afs -> \\afs\all

GetFileInformationByHandleEx is integrated into Vista and
Server 2008 and above.

Change-Id: I57443b01c753f12665aaac5718f639e389e2e822
Reviewed-on: http://gerrit.openafs.org/4778
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

12 years agoWindows: refactor fs, symlink and fs_utils
Jeffrey Altman [Fri, 3 Jun 2011 18:19:27 +0000]
Windows: refactor fs, symlink and fs_utils

over the years a large number of duplicated functionality
has been added to symlink.c and fs.c.  Refactor both so all
common functionality is implemented within fs_utils.c.

Ensure that all functionality migrated to fs_utils.c and
symlink.c uses the SafeString library functions.

Update the build rules for afs_shl_ext.dll, afscreds.exe
and afsconfig.exe to support the changes to fs_utils.c.

Remove non-windows components from symlink.c.

Change-Id: Ia7709235600f48c09282246e23b1f13d26f54e28
Reviewed-on: http://gerrit.openafs.org/4777
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agoRemove completed tasks from todo list, add info about git/gerrit preference
Jeff Blaine [Sun, 5 Jun 2011 20:38:53 +0000]
Remove completed tasks from todo list, add info about git/gerrit preference

Removed completed tasks (fstrace subcommand help in-binary and issue with
-noexecute vs. -dryrun in vos delentry) from todo list.  Added info about
git/gerrit preference for documentation help, but patches still allowed
to the openafs-doc list.

Change-Id: Ie49ee9a3072372163edf51f7abb246abef894f92
Reviewed-on: http://gerrit.openafs.org/4803
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agosrc/tests: Fix a couple of build issues
Simon Wilkinson [Mon, 30 May 2011 16:39:56 +0000]
src/tests: Fix a couple of build issues

Fix a couple of build problems with the old src/tests directory.
Firstly, now that we're using asnprintf in libauth, we need to include
libroken as a dependency here too.
Secondly, the build rule for dumptool is wrong. Fix it.

Change-Id: I2d9e2db169c617a323c71ac837045d2f36331321
Reviewed-on: http://gerrit.openafs.org/4805
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorx: Make private things private
Simon Wilkinson [Mon, 27 Sep 2010 10:51:20 +0000]
rx: Make private things private

Make rxi_* functions that are only used within the file that they're
defined in actually be private, rather than sharing them with the world.

Change-Id: I67b9a36e8ce3fa0d3258842a8d7a5fed31c787ce
Reviewed-on: http://gerrit.openafs.org/4804
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorxperf: -S takes an argument
Simon Wilkinson [Sat, 14 May 2011 07:37:31 +0000]
rxperf: -S takes an argument

The -S option to rxperf (which permits the maximum number of server
threads to be set) takes a parameter. Update the getopt string so
that we can give it one.

Change-Id: I7effc276743d7007f8a376534b4de1650f731b64
Reviewed-on: http://gerrit.openafs.org/4801
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>

12 years agorxperf: Build again
Simon Wilkinson [Sat, 14 May 2011 07:36:49 +0000]
rxperf: Build again

Bring the rxperf up to date with the current library requirements of
the rest of the tree.

Change-Id: If35ba0668163d5176cf9a3df1635b4cffbc10ff2
Reviewed-on: http://gerrit.openafs.org/4800
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agovolinfo: Use new form of cmd_AddParamWithOffset
Simon Wilkinson [Sun, 5 Jun 2011 20:29:08 +0000]
volinfo: Use new form of cmd_AddParamWithOffset

cmd_AddParmWithOffset was recently modified to change the order of
its arguments to something clearer. Modify vol-info to use this new
argument order

Change-Id: Id94badfffb4c41cc13abd727e5674c18c58311fb
Reviewed-on: http://gerrit.openafs.org/4802
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agoviced: Rationalise FS_STATS_DETAILED logging
Simon Wilkinson [Sun, 17 Apr 2011 18:14:01 +0000]
viced: Rationalise FS_STATS_DETAILED logging

Every RPC handler in the fileserver contained a copy of an identical
code block to handle starting, stopping, and recording detailed logging
statistics. Replace all of this with a structure and 4 helper functions,
which will make maintenance much easier.

Change-Id: Ie2b0fa13fcc3e261ba435f1560e7ab5adf477afb
Reviewed-on: http://gerrit.openafs.org/4765
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agousd: Move to using real 64bit quantities
Simon Wilkinson [Thu, 30 Sep 2010 19:24:49 +0000]
usd: Move to using real 64bit quantities

Move the usd library over to using afs_int64, rather than afs_hyper_t
now that everything in userspace is assumed to be 64bit capable.

Change-Id: I9ffc0996e1696d016dae96c0a2245cf5121c49a1
Reviewed-on: http://gerrit.openafs.org/4768
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agoviced: Remove old /vice/file/parms config file
Simon Wilkinson [Sun, 24 Apr 2011 19:52:08 +0000]
viced: Remove old /vice/file/parms config file

This commit removes support for overriding command line options with
the contents of /vice/file/parms. This option has never been documented,
and only supports setting at most 15 command options. Replace the old
function with one which checks for the existence of this file, and
outputs a warning if it is found.

Change-Id: I933475c0eb31e78dbc8a9d31b2486aa14f57bfb0
Reviewed-on: http://gerrit.openafs.org/4716
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agousd: Make test program build again
Simon Wilkinson [Thu, 30 Sep 2010 19:03:24 +0000]
usd: Make test program build again

Make the USD test program build again. Note that this isn't much use
unless you have a tape device connected to your machine.

Change-Id: I01bae4035ef3db966d9f79fb5796e3608efa2cfd
Reviewed-on: http://gerrit.openafs.org/4767
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agokvno invocation correction, language cleanup, afs/cell principal preferred
Jeff Blaine [Fri, 27 May 2011 19:49:52 +0000]
kvno invocation correction, language cleanup, afs/cell principal preferred

Properly show kvno command syntax, add information about preferring
'afs/cell' for the principal over 'afs', and changed "noted this down"
to "made note of"

Change-Id: I56fca2e34ce18634a155c8eb3b21760f2ee990c6
Reviewed-on: http://gerrit.openafs.org/4740
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovos: print_addrs never receives multi-homed addrs
Simon Wilkinson [Tue, 31 May 2011 07:31:55 +0000]
vos: print_addrs never receives multi-homed addrs

The magic address that tells the vlserver that a host is multi-homed,
and to look up the multi-homed address structure is an internal
implementation feature, which shouldn't be exposed to clients.

print_addrs is only ever called with the results of VL_GetAddrsU, which
has already converted any multi-homed pointers, so it doesn't need the
logic to handle them itself.

Change-Id: If8b6fd6fc433f413c3f3037160979e10c9a45a39
Reviewed-on: http://gerrit.openafs.org/4757
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agodoc: let configure find the XML tools if possible
Chas Williams (CONTRACTOR) [Thu, 2 Jun 2011 23:00:47 +0000]
doc: let configure find the XML tools if possible

configure should attempt to find the XML tools we need to process
the documentation.  if it can't, it should provide a safe default.
still allow the user to override via command line.

Change-Id: Ifaf3a5b090e93858c3d3c88363760c508030db90
Change-Id: Ib9558c37b04a4533e91b172a2a62039e4ed06d6f
Reviewed-on: http://gerrit.openafs.org/4766
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoxstat: cope with different size timeval structures
Michael Meffie [Fri, 24 Sep 2010 01:18:36 +0000]
xstat: cope with different size timeval structures

In xstat_fs_test and afsmonitor, try to display the xstat data
from the fileserver even if the fileserver has differently sized
timeval structures, or different word ordering, as the xstat
client program.

Change-Id: I16f32b25f0017cdcf5e41e583eeb129469c3aeb0
Reviewed-on: http://gerrit.openafs.org/2986
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux CM: Update wait code
Simon Wilkinson [Tue, 19 Apr 2011 07:18:56 +0000]
Linux CM: Update wait code

Update the wait code to use the more modern wait_event_freezable()
macros. If those macros are not available, fall back to the older
wait_event_interruptible macro, and build our own
wait_event_freezable on top of this.

These changes should simplify our interactions with the wait queue
and refrigerator bits of the kernel, as we're now using more standard
interfaces to them.

Change-Id: I5218c8a1b5b33f10355ef298008c53e416b267f9
Reviewed-on: http://gerrit.openafs.org/4753
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux CM: Use kernel allocator directly
Simon Wilkinson [Sun, 17 Apr 2011 22:43:51 +0000]
Linux CM: Use kernel allocator directly

In another few locations within the Linux portion of the cache
manager, directly use the kernel allocator. We can do so here
because we can guarantee that the amount of memory being allocated
is less than the page size, and there is a kfree() in all of the
exit paths, so we don't need the magic freeing behaviour, either.

Change-Id: I9c9f3a0b8243b66cb081cd2b35f0d27aaa378934
Reviewed-on: http://gerrit.openafs.org/4752
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux CM: Use kernel allocator directly for events
Simon Wilkinson [Sun, 17 Apr 2011 22:40:55 +0000]
Linux CM: Use kernel allocator directly for events

When allocating memory for our events system, use the kernel
allocator directly, rather than going via our shim. This is much
more efficient, but has the drawback that we are now responsible
for freeing our own memory, rather than it all being magically
given back upon shutdown.

Change-Id: I9cb31e4c6b5b4ff2497b627e7ab87716e6da6fa9
Reviewed-on: http://gerrit.openafs.org/4751
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoLinux CM: Files don't need a page
Simon Wilkinson [Sun, 17 Apr 2011 20:41:15 +0000]
Linux CM: Files don't need a page

We were using osi_AllocLargeSpace to allocate our files. This gives
a page to every struct osi_file we create, which seems a little bit
excessive. Just use kmalloc directly instead, and let the kernel's
allocator deal with the slabbing.

Change-Id: I40d32ad0d7090e2b3b60be983d4f441968dc69dc
Reviewed-on: http://gerrit.openafs.org/4750
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agolibafs: Tidy up iovec allocation and trimming
Simon Wilkinson [Sun, 17 Apr 2011 19:52:50 +0000]
libafs: Tidy up iovec allocation and trimming

Tidy up the way that we perform iovec allocation and trimming by
making the rest of the world look a little bit more like Darwin.

This relies upon a struct uio, followed by 16 iovecs, being able
to fit into a SmallSpace sized block. On the majority of 32 bit
systems, such a block is 256 bytes long (on AIX and HPUX it is
152 bytes). With a 32bit size_t, an iovec is 8 bytes, so 16 of
them is 128 bytes, and a struct uio is 24 bytes, giving a grand
total of 152.

Change-Id: I5243f034bcb4e1f5fa319c4f522229bd96eaae3d
Reviewed-on: http://gerrit.openafs.org/4749
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agoTidy up uio_t meaning
Simon Wilkinson [Sun, 17 Apr 2011 20:30:39 +0000]
Tidy up uio_t meaning

On IRIX, uio_t is typedef'd to "struct uio".
On Darwin, uio_t is typedef'd to "struct uio *".

Reduce the confusion by just not using "uio_t" in places where it
isn't being defined for us, and avoiding it completely in cross-platform
code.

Change-Id: I0cee370e25d10b1ca4627832097a9a9f1e83b4c2
Reviewed-on: http://gerrit.openafs.org/4748
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agolinux: rpm: Fix SELinux attributes on /afs when installing openafs-client package
Jonathan Billings [Wed, 1 Jun 2011 15:05:11 +0000]
linux: rpm: Fix SELinux attributes on /afs when installing openafs-client package

Since the directory /afs isn't included in the package manifest, but
rather created in a script in the openafs-client package, it never
gets the appropriate SELinux attributes that are required to mount a
volume (mnt_t).

This change fixes the problem by running '/sbin/restorecon' (if it is
an executable that exists) on the /afs directory after the
openafs-client package is installed, right after the directory is
created.

Change-Id: I3905cf8da8f7414e410acfa8df51b35abe057cd7
Reviewed-on: http://gerrit.openafs.org/4763
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: accept -sizeonly for -sizeOnly
Michael Meffie [Fri, 27 May 2011 22:17:44 +0000]
volinfo: accept -sizeonly for -sizeOnly

For consistency, allow -sizeonly (all lowercase letters) to
request the size summary. The old option name, -sizeOnly is
available as an alias.

Define the command line option parameter positions and use
those to set and look up the options.

Change-Id: Ie6a780e02bfa35cd5399364bab614b260c391abc
Reviewed-on: http://gerrit.openafs.org/4741
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: accept vice partition id for -part option
Michael Meffie [Fri, 27 May 2011 16:22:34 +0000]
volinfo: accept vice partition id for -part option

Accept a partition id for the -part option. For example, -part a
is the same as -part /vicepa.

Change-Id: I59d9cb71a49bbfc631c7975a859ebc3e5eccdf1a
Reviewed-on: http://gerrit.openafs.org/4739
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: comments
Michael Meffie [Fri, 27 May 2011 15:29:33 +0000]
volinfo: comments

Add doxygen style comment headers.

Change-Id: Id8e18a102e8aa5fbb0a0e0f3c58983d93bf2bb50
Reviewed-on: http://gerrit.openafs.org/4738
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: fix file size data type
Michael Meffie [Fri, 27 May 2011 14:27:03 +0000]
volinfo: fix file size data type

Use afs_sfsize_t for file size instead of int.

Change-Id: If68fca11183cd7b3ecd3750609f1b989af7445f5
Reviewed-on: http://gerrit.openafs.org/4737
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: avoid exit on errors
Michael Meffie [Fri, 27 May 2011 01:58:11 +0000]
volinfo: avoid exit on errors

Instead of exiting on errors, try to carry on.

Change-Id: Ia8da9403c57c19ac25a3ef4dac36c3e71bd1be25
Reviewed-on: http://gerrit.openafs.org/4736
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: refactor mode variables
Michael Meffie [Tue, 24 May 2011 14:28:37 +0000]
volinfo: refactor mode variables

Untangle the various global mode variables, which became muddled when dsizeOnly
and saveinodes were introduced. DumpInfo now indicates the default mode and
DumpVnodes means print the vnode entries, not scan but sometimes print.  Remove
unused globals.

Change-Id: I9d331a19afede864ad1d23477f5e3948e59558ec
Reviewed-on: http://gerrit.openafs.org/4735
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: refactor volume and vnode handling code
Michael Meffie [Mon, 23 May 2011 02:53:46 +0000]
volinfo: refactor volume and vnode handling code

Refactor volume and vnode handling code for better
maintainability.  Move the code invoked by -saveinodes to a new
function. Remove an unneeded else clause in HandleVolumes.

Change-Id: I02d9392ce065f78e5e84b902668b5d84242d7f5a
Reviewed-on: http://gerrit.openafs.org/4734
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: refactor size counters
Michael Meffie [Thu, 26 May 2011 01:54:06 +0000]
volinfo: refactor size counters

Put the volume, partition, and server size counters into structures.

Change-Id: I3bb7a25b39e191b7717dc725604fe5fe1be8045c
Reviewed-on: http://gerrit.openafs.org/4733
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovolinfo: refactor -sizeOnly printing
Michael Meffie [Wed, 25 May 2011 22:19:22 +0000]
volinfo: refactor -sizeOnly printing

Refactor the -sizeOnly output processing to reduce code
duplication and coupling with -saveinodes.

Change-Id: I4d1c53678732afebba83813be676a292e2d8e62c
Reviewed-on: http://gerrit.openafs.org/4732
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoEnable gencat for i386_fbsd_*
Ben Kaduk [Tue, 31 May 2011 19:25:35 +0000]
Enable gencat for i386_fbsd_*

The machines certainly have a /usr/bin/gencat, and I see nothing
in history to indicate a reason for this prevention.
Allow the 32-bit machines to build afszcm.cat and make packaging
more uniform between architectures.

Change-Id: If1017d28cc804d58cfb29019158ad5b3d70da9ac
Reviewed-on: http://gerrit.openafs.org/4760
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Add flags to extent address entries
Simon Wilkinson [Mon, 23 May 2011 05:24:09 +0000]
vlserver: Add flags to extent address entries

Add a "flags" field to the extent address entry so that we can store
per server bit flag information. Rename the header flags feel (and
corresponding macro) so that it's explicitly a header flag. Take
this opportunity to also fix this comment to clarify that the header
flags are not a copy of anything from the vlentry, but that they
must be at the same structure offset as the vlentry flags field (so
that something accessing an extent block as if it was a vlentry can
see what it is from the flags)

Change-Id: If8a4816418d9400fb971679c08b4777e7d83c983
Reviewed-on: http://gerrit.openafs.org/4776
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Make space in extent block explicit
Simon Wilkinson [Mon, 23 May 2011 05:20:35 +0000]
vlserver: Make space in extent block explicit

The address entry side of the union within the extent addr block
actually has a significant amount of free space. It looks as though
the original author assumed that a UUID required 16 32-bit words,
rather than 16 octets, and sized the structure to match.

Make the free space within the structure explicit, so that it can
be used for future expansion

Verified with
  gdb vlserver
    (gdb) print sizeof(struct extentaddr)
    $1 = 128

Change-Id: If67f669fb298763f054ce82447a4513c59ef7526
Reviewed-on: http://gerrit.openafs.org/4775
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Rationalise multi homed host processing
Simon Wilkinson [Thu, 19 May 2011 18:15:44 +0000]
vlserver: Rationalise multi homed host processing

The same code for getting extent structures for multi homed hosts
was scattered throughout vlprocs.c, sometimes with error handling,
and sometimes without. Rationalise all of this into a pair of
static inline functions, which do all of the hard work.

Change-Id: Ib0f55e5b5f455b07753409ebff2a5cd0ca188cda
Reviewed-on: http://gerrit.openafs.org/4774
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Use correct memsets in vlentry convertor
Simon Wilkinson [Thu, 19 May 2011 17:56:27 +0000]
vlserver: Use correct memsets in vlentry convertor

The various vlentry_to_<blah> conversion functions have obviously
been copy and pasted from each other. However, the size of the
structure which is being zeroed has not been updated when we are
zeroing different structures. Fix this, so that we always clear all
of the structure that we are filling.

Change-Id: Ic822e1d2b17494574074c332c7680e94d4701c66
Reviewed-on: http://gerrit.openafs.org/4773
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Clean up abort logic
Simon Wilkinson [Thu, 19 May 2011 17:53:27 +0000]
vlserver: Clean up abort logic

Clean up the failure logic in the server RPC handlers so that there
is always a single exit point upon aborts. This should make it much
easier to fix the various problems with cleaning up memory when
RPCs fail.

Change-Id: Ia5f8e97c37bf4aca1c8f2597a21eb54d1ba094fb
Reviewed-on: http://gerrit.openafs.org/4772
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Use correct base value when replacing
Simon Wilkinson [Thu, 19 May 2011 17:19:29 +0000]
vlserver: Use correct base value when replacing

When we're removing existing address entries the code calculates
a base and index value for each entry that we're removing an address
from. However, it then _uses_ a previously calculated base value,
with the new index. This works fine if the old base and the new base
match, but if they don't, chaos will ensue.

Fix to always use matched base and index pairs.

Change-Id: Ia592abdc1c58b5cf5776bb24e67aee708275a9b0
Reviewed-on: http://gerrit.openafs.org/4771
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Rename errorcode to code
Simon Wilkinson [Thu, 19 May 2011 16:57:30 +0000]
vlserver: Rename errorcode to code

The convention in the OpenAFS code is to use 'code' or 'ret' for
return values from functions. Rename 'errorcode' in vlprocs.c to
be in keeping with this convention.

Change-Id: Idffd6eccdd820cb602e5c7cd66ebaa4fbd37c6b5
Reviewed-on: http://gerrit.openafs.org/4770
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovlserver: Tidy up request counting
Simon Wilkinson [Thu, 19 May 2011 14:06:15 +0000]
vlserver: Tidy up request counting

Tidy up the counting of requests and aborts in the vlserver. Don't
hide a variable allocation within a macro, convert macros to inline
functions, and make it possible to not count particular operations
by passing in an opcode of 0.

Change-Id: Ifd26027ebb97a6039b6f7f7289ffbe166627390b
Reviewed-on: http://gerrit.openafs.org/4769
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoBuild system: Move install definitions to include
Simon Wilkinson [Sun, 14 Nov 2010 21:43:11 +0000]
Build system: Move install definitions to include

Move the definitions of the INSTALL_* variables out to
Makefile.config rather than replicating them in each file.

Change-Id: I5f74dcbf544a93716994418bee3be2c51a2a82d0
Reviewed-on: http://gerrit.openafs.org/4781
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoaklog: Remove Windows specific code from header
Simon Wilkinson [Sat, 4 Jun 2011 17:04:48 +0000]
aklog: Remove Windows specific code from header

When commit 3f54c934b9c933d5f34644a096c821375db17d97 removed all of
the Windows code from aklog, it missed the stuff in aklog.h. Get
rid of this too, for clarity.

Change-Id: I6d408ffc313d18fd512fa03494a15ec628f1e292
Reviewed-on: http://gerrit.openafs.org/4782
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agoubik: Initialise global version lock before use
Simon Wilkinson [Sat, 4 Jun 2011 15:41:41 +0000]
ubik: Initialise global version lock before use

Commit e4ac552ab79be21d90397079eaf6be7050497752 introduced a global
version lock to ubik, but doesn't initialise this lock before make use
of it. On platforms which require that pthread mutexes are initialsed,
this causes an assertion failure.

Initialise this lock at the same time as we MUTEX_INIT all of our other
locks.

Change-Id: Ib5ef75d443101a823738fba55c0760cb1848dbcf
Reviewed-on: http://gerrit.openafs.org/4780
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agocmd: Reorder cmd_AddParmAtOffset arguments
Michael Meffie [Mon, 30 May 2011 18:23:49 +0000]
cmd: Reorder cmd_AddParmAtOffset arguments

Reorder the arguments of this recently introduced function to
make client code more readable.

Change-Id: I37f662f849bd96176230f75783e2a1c62d94b8c9
Reviewed-on: http://gerrit.openafs.org/4755
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agoxstat: print collection values in debug mode
Michael Meffie [Mon, 13 Dec 2010 19:53:50 +0000]
xstat: print collection values in debug mode

Print the values of the integers returned in the collection data
when the -debug option is given to xstat_fs_test and xstat_cm_test
test programs. This allows us to at least see what the unformatted
values are when there is a mismatch in timeval sizes between the
host and client (aka the 32/64 bit xstat bug). This change could
break scripts which call the xstat test programs with the debug
option. New debug output are prepended with 'debug:' to be
easily ignored.

Change-Id: I12d8d27306c50fb9f35ade2a080b3bc20542b63f
Reviewed-on: http://gerrit.openafs.org/2878
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agofs: add support for relative ACL changes
Rainer Strunz [Sun, 17 Apr 2011 23:09:33 +0000]
fs: add support for relative ACL changes

This change permits "fs setacl" to change ACLs in a relative
manner, rather than just setting rights absolutely as it is
done now.

If a single plus (+) or minus (-) character is appended to
the rights' letters argument, the new rights are computed
relatively to the existing ones.

A few examples should make clear that behaviour:

old rights: rights set: new rights:
-----------------------------------------------
rl a+ rla
rlid idwa- rl
rla write- a
rl write- [none] (ie. entry deleted)
[any] read= rl

As shown in the last example, a '=' character got implemented
also (and for free) as an alternative writing of the current
and default behaviour of just setting an ACL.

FIXES 123962

Change-Id: If15a4ab3c69ec44a42c8746a0b93f5e8b785d61e
Reviewed-on: http://gerrit.openafs.org/4496
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

12 years agodir: Prototype and function name cleanup
Simon Wilkinson [Fri, 6 May 2011 09:40:38 +0000]
dir: Prototype and function name cleanup

Tidy up typing in the dir package, so that we have a specific type
for a directory file handle.

Also rename all of the functions to afs_dir_* globablly, rather than
just renaming for kernel code.

Change-Id: I6750a8eb9f0606d5debf9d677a92b9c8a63dbcf3
Reviewed-on: http://gerrit.openafs.org/4745
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

12 years agodir: Explicitly state buffer locations for data
Simon Wilkinson [Wed, 27 Apr 2011 18:24:56 +0000]
dir: Explicitly state buffer locations for data

DNew and DRead always returned directory page aligned pointers,
however the directory code further manipulates those pointers,
requiring the DRelease be able to fill a page when passed a pointer
to any address within that page. This is relatively straightforward
in the userspace implementation, but much more complex in the kernel,
where all of the directory pages are not necessarily contiguous.

Resolve this issue by making DNew, DRead and DRelease all return a
new structure, struct DirBuffer. This structure contains both a
pointer to the data, and an implementation specific private
pointer to data describing the page containing the address. The
directory code is free to play with the data pointer as it wishes,
as long as the private pointer to the page is passed through intact.

DRelease (and DVOffset) can then simply use the private pointer for
their operations, without having to walk page lists.

This new behaviour also requires changes to the directory functions
GetBlob, FindItem and FindFid which all return pointers to directory
data.

Change-Id: I8b8b003b789976b593a7c752969f47d55f4ee707
Reviewed-on: http://gerrit.openafs.org/4744
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agodoc: bos != vos
Simon Wilkinson [Mon, 30 May 2011 19:11:49 +0000]
doc: bos != vos

As it says on the tin

Change-Id: I2c03f51303d01ccc772c1fc0b2ed1dd0b176892d
Reviewed-on: http://gerrit.openafs.org/4764
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

12 years agovos: Don't leak/overflow bulkaddrs
Simon Wilkinson [Tue, 31 May 2011 07:28:51 +0000]
vos: Don't leak/overflow bulkaddrs

The vos listaddrs command repeatedly reuses a bulkaddrs array. It
zeros it once (without freeing the allocated memory), and then
repeatedly uses it without zeroing in a loop. This means that the XDR
library assumes that a sufficiently large block is already allocated,
doesn't reallocate for the incoming data, or check limits.

This means that if the first call to VL_GetAddrsU returns a set of
addresses smaller than subsequent calls, we'll write past the end
of the array, causing memory corruption.

Fix this by freeing the arrays correctly with each pass of the call.

Change-Id: I540d369c1529ec3574548f42cbd48b6c2b38cebd
Reviewed-on: http://gerrit.openafs.org/4756
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>