[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [RFR] man://manpages-de/man2/open.2.po (Teil 4)



Hallo Helge,

> #.  See http://bugzilla.kernel.org/show_bug.cgi?id=7253
> #.  "Open of a large file on 32-bit fails with EFBIG, should be EOVERFLOW"
> #.  Reported 2006-10-03
> #. type: Plain text
> msgid ""
> "I<pathname> refers to a regular file that is too large to be opened.  The "
> "usual scenario here is that an application compiled on a 32-bit platform "
> "without I<-D_FILE_OFFSET_BITS=64> tried to open a file whose size exceeds "
> "I<(1E<lt>E<lt>31)-1> bytes; see also B<O_LARGEFILE> above.  This is the "
> "error specified by POSIX.1; in kernels before 2.6.24, Linux gave the error
> "
> "B<EFBIG> for this case."
> msgstr ""
> "I<pathname> bezieht sich auf eine normale Datei, die zu groß zum Öffnen
> ist. " "Das normale Szenario ist, dass eine auf einer 32-Bit-Plattform ohne
> I<-" "D_FILE_OFFSET_BITS=64> übersetzte Anwendung versuchte, eine Datei zu
> öffnen, " "deren Größe I<(1E<lt>E<lt>31)-1> byte überschritt; siehe auch
> B<O_LARGEFILE> " "weiter oben. Dies ist der durch POSIX.1 festgelegte
> Fehler; in Kerneln vor " "2.6.24 gab Linux in diesem Fall den Fehler
> B<EFBIG>."

s/byte/Byte/
s/B<EFBIG>./B<EFBIG> zurück./


> #. type: Plain text
> msgid ""
> "When a file descriptor is duplicated (using B<dup>(2)  or similar), the "
> "duplicate refers to the same open file description as the original file "
> "descriptor, and the two file descriptors consequently share the file offset
> " "and file status flags.  Such sharing can also occur between processes: a
> " "child process created via B<fork>(2)  inherits duplicates of its
> parent's " "file descriptors, and those duplicates refer to the same open
> file " "descriptions."
> msgstr ""
> "Wenn ein Dateideskriptor (mit B<dup>(2) oder ähnlichem) dupliziert wird, "
> "bezieht sich das Duplikat auf die gleiche offene Dateideskription wie der "
> "ursprüngliche Datedeskriptor und die zwei Dateideskriptoren haben "
> "konsequenterweise den gleichen Dateiversatz und die gleichen "
> "Dateistatusschalter. Solch ein gemeinsamer Satz kann auch zwischen
> Prozessen " "auftreten: ein mit B<fork>(2) erstellter Kindprozess erbt
> Duplikate der " "Dateideskriptoren seines Elternprozesses und diese
> Duplikate beziehen sich " "auf die gleichen offenen Datei-Deskriptoren."

Hier verwendest Du Dateideskriptor und später Datei-Deskriptoren.


> #. type: Plain text
> msgid ""
> "To understand the difference between the two types of completion, consider
> "
> "two pieces of file metadata: the file last modification timestamp "
> "(I<st_mtime>)  and the file length.  All write operations will update the "
> "last file modification timestamp, but only writes that add data to the end
> "
> "of the file will change the file length.  The last modification timestamp
> is " "not needed to ensure that a read completes successfully, but the file
> length " "is.  Thus, B<O_DSYNC> would only guarantee to flush updates to
> the file " "length metadata (whereas B<O_SYNC> would also always flush the
> last " "modification timestamp metadata)."
> msgstr ""
> "Um den Unterschied zwischen den zwei Arten von Vervollständigung zu
> verstehen, " "betrachen Sie zwei verschiedene Dateimetadaten: der
> Zeitstempel der letzten " "Änderung (I<st_mtime>) und die Dateilänge. Alle
> Schreibaktionen "
> "aktualisieren den Zeitstempel der letzten Dateiänderung, aber nur "
> "Schreibaktionen, die Daten am Ende der Datei hinzufügen, müssen die "
> "Dateilänge ändern. Der Zeitstempel der letzten Änderung wird nicht
> benötigt, " "um sicherzustellen, dass eine Leseaktion erfolgreich
> abgeschlossen werden " "kann, aber die Dateilänge wird dafür benötigt.
> Daher würde B<O_DSYNC> nur " "garantieren, dass Aktualisierungen der
> Dateilängen-Metadaten rausgeschoben " "werden (während B<O_SYNC> immer auch
> das Metadatum des Zeitstempel der " "letzten Änderung rausschieben würde)."

s/der Zeitstempel/den Zeitstempel/
s/des Zeitstempel/des Zeitstempels/


> #. type: Plain text
> msgid ""
> "Before Linux 2.6.33, Linux implemented only the B<O_SYNC> flag for "
> "B<open>().  However, when that flag was specified, most filesystems
> actually " "provided the equivalent of synchronized I/O I<data> integrity
> completion (i." "e., B<O_SYNC> was actually implemented as the equivalent
> of B<O_DSYNC>)." msgstr ""
> "Vor Linux 2.6.33 implementierte Linux nur den Schalter B<O_SYNC> für "
> "B<open>(). Als dieser Schalter spezifiziert wurde, stellten die meisten "
> "Dateisysteme das Äquivalent von synchronisierter E/A I<Daten>-"
> "Integritätsvervollständigung bereit (d.h. B<O_SYNC> war tatsächlich als "
> "Äquivalent von B<O_DSYNC> implementiert)."

Bindestrich hinter I/O fehlt


> #. type: Plain text
> msgid ""
> "Opening the read or write end of a FIFO blocks until the other end is also
> "
> "opened (by another process or thread).  See B<fifo>(7)  for further
> details." msgstr ""
> "Öffnen des Lese- oder Schreibenendes eines FIFOS blockiert, bis das andere
> "
> "Ende auch geöffnet wurde (durch einen anderen Prozess oder Thread). Siehe "
> "B<fifo>(7) für weitere Details."

s/Schreibenendes/Schreib-Endes/ 


> #. type: Plain text
> msgid ""
> "The B<O_DIRECT> flag may impose alignment restrictions on the length and "
> "address of user-space buffers and the file offset of I/Os.  In Linux "
> "alignment restrictions vary by filesystem and kernel version and might be "
> "absent entirely.  However there is currently no filesystem-independent "
> "interface for an application to discover these restrictions for a given
> file " "or filesystem.  Some filesystems provide their own interfaces for
> doing so, " "for example the B<XFS_IOC_DIOINFO> operation in B<xfsctl>(3)."
> msgstr ""

Der Schalter B<O_DIRECT> könnte Ausrichtungsbeschränkungen in der Länge und 
Adresse der Puffer im Benutzerbereich und dem Dateiversatz von E/As verhängen. 
In Linux variieren die Ausrichtungsbeschränkungen je nach Dateisystem und 
Kernelversion und können auch ganz fehlen. Es gibt jedoch derzeit keine 
dateisystemunabhängige Schnittstelle für eine Anwendung, um diese 
Beschränkungen für eine gegebene Datei oder ein Dateisystem aufzufinden. Einige 
Dateisysteme stellen zu diesem Zweck ihre eigenen Schnittstellen bereit, 
beispielsweise die Transaktion B<XFS_IOC_DIOINFO> in B<xfsctl>(3).


> #. type: Plain text
> msgid ""
> "Under Linux 2.4, transfer sizes, and the alignment of the user buffer and "
> "the file offset must all be multiples of the logical block size of the "
> "filesystem.  Since Linux 2.6.0, alignment to the logical block size of the
> "
> "underlying storage (typically 512 bytes) suffices.  The logical block size
> "
> "can be determined using the B<ioctl>(2)  B<BLKSSZGET> operation or from the
> " "shell using the command:"
> msgstr ""

Unter Linux 2.4 müssen Übertragungsgrößen, die Ausrichtung des Benutzerpuffers 
und der Dateiversatz Vielfache der logischen Blockgröße des Dateisystems sein. 
Seit Linux 2.6.0 reicht ein Ausrichtung an der logischen Blockgröße des 
darunterliegenden Speichers (normalerweise 512 Byte) aus. Die logische 
Blockgröße kann mit der Transaktion B<BLKSSZGET> von B<ioctl>(2) festgelegt 
werden oder mittels des Shell-Befehls:


> #. type: Plain text
> msgid ""
> "B<O_DIRECT> I/Os should never be run concurrently with the B<fork>(2)  "
> "system call, if the memory buffer is a private mapping (i.e., any mapping "
> "created with the B<mmap>(2)  B<MAP_PRIVATE> flag; this includes memory "
> "allocated on the heap and statically allocated buffers).  Any such I/Os, "
> "whether submitted via an asynchronous I/O interface or from another thread
> "
> "in the process, should be completed before B<fork>(2)  is called.  Failure
> "
> "to do so can result in data corruption and undefined behavior in parent and
> " "child processes.  This restriction does not apply when the memory buffer
> for " "the B<O_DIRECT> I/Os was created using B<shmat>(2)  or B<mmap>(2) 
> with the " "B<MAP_SHARED> flag.  Nor does this restriction apply when the
> memory buffer " "has been advised as B<MADV_DONTFORK> with B<madvise>(2),
> ensuring that it " "will not be available to the child after B<fork>(2)."
> msgstr ""

B<O_DIRECT>-E/As sollten niemals gleichzeitig mit dem Systemaufruf B<fork>(2) 
ausgeführt werden, falls der Speicherpuffer eine private Abbildung ist (d.h. 
eine Abbildung, die mit dem Schalter  B<MAP_PRIVATE> von  B<mmap>(2) erzeugt 
wurde. Dies umfasst Speicher, der auf dem Heap reserviert wurde und statisch 
reservierte Puffer). Aller derartigen E/As, die entweder über eine asynchrone 
E/A-Schnittstelle oder von einem anderen Thread im Prozess übermittelt wurden, 
sollten abgeschlossen sein, ehe  B<fork>(2) aufgerufen wird. Wird dies dennoch 
getan, können Fehlschläge zu beschädigten Daten oder unvorhersehbarem 
Verhalten in Eltern- und Kindprozessen führen. Diese Beschränkung gilt nicht, 
wenn der Speicherpuffer für die B<O_DIRECT>-E/As mittels B<shmat>(2)  oder 
B<mmap>(2) mit dem Schalter B<MAP_SHARED> erzeugt wurde. Sie gilt auch nicht, 
wenn der Speicherpuffer als B<MADV_DONTFORK> mit B<madvise>(2) ausgewiesen 
wurde, um sicherzustellen, dann er nicht im Kindprozess nach B<fork>(2) 
verfügbar ist.

Gruß,
Chris


Reply to: