Skip to Main Content
IBM Z Hardware and Operating Systems Ideas Portal


This is the public portal for all IBM Z Hardware and Operating System related offerings. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Under review
Workspace z/OS
Categories LE
Created by Guest
Created on Jun 19, 2025

Relax single TCB restriction on fopen(), freopen(), flocate(), etc. against MVS files

There is currently a documented limitation when using threads to access MVS files:  https://www.ibm.com/docs/en/zos/3.1.0?topic=brizua-using-threads-mvs-files. Specifically, fopen(), freopen() and rewind() must be performed on the owning thread that did the initial fopen() on the file. This restriction does not apply to USS files.

We recently had a customer observe an ABEND S378 U0000 RC=00000018 with their Java workload. Upon investigation, it was determined that their application was doing flocate() against a VSAM dataset with RLS. flocate(), under the covers, may do vsamreop, which will trigger a close/open, if data was written to the VSAM dataset. As such, it is subject to the same single TCB restriction. A quick search also identified: fseek() and fsetpos() also uses vsamreop.

These read-only operations are now restricted are now limited to a single TCB due to the z/OS limitation. Surfaced at the application layer, this will likely impact the design, scalability, and performance of customer apps. Also doesn’t help that the stars need to align to create the conditions in which vsamreop is invoked under flocate() – so it’s not necessarily consistently reproducible in test environments.

We have a broader problem brewing as well.  In Java 21, Virtual Threads (https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html) support was added to the language spec.  Virtual threads may run on different OS platform threads during its lifecycle, and a user has no control to enforce where a given Virtual Thread will run. As such, Virtual Threads are incompatible with this single TCB limitation on MVS files access – i.e. if one wants to use JZOS  ZFile to access MVS dataset, they cannot run those operations on a Java virtual thread.  Virtual Threads support are being added to popular frameworks, including Spring (https://spring.io/blog/2022/10/11/embracing-virtual-threads) and Liberty (https://openliberty.io/blog/2024/05/07/24.0.0.5-beta.html). We do expect adoption of Virtual Threads to increase in the coming years.

In order to allow Virtual Threads and MVS dataset access to work together in Java, the only viable option I see is to get this single TCB restriction relaxed when accessing MVS datasets, hence this requirement.

Idea priority Medium