From: Kern Sibbald Date: Fri, 3 Oct 2008 06:24:44 +0000 (+0000) Subject: Update X-Git-Tag: Release-3.0.0~896 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d3f02e6f1a86f0445cce8cdda0c199f894a5cc04;p=bacula%2Fdocs Update --- diff --git a/docs/manuals/en/concepts/concepts.kilepr b/docs/manuals/en/concepts/concepts.kilepr index 6e75eff5..b95b90d6 100644 --- a/docs/manuals/en/concepts/concepts.kilepr +++ b/docs/manuals/en/concepts/concepts.kilepr @@ -161,10 +161,10 @@ order=-1 [item:newfeatures.tex] archive=true -column=0 +column=22 encoding=UTF-8 highlight=LaTeX -line=1188 +line=1224 open=true order=0 diff --git a/docs/manuals/en/concepts/newfeatures.tex b/docs/manuals/en/concepts/newfeatures.tex index 4c4bba09..9b067533 100644 --- a/docs/manuals/en/concepts/newfeatures.tex +++ b/docs/manuals/en/concepts/newfeatures.tex @@ -1232,7 +1232,10 @@ Called when done restoring a file. \subsection{pluginIO(bpContext *ctx, struct io\_pkt *io)} Called to do the input (backup) or output (restore) of data from or to a -file. +file. These routines simulate the Unix read(), write(), open(), close(), +and lseek() I/O calls, and the arguments are passed in the packet and +the return values are also placed in the packet. In addition for Win32 +systems the plugin must return two additional values (described below). \begin{verbatim} enum { @@ -1247,15 +1250,80 @@ struct io_pkt { int32_t func; /* Function code */ int32_t count; /* read/write count */ mode_t mode; /* permissions for created files */ - int32_t flags; /* open flags (e.g. O_WRONLY ...) */ + int32_t flags; /* Open flags */ char *buf; /* read/write buffer */ + const char *fname; /* open filename */ int32_t status; /* return status */ int32_t io_errno; /* errno code */ - int32_t whence; - boffset_t offset; + int32_t lerror; /* Win32 error code */ + int32_t whence; /* lseek argument */ + boffset_t offset; /* lseek argument */ + bool win32; /* Win32 GetLastError returned */ }; \end{verbatim} +The particular Unix function being simulated is indicated by the {\bf func}, +which will have one of the IO\_OPEN, IO\_READ, ... codes listed above. +The status code that would be returned from a Unix call is returned in +{\bf status} for IO\_OPEN, IO\_CLOSE, IO\_READ, and IO\_WRITE. The return value for +IO\_SEEK is returned in {\bf offset} which in general is a 64 bit value. + +When there is an error on Unix systems, you must always set io\_error, and +on a Win32 system, you must always set win32, and the returned value from +the OS call GetLastError() in lerror. + +For all except IO\_SEEK, {\bf status} is the return result. In general it is +a positive integer unless there is an error in which case it is -1. + +The following describes each call and what you get and what you +should return: + +\begin{description} + \item [IO\_OPEN] + You will be passed fname, mode, and flags. + You must set on return: status, and if there is a Unix error + io\_errno must be set to the errno value, and if there is a + Win32 error win32 and lerror. + + \item [IO\_READ] + You will be passed: count, and buf (buffer of size count). + You must set on return: status to the number of bytes + read into the buffer (buf) or -1 on an error, + and if there is a Unix error + io\_errno must be set to the errno value, and if there is a + Win32 error, win32 and lerror must be set. + + \item [IO\_WRITE] + You will be passed: count, and buf (buffer of size count). + You must set on return: status to the number of bytes + written from the buffer (buf) or -1 on an error, + and if there is a Unix error + io\_errno must be set to the errno value, and if there is a + Win32 error, win32 and lerror must be set. + + \item [IO\_CLOSE] + Nothing will be passed to you. On return you must set + status to 0 on success and -1 on failure. If there is a Unix error + io\_errno must be set to the errno value, and if there is a + Win32 error, win32 and lerror must be set. + + \item [IO\_LSEEK] + You will be passed: offset, and whence. offset is a 64 bit value + and is the position to seek to relative to whence. whence is one + of the following SEEK\_SET, SEEK\_CUR, or SEEK\_END indicating to + either to seek to an absolute possition, relative to the current + position or relative to the end of the file. + You must pass back in offset the absolute location to which you + seeked. If there is an error, offset should be set to -1. + If there is a Unix error + io\_errno must be set to the errno value, and if there is a + Win32 error, win32 and lerror must be set. + + Note: Bacula will call IO\_SEEK only when writing a sparse file. + +\end{description} + + \subsection{createFile(bpContext *ctx, struct restore\_pkt *rp)} Called to create a file during a Restore job before restoring the data. The data in the