mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Initial s390-tools-2.0.0 import
This commit is based on the s390-tools-1.39.0 version. Changes on top of s390-tools-1.39.0: - Add MIT license to all source files - Add LICENSE file - Transform REAMDE to README.md (markdown) - Add AUTHORS.md file - Add CONTRIBUTING.md file - Move changelog from README to CHANGELOG.md file Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
include ../common.mak
|
||||
|
||||
libs = $(rootdir)/libzds/libzds.a \
|
||||
$(rootdir)/libvtoc/libvtoc.a \
|
||||
$(rootdir)/libu2s/libu2s.a \
|
||||
$(rootdir)/libutil/libutil.a
|
||||
|
||||
ifeq (${HAVE_FUSE},0)
|
||||
|
||||
all:
|
||||
$(SKIP) HAVE_FUSE=0
|
||||
|
||||
install:
|
||||
$(SKIP) HAVE_FUSE=0
|
||||
|
||||
else
|
||||
|
||||
check_dep:
|
||||
$(call check_dep, \
|
||||
"zdsfs", \
|
||||
"fuse.h", \
|
||||
"fuse-devel or libfuse-dev", \
|
||||
"HAVE_FUSE=0")
|
||||
|
||||
ifneq ($(shell sh -c 'command -v pkg-config'),)
|
||||
FUSE_CFLAGS = $(shell pkg-config --silence-errors --cflags fuse)
|
||||
FUSE_LDLIBS = $(shell pkg-config --silence-errors --libs fuse)
|
||||
else
|
||||
FUSE_CFLAGS = -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse
|
||||
FUSE_LDLIBS = -lfuse
|
||||
endif
|
||||
ALL_CPPFLAGS += -DSYSFS
|
||||
ALL_CFLAGS += -DHAVE_SETXATTR -pthread $(FUSE_CFLAGS)
|
||||
LDLIBS += $(FUSE_LDLIBS) -lpthread -lrt -lm
|
||||
|
||||
all: check_dep zdsfs
|
||||
|
||||
zdsfs: zdsfs.o $(libs)
|
||||
|
||||
install: all
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(USRBINDIR) $(DESTDIR)$(MANDIR)/man1
|
||||
$(INSTALL) -g $(GROUP) -o $(OWNER) -m 755 zdsfs $(DESTDIR)$(USRBINDIR)
|
||||
$(INSTALL) -g $(GROUP) -o $(OWNER) -m 644 zdsfs.1 \
|
||||
$(DESTDIR)$(MANDIR)/man1
|
||||
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm -f *.o *~ zdsfs core
|
||||
|
||||
.PHONY: all install clean
|
||||
+276
@@ -0,0 +1,276 @@
|
||||
.\" IBM Corporation Copyright 2013, 2017
|
||||
.\" s390-tools is free software; you can redistribute it and/or modify
|
||||
.\" it under the terms of the MIT license. See LICENSE for details.
|
||||
.\"
|
||||
.TH ZDSFS 1 "2013" "s390-tools"
|
||||
|
||||
.SH NAME
|
||||
zdsfs \- File system for z/OS data set access
|
||||
|
||||
.SH SYNOPSIS
|
||||
.SS mounting:
|
||||
.TP
|
||||
\fBzdsfs\fP \fI<devices>\fR \fI<mountpoint>\fR [\fI<options>\fR]
|
||||
.SS unmounting:
|
||||
.TP
|
||||
\fBfusermount\fP -u \fI<mountpoint>\fR
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
Use the \fBzdsfs\fP command for read access to z/OS data sets
|
||||
stored on one or more DASDs.
|
||||
|
||||
The zdsfs file system translates the record-based z/OS data sets to
|
||||
UNIX file system semantics. After mounting the devices, you can use
|
||||
common Linux tools to access the files on the disk. Physical
|
||||
sequential data sets are represented as files. Partitioned data sets
|
||||
are represented as directories, with each member being represented as
|
||||
a file in that directory.
|
||||
|
||||
.SH RESTRICTIONS
|
||||
Only read access is supported.
|
||||
|
||||
Data sets on tape devices are not supported.
|
||||
|
||||
To maintain data consistency, a DASD must not be modified while it is
|
||||
in use by zdsfs. This can be assured by varying the device offline
|
||||
in z/OS before setting it online in Linux.
|
||||
|
||||
The access to the device by Linux is not subject to RACF or any other
|
||||
z/OS auditing mechanism. The safety of the data on the device must be
|
||||
established by the respective Linux mechanisms. The default behavior
|
||||
of zdsfs is to grant access to the files in the fuse file system only
|
||||
to the user who has started the tool. This behavior can be
|
||||
configured by using the options `allow_other', `default_permissions',
|
||||
`umask', `uid', and `gid'.
|
||||
|
||||
Only physical sequential (PS) and partitioned data sets (PDS) are
|
||||
supported. Supported record formats are: V, F, U, B, S, A, and M.
|
||||
|
||||
The file system is limited to basic operations (readdir, stat, open,
|
||||
read, seek). Because the actual size of the data in each track is not
|
||||
always known, zdsfs does not support mmap. Seek operations read the
|
||||
whole data set to the given offset. The performance of seek
|
||||
operations to previous offsets can be improved by buffering seek
|
||||
offsets, see option `-o seekbuffers'.
|
||||
|
||||
A further consequence of the unknown exact data size is that zdsfs
|
||||
cannot provide exact file sizes. As a heuristic, the given file sizes
|
||||
are the maximum possible data sizes, based on the number and size of
|
||||
the extents that belong to each data set. When the actual end of the
|
||||
data is reached during read, the usual end of file (EOF) is returned.
|
||||
To make sure that the EOF is passed to the user correctly, the option
|
||||
`-o direct_io' is set by zdsfs implicitly.
|
||||
|
||||
The detection of incomplete multi volume data sets does not work for
|
||||
data sets for which only the first volume (device) is present.
|
||||
|
||||
.SH OPTIONS
|
||||
.SS "general options:"
|
||||
|
||||
.TP
|
||||
\fB<devices>\fR One or more DASD device nodes, where node specifications are
|
||||
separated by blanks. The device nodes can be specified explicitly with
|
||||
the command or with the -l option and a file.
|
||||
.TP
|
||||
\fB<mountpoint>\fR The mount point for the specified DASD.
|
||||
.TP
|
||||
\fB\-o\fR \fI<opt>\fR,[\fI<opt>\fR...] Fuse or mount command
|
||||
options. For fuse options see "Applicable FUSE options" below, for
|
||||
mount options see \fBmount(8)\fP.
|
||||
.TP
|
||||
\fB\-h\fR or \fB\-\-help\fR
|
||||
Print usage information, then exit.
|
||||
.TP
|
||||
\fB\-v\fR or \fB\-\-version\fR
|
||||
Print version information, then exit.
|
||||
.SS "zdsfs options:"
|
||||
.TP
|
||||
\fB\-l\fR \fI<device_list>\fR
|
||||
The specified file \fI<device_list>\fR contains a list of device
|
||||
nodes, separated by white space (space, tab or new line). All device
|
||||
nodes in this file are mounted as if given directly via the command
|
||||
line.
|
||||
.TP
|
||||
\fB\-o\fR rdw
|
||||
Keep record descriptor words in the byte stream. By default, data set
|
||||
files contain only the user data.
|
||||
|
||||
Record boundaries might be important for applications to correctly
|
||||
interpret the user data. For data sets with variable records, the
|
||||
record descriptor words are required to find the record
|
||||
boundaries. With fixed blocks, record boundaries can be computed from
|
||||
the fixed record sizes.
|
||||
|
||||
See `z/OS DFSMS Using Data Sets' for more information about record
|
||||
descriptor words.
|
||||
.TP
|
||||
\fB\-o\fR ignore_incomplete
|
||||
Continue processing even if parts of a multi-volume data set are
|
||||
missing. By default, zdsfs ends with an error unless all data sets
|
||||
are complete.
|
||||
|
||||
Incomplete data sets can be tolerated, for example, if all data of
|
||||
interest is on another data set that is complete.
|
||||
Incomplete data sets are not represented in the file system. Instead,
|
||||
for each incomplete data set, a warning message is written to the
|
||||
standard error stream.
|
||||
.TP
|
||||
\fB\-o\fR tracks=\fI<n>\fR
|
||||
Size of the track buffer in tracks. The default for \fI<n>\fR is 128.
|
||||
|
||||
The data that is read from the DASD has to be stored in a buffer, because
|
||||
the minimum size for a read operation in raw access mode is one track,
|
||||
and the user data has to be extracted from the track images. Reading
|
||||
more than one track at a time improves the overall performance, but
|
||||
requires larger buffers.
|
||||
|
||||
The memory needed by zdsfs for buffering a single track is 64KB for the
|
||||
raw track data and 56KB for the extracted user data. Each time a file
|
||||
is opened a total of (\fI<n>\fR * 120KB) is allocated for the track buffer.
|
||||
|
||||
.TP
|
||||
\fB\-o\fR seekbuffer=\fI<s>\fR
|
||||
Upper limit in bytes for the seek history buffer size. The default for
|
||||
\fIs\fR is 1048576.
|
||||
|
||||
Because the block and record sizes in a data set may vary,
|
||||
the only way to find a data byte at a particular offset (`seek') is
|
||||
to read and interpret the whole data set from the beginning, until
|
||||
the offset is reached.
|
||||
|
||||
To improve the performance of `seek' operations in areas that have
|
||||
already been read, zdsfs can buffer offsets in regular
|
||||
intervals. These intervals are multiples of \fI<n>\fR tracks, as specified
|
||||
with the `tracks' option.
|
||||
|
||||
For small data sets and large values of \fI<n>\fR, only a few seek offsets
|
||||
need to be buffered. In this case, the amount of memory that is
|
||||
actually allocated can be much smaller than the upper limit \fI<s>\fR.
|
||||
|
||||
If \fI<s>\fR is set to 0, no seek history buffer is allocated. In this
|
||||
case `seek' is still supported, but a `seek' operation might result in a
|
||||
read from the beginning of the data set.
|
||||
|
||||
.TP
|
||||
\fB\-o\fR check_host_count
|
||||
Stop processing if the device is used by another operating system instance.
|
||||
|
||||
.SS "Applicable FUSE options (version 2.8):"
|
||||
This is a selected subset of all FUSE options. Use the zdsfs
|
||||
\fB\--help\fR option to print a full list.
|
||||
|
||||
.TP
|
||||
\fB\-d\fR or \fB\-o\fR debug
|
||||
Enable debug output (implies \fB\-f\fR)
|
||||
.TP
|
||||
\fB\-f\fR
|
||||
Foreground operation
|
||||
.TP
|
||||
\fB\-o\fR allow_other
|
||||
Allow access by other users
|
||||
.TP
|
||||
\fB\-o\fR allow_root
|
||||
Allow access by root
|
||||
.TP
|
||||
\fB\-o\fR nonempty
|
||||
Allow mounts over non\-empty file/dir
|
||||
.TP
|
||||
\fB\-o\fR default_permissions
|
||||
Enable permission checking by kernel
|
||||
.TP
|
||||
\fB\-o\fR max_read=\fI<n>\fR
|
||||
Set maximum size of read requests
|
||||
.TP
|
||||
\fB\-o\fR kernel_cache
|
||||
Cache files in kernel
|
||||
.TP
|
||||
\fB\-o\fR [no]auto_cache
|
||||
Enable caching based on modification times
|
||||
.TP
|
||||
\fB\-o\fR umask=\fI<m>\fR
|
||||
Set file permissions (octal)
|
||||
.TP
|
||||
\fB\-o\fR uid=\fI<m>\fR
|
||||
Set file owner
|
||||
.TP
|
||||
\fB\-o\fR gid=\fI<n>\fR
|
||||
Set file group
|
||||
.TP
|
||||
\fB\-o\fR max_readahead=\fI<n>\fR
|
||||
Set maximum readahead
|
||||
.TP
|
||||
\fB\-o\fR async_read
|
||||
Perform reads asynchronously (default)
|
||||
.TP
|
||||
\fB\-o\fR sync_read
|
||||
Perform reads synchronously
|
||||
|
||||
|
||||
.SH DATA SET CHARACTERISTICS
|
||||
|
||||
Certain data set characteristics might be required for the correct
|
||||
interpretation of the data. The collected metadata of all data sets
|
||||
can be found in a file `metadata.txt' in the top directory of the
|
||||
mounted file system.
|
||||
|
||||
This file contains one line per data set, with the syntax that is used
|
||||
by z/OS.
|
||||
|
||||
dsn=<data set name>,recfm=<fmt>,lrecl=<size>,dsorg=<org>
|
||||
|
||||
\fBdsn\fR: The data set name.
|
||||
For physical sequential data sets this is the
|
||||
same name as the file name in the mount directory. For partitioned
|
||||
data sets (PDS) this is the same as the directory name in the mount
|
||||
directory. For PDS members the member name is placed in parentheses
|
||||
after the PDS name.
|
||||
|
||||
\fBrecfm\fR: The record format.
|
||||
|
||||
\fBlrecl\fR: The logical record length.
|
||||
|
||||
\fBdsorg\fR: The data set organization.
|
||||
For partitioned data sets the organization is `PO', but for
|
||||
partitioned data set members it is `PS'.
|
||||
|
||||
In addition to the `metadata.txt' file, you can use the following
|
||||
extended attributes to read the data set characteristics of a file or
|
||||
directory:
|
||||
|
||||
\fBuser.recfm\fR: The record format.
|
||||
|
||||
\fBuser.lrecl\fR: The logical record length.
|
||||
|
||||
\fBuser.dsorg\fR: The data set organization of a file.
|
||||
|
||||
|
||||
.SH EXAMPLES
|
||||
To mount the z/OS disk with the name dasde enter:
|
||||
.br
|
||||
|
||||
# zdsfs /dev/dasde /mnt
|
||||
|
||||
.br
|
||||
|
||||
To mount the z/OS disk with space for 4 tracks and keeping the record
|
||||
descriptor words in the byte stream, enter:
|
||||
.br
|
||||
|
||||
# zdsfs -o rdw -o tracks=4 /dev/dasde /mnt
|
||||
|
||||
.br
|
||||
|
||||
To unmount the z/OS disk mounted on /mnt enter:
|
||||
.br
|
||||
|
||||
# fusermount -u /mnt
|
||||
|
||||
To list all extended attributes of file FOOBAR.TEST.TXT
|
||||
assuming the z/OS disk was mounted on /mnt:
|
||||
|
||||
# getfattr -d /mnt/FOOBAR.TEST.TXT
|
||||
|
||||
.SH SEE ALSO
|
||||
getfattr(1), fuse(8), z/OS DFSMS Using Data Sets,
|
||||
and Linux on System z: Device Drivers, Features and Commands
|
||||
+1049
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user