[request-sponsor] Adding status support to dd

2007-04-06 Thread Bart Smaalders
James Carlson wrote:
 James Carlson writes:
 Frank Van Der Linden writes:
 Matty wrote:
 Howdy,

 Most Linux and BSD distributions ship with a version of dd that
 displays the status of a copy operation when a SIGUSR1 signal is
 received. 
 Just a correction. I know this is late in the game, and I don't want to 
 prolong the discussion much, since this isn't the right list, but: *BSD 
 uses SIGINFO, which is generated via the tty code when the user presses 
 ^T. Several tools implement a status handler that uses SIGINFO.
 CR 6310532, now celebrating its first birthday.
 
 Ah, surprise.  I filed it even longer ago.  ;-}
 

Sounds like we could implement the Linux behavior wrt
SIGUSR1 and then add SIGINFO support trivially once
that appeared in the terminal handler...

- Bart


-- 
Bart Smaalders  Solaris Kernel Performance
barts at cyber.eng.sun.com  http://blogs.sun.com/barts



[request-sponsor] Adding status support to dd

2007-04-05 Thread Bart Smaalders
Bonnie Corwin wrote:
 Hi Bart,
 
 I assume your comment about helping to get this into shape means you 
 will sponsor Ryan's work.  Can someone file a bug, if there isn't one 
 already, so I can add this to the table?
 
 Thanks.
 
 Bonnie


6543165 dd should display incremental progress ala linux in response to 
sigusr1

- Bart


-- 
Bart Smaalders  Solaris Kernel Performance
barts at cyber.eng.sun.com  http://blogs.sun.com/barts



[request-sponsor] Adding status support to dd

2007-04-04 Thread Bart Smaalders
Matty wrote:
 Howdy,
 
 Most Linux and BSD distributions ship with a version of dd that
 displays the status of a copy operation when a SIGUSR1 signal is
 received. For some reason /usr/bin/dd on Solaris hosts doesn't contain
 this capability (it has a signal handler for SIGINT which causes stats
 to be displayed, but the handler calls exit() after printing the
 statistics), and I would like to add it. After reading through the
 source code for dd.c, it looks like adding this support would be as
 simple as installing a signal handler for SIGUSR1, and having it call
 the function stats. I am attaching code (which I derived from the dd
 source code that comes with Fedora Core Linux) [1] to add this support
 to /usr/bin/dd, and have tested it on my build 54 machine. Would it be
 possible to integrate this or something similar to opensolaris
 (assuming this doesn't break some rule defined by the SUS or POSIX)?
 
 Thanks,
 - Ryan
 -- 
 UNIX Administrator
 http://prefetch.net
 
 [1]
 
 /* Create a signal handler for SIGUSR1 so dd can display stats for
 active copies.*/
 struct sigaction sa;
 memset(sa, 0, sizeof(sa));
 sa.sa_handler = stats;
 sa.sa_flags = SA_RESTART;
 sigemptyset(sa.sa_mask);
 sigaction(SIGUSR1, sa, 0);
 ___
 request-sponsor mailing list
 request-sponsor at opensolaris.org

The code changes are obvious enough.  However, there exists a small
possibility of deadlock if the process receives a signal as
it is encountering errors or exiting, as neither fprintf and
gettext are async signal safe. If either routine holds a
lock when it is interrupted and then gets called again in
the signal handler, things can go badly awry.  We don't actually
deadlock (although perhaps we should), but output, etc, can get
rather garbled.

In general, a cleaner way to handle this is to block sigusr1 in the main
thread, and create a thread to handle the sigusr1 and sigint
synchronously using sigwait(2).  If sigint is caught, the
thread calls stats() and exits.  If sigusr1 is caught, the
thread calls stats() and then calls sigwait(2) again.

This is prob. overkill in this situation... since the main loop
will only do stdio just before exiting, it could set
signal handlers to SIG_IGN before doing any IO which should
prevent any problems from arising.


- Bart




-- 
Bart Smaalders  Solaris Kernel Performance
barts at cyber.eng.sun.com  http://blogs.sun.com/barts



[request-sponsor] Requesting sponsor for CR# 6488593 (/etc/profile should set TMPDIR to /tmp/$LOGNAME/) ...

2006-11-02 Thread Bart Smaalders
Darren J Moffat wrote:
 Roland Mainz wrote:
 Hi!

 

 Requesting sponsor for CR# 6488593 (/etc/profile should set TMPDIR to
 /tmp/$LOGNAME/) - patch is included in the RFE...
 
 This will I believe need an ARC case since it is a change in default
 behaviour.   It also should be done for all shells not just ones
 that read /etc/profile.
 
 Since I do this myself in my own .profile I feel duty bound to stand up 
 to the plate and by your sponsor for this.  So sign me up for putback
 sponsor and I'll be ARC case submitter too.
 

Good idea (I use this myself :-)).  Should the directory be created
700 by default?

- Bart


-- 
Bart Smaalders  Solaris Kernel Performance
barts at cyber.eng.sun.com  http://blogs.sun.com/barts