| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
systemd doesn't like the service and socket files being executable.
Fix the permissions on the man pages while we're at it.
Perserve time stamps of all files too.
|
| |
|
|
|
|
|
|
|
|
| |
There was an issue when we rebooted a node via qarsh.
The packet size would make it back from qarshd, but none of
the data so we would get stuck in a read(). We needed to
avoid a blocking read() and check for a heart beat while we
wait for the rest of the packet.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
When we caused system calls not to be restarted on SIGCHLD for select()
in qarshd, we also allowed all system calls to be interrupted, including
read() and write() in recv/send_packet(). Go back through the loop
when we are interrupted.
|
| |
|
|
|
|
|
|
| |
If the writev() returned less than expected, we would never
check it. In order to make retrying the write simpler, I
modelled the new send_packet() after recv_packet().
|
| |
|
|
|
|
|
|
|
|
|
| |
We ran into an issue where qarsh would wait for 3 seconds
after a command ran. This was traced back to the select()
in handle_qarsh() being restarted when SIGCHLD was received.
I moved the waitpid() to just before the select() and turned off
the signal restart. This closes those timing windows and allows
qarshd to quickly finish after the child exits.
|
|
|
|
|
|
|
| |
After a long running command or when multiple qarsh processes
are running in parallel, it's hard to know which host is having
trouble when a "Remote host rebooted" message shows up. Include
the host name in these message to make them more informative.
|
|
|
|
|
|
| |
This is an option from ssh which disables pseudo-tty allocation.
Since we don't allocate them in the first place, we're compatible with
it.
|
|
|
|
| |
This was hitting easily on RHEL5 systems
|
| |
|
| |
|
|
|
|
|
| |
Instead of moving the setup for SIGCHLD handling, I'm removing it.
waitpid() isn't that expensive and we know the pid we are waiting for.
|
|
|
|
|
| |
The example from our SELinux devs used this construct so
we're going to follow suit.
|
| |
|
|
|
|
|
| |
Also drop the rstat of the parent directory, just let
the remote side send us an error.
|
|
|
|
|
|
|
| |
Pass errors up from the transfer functions so we can
keep track of errors and continue trying to transfer
all files. Make output more consistent and all on
stderr.
|
|
|
|
| |
We never did support recursive copy and probably never will.
|
| |
|
|
|
|
|
|
| |
If we don't get a heart beat when qarsh starts, print a warning to check
on the btimed service. Commands could be stopped early if it doesn't
produce any output and qarsh thinks the host is down.
|
| |
|
| |
|
|
|
|
|
| |
We really don't need this field since we
always copy data sequentially.
|
| |
|
|
|
|
|
|
|
|
|
| |
This change breaks the qacp protocol!
Before there was a chance we would exit before receiving and checking
all packets from qarshd. Now we look at all packets and check them.
Use data allow packets and larger buffers.
Handle errors on the write end.
|
|
|
|
|
|
|
| |
We do ignore SIGPIPE inside qarshd so we can handle
the error and continue. We do want commands we run
to receive SIGPIPE by default so they may die if they
don't handle SIGPIPE.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
If xiogen is flooding requests across qarsh and
xdoio decides to stop, we need to handle that gracefully.
Also, making the pipe non-blocking was not a good idea, xdoio
gets the read error EAGAIN and stops there.
|
| |
|
| |
|
|
|
|
|
| |
We don't need 32bits for packet type or remote fd.
Keeping the field small also helps with reading traces.
|
|
|
|
|
| |
We are already closing it in recvfiles because we could create multiple
connections. This caused us to close the fd twice.
|
|
|
|
|
|
|
| |
When qarshd is run via xinetd, stderr still goes out the socket
and messages from sockutil.c or qarsh_packet.c can interfere
with the protocol. Create a thin wrapper which qacp and qarsh can
send to stderr and qarshd can send to syslog.
|
| |
|
| |
|
|
|
|
| |
Believe it or not, we can get short reads here.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Since we keep a socket open we don't need this anymore
and freeing it causes problems.
|
| |
|
|
|
|
|
|
|
|
|
| |
This coordinates the buffer sizes with the
max packet size. qarshd and qarsh will probably break
if this value does not match between client and server
builds. Also increase the value to reduce overhead.
A max packet size of 16k only yields 40MB/s. Increase
that to 128k and we can do 500MB/s.
|
| |
|