vtrftpd(1) - Real-time enabled FTP daemon


/usr/vtr/bin/vtrftpd [ ftpd options ][ -Gbps ][ -Ppri ]


vtrftpd is a real-time enabled version of the IRIX FTP daemon, ftpd. It provides all the features of the basic ftpd plus the following additional capabilities:

vtrftpd accepts the options supported by ftpd (see FTPD(1M)). In addition, the following options may be specified:

Specifies the default I/O rate to be used when transferring files to or from a real-time subvolume. This value is used only if the file does not match one of the patterns in the configuration file or if the matching pattern does not specify an I/O rate. This option overrides vtr.ftp.io.rate.default as specified in the configuration file.
The daemon runs at the specified real-time priority, ensuring that transfers are not delayed by other activities (real-time or not) in the system. This option overrides vtr.ftp.cpu.priority as specified in the configuration file.


The real-time configuration file, /usr/vtr/config/vtrftpd.conf, can be used to specify the guaranteed disk bandwidth rate reserved by new files stored on the real-time subvolume of a filesystem.

Each line in the configuration file specifies a filename pattern and, optionally, a Guaranteed I/O bit-rate. For example:

/usr/vtr/clips/new/* 10000000
/usr/vtr/clips/*.dif 30000000

specify that all new files stored under /usr/vtr/clips/new will be transferred at a guaranteed disk bandwidth rate of 10Mbps, while all new files under /usr/vtr/clips with the file type ".dif" will be transferred with a disk rate of 30Mbps.

If the configuration file is missing or does not contain any filename patterns, new files will be stored into the real-time subvolume of a filesystem using a default I/O rate of 64000000. The default I/O rate may be specified using either the -G option or vtr.ftp.io.rate.default configuration variable.

The configuration file may specify values for certain configuration variables. The name of the variable is specified followed by whitespace and the value of the variable on a single line.

The following variables may be specified:

vtr.ftp.io.rate.default specifies the default I/O rate to use for transfers to or from a real-time subvolume. This rate is used if no filename pattern matching the name of the file to be transferred is found in the configuration file.

vtr.ftp.io.rate.enforce specifies whether a transfer will attempt to use additional disk bandwidth beyond the Guarantee I/O rate specified for the transfer. If the value is 0, additional bandwidth may be used if available. If the value is 1, the transfer will not exceed the specified I/O rate. The default is to 1.

vtr.ftp.grio.version specifies the revision of GRIO to use. 1 for GRIOv1, 2 for GRIOv2, and 0 to disable GRIO.

vtr.ftp.procs.max limits the maximum number of simultaneous transfers to the value of this control. The default is 100.

vtr.ftp.log_level.file specifies the level of logging that is directed to the log file (/usr/vtr/adm/logs/vtrftpdlog). A value of -1 logs only warnings and errors, 0 logs additional informational messages, and 1-3 correspond to debugging output. The default is 0.

vtr.ftp.marks disables mark points for DIF clips.

vtr.ftp.clobber can be specified as overwrite (overwrite the clip without any check), delete (delete the clip before writing it; if the delete fails, the ftp fails), or fail (fail if the clip exists).

vtr.ftp.update.interval is the interval between successive MSB updates. A value of 0 never updates MSB's clip cache. A value of 1 will update the clip cache every time a block of data is transferred, a value of 2 will update every other time,etc.

vtr.ftp.update.failures is the maximum number of update failures before vtrftpd quits trying to update the clip cache. A value of 0 will disable updates.

vtr.ftp.datatype.default is the default datatype. 1 is TYPE_A (ascii), 2 is TYPE_E (ebcdic), 3 is TYPE_I (image/binary), 4 is TYPE_L (local). See /usr/include/arpa/ftp.h The default is TYPE_A.

vtr.ftp.cpu.priority specifies the real-time priority that vtrftpd will run at during a file transfer. Real-time priorities are in the range 0 to 255, however the specified priority should not exceed 126.

The following variables are intended for expert users:

vtr.ftp.timeout.flush is the time after which a receiving vtrftpd process flushes partial extents in memory (normally vtrftpd would wait for the full extent to be available before writing it out). The default is 100 msec.

vtr.ftp.timeout.transfer is the time after which a receiving vtrftpd process concludes that there is nothing more to read (the sending host could be dead or the link could be down), and ends the transfer instead of waiting indefinitely. The default is 60000 msec.

vtr.ftp.timeout.growth is the age in milliseconds after the last mod of a file before vtrftpd decides that a file has stopped growing. The default is 10000 msec.

vtr.ftp.wait.growth is the sleep interval in clock ticks between successive checks for file growth. The default is 100.

vtr.ftp.wait.flush is the sleep interval in clock ticks before the last extent of a file is read. The default is 100.


If a DIF file is ftp'd from the video server, and start, in and/or out points have been set on the DIF file, vtrftpd will transfer only the frames between the in and out points instead of the whole file. The whole file is transferred if the mark points are inconsistent or absent. To disable marks, the toggle command site marks may be used. The ability to transfer between mark points is limited to DIF clips only at this time.


vtrftpd attempts to update the clip cache by using the MVCP CADD command. This is useful in the absence of fsmon to keep the clip cache up-to-date. The frequency of updates and the tolerance to failures may be controlled using the above configuration controls.


vtrftpd is able to stream a clip that is being recorded before the recording is finished. When vtrftpd reaches the end of file, it does not immediately terminate the connection. Instead it polls for file growth. The above controls can be used to control the sleep periods in between checks or the length of time that must elapse after the last modification to a clip before vtrftpd concludes that the file is no longer growing. Please note that in order to have this tail mode facility for index files, you must use the "site win" command. You can also daisy chain a number of ftp's to stream a file through a string of servers.


The following MSB-specific site commands exist:

site marks toggles between enabling and disabling mark points. The default is that marks are enabled. This feature is relevant only to DIF clips with valid mark points.

site editpoints clip prints the editpoints of clip clip.

site editpoints tc1 tc2 tc3 clip sets start, in and out points of clip to tc1, tc2, tc3 respectively.

site bandwidth prints the default grio bandwidth.

site bandwidth bw sets the default grio bandwidth to bw.


vtrftpd cannot be used to transfer MSB content of format movie/vframe or movie/vclip. It can be used to transfer mpeg2 files, but it is up to the application to (re-)generate MSB mpeg2 index files via the vtrmpegutil utility or transfer the index files as well. It does not respect in/out points on any format other than DIF. An attempt to use vtrftpd to transfer a clip of one of the above unsupported formats may appear to work, but the clip will not be usable.


ftpd(1M), vtrmpegutil(1M)