On 2021-03-29, at 05:18:27, William Schoen wrote:
>
> It is done by the access method or application writing the records.
>
Thanks. Of course IBM might document the implementation of access
methods, though not of user-written applications.
> All writes seen by the kernel are atomic.
> If there is buffering or other type of processing by the process doing the
> writes causing records to span writes calls, all bets are off.
> I think the access methods keep records on block boundaries, but this is
> probably not the case with C file streams.
>
The sense of my question is, does the access method perform:
buffer = RDW || data
write( buffer )
which is atomic, subject to buffer size, or:
write( RDW )
write( data )
which risks another process's inserting a record between the
RDW and the data. In fact, for FILEDATA=TEXT that hazard
could exist betwen "write( data )" and "write( NL )".
> MVS OpenEdition <[email protected]> wrote on 03/27/2021 12:11:11 PM:
>
>> From: Paul Gilmartin
>> Date: 03/27/2021 12:11 PM
>>
>> (cross-posting)
>> FILEDATA=RECORD causes each record to be prefixed with a quasi-RDW.
>> Is that done by the kernel or the access method? In either case,
>> if two processes allocate the same UNIX file witn FILEDATA=RECORD,
>> PATHOPTS=O_APPEND, will the PUTs appear atomic or might the RDWs
>> and bodies from the two processes appear intermixed?
Thanks again,
gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN