× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Rob this one is working for us:

Dcl-Proc Muifs_NfsMontato Export;

Dcl-Pi *n ind;
Percorso varchar(1024) const; // Path da verificare
End-pi;

Dcl-s fstype varchar(80);

Dcl-Ds vfs likeds(ds_statvfs);

if statvfs(%trimr(Percorso): vfs) = -1;
return *off;
Endif;

fstype = %str(%addr(vfs.f_basetype));

Return %scan('NFS':fstype) > 0;

End-Proc;

ds_statvfs is:

*---------------------------------------------------------------
* ds_statvfs - data structure to receive file system info
*
* f_bsize = file system block size (in bytes)
* f_frsize = fundamental block size in bytes.
* if this is zero, f_blocks, f_bfree and f_bavail
* are undefined.
* f_blocks = total number of blocks (in f_frsize)
* f_bfree = total free blocks in filesystem (in f_frsize)
* f_bavail = total blocks available to users (in f_frsize)
* f_files = total number of file serial numbers
* f_ffree = total number of unused file serial numbers
* f_favail = number of available file serial numbers to users
* f_fsid = filesystem ID. This will be 4294967295 if it's
* too large for a 10U 0 field. (see f_fsid64)
* f_flag = file system flags (see below)
* f_namemax = max filename length. May be 4294967295 to
* indicate that there is no maximum.
* f_pathmax = max pathname legnth. May be 4294967295 to
* indicate that there is no maximum.
* f_objlinkmax = maximum number of hard-links for objects
* other than directories
* f_dirlinkmax = maximum number of hard-links for directories
* f_fsid64 = filesystem id (in a 64-bit integer)
* f_basetype = null-terminated string containing the file
* system type name. For example, this might
* be "root" or "Network File System (NFS)"
*
* Since f_basetype is null-terminated, you should read it
* in ILE RPG with:
* myString = %str(%addr(ds_statvfs.f_basetype))
*---------------------------------------------------------------
D ds_statvfs DS qualified
D f_bsize 10U 0
D f_frsize 10U 0
D f_blocks 20U 0
D f_bfree 20U 0
D f_bavail 20U 0
D f_files 10U 0
D f_ffree 10U 0
D f_favail 10U 0
D f_fsid 10U 0
D f_flag 10U 0
D f_namemax 10U 0
D f_pathmax 10U 0
D f_objlinkmax 10I 0
D f_dirlinkmax 10I 0
D f_reserved1 4A
D f_fsid64 20U 0
D f_basetype 80A

The prototype is:

*---------------------------------------------------------------
* statvfs() -- Get file system status
*
* path = (input) pathname of a link ("file") in the IFS.
* buf = (output) data structure containing file system info
*
* Returns 0 if successful, -1 upon error.
* (error information is returned via the "errno" variable)
*---------------------------------------------------------------
D statvfs PR 10I 0 ExtProc('statvfs64')
D path * value options(*string)
D buf like(ds_statvfs)

Of course this is from Scott C. Klement excellent work.

HTH
--
Marco Facchinetti

Mr S.r.l.

Tel. 035 962885
Cel. 393 9620498

Skype: facchinettimarco


Il giorno mar 12 nov 2019 alle ore 16:09 Rob Berendt <rob@xxxxxxxxx> ha
scritto:

Let's say someone ran a command like the following:
MOUNT TYPE(*NFS) MFS('gdihq:/tmp') MNTOVRDIR('/gdihq/tmp') +
OPTIONS('rw,suid,retry=5,rsize=32768,wsize=32768,timeo=20,retrans=5,
acregmin=30,acregmax=60,acdirmin=30,acdirmax=60,soft,async,
sec=sys,vers=3:2,nocache')

Basically this says I have an existing directory called /gdihq/tmp. After
I run this command the contents of /gdihq/tmp will now be showing
everything in the /tmp directory on the remote system gdihq.
I really don't want to rely upon finding this in some source code, or
relying upon the naming convention used above.

It's an RPG program utilizing this:
/include routines/qrpglesrc,ifsio_h
/include routines/qapisrc,qp0lstdi_h

A little review shows that this may be utilized. (I didn't write this
program and assume it's downloaded code standing on the shoulders of
giants.)

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/apis/qgetattr.htm


Rob Berendt
--
IBM Certified System Administrator - IBM i 6.1
Group Dekko
Dept 1600
Mail to: 2505 Dekko Drive
Garrett, IN 46738
Ship to: Dock 108
6928N 400E
Kendallville, IN 46755
http://www.dekko.com


-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Patrik Schindler
Sent: Tuesday, November 12, 2019 9:45 AM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: DSKIFS job takes a long time on occasion.

CAUTION: This email originated from outside of the organization. Do not
click links or open attachments unless you recognize the sender and know
the content is safe.


Hello Rob,

Am 12.11.2019 um 14:59 schrieb Rob Berendt <rob@xxxxxxxxx>:

Is there an attribute on a directory which says that it is an NFS
mount? I'd rather not rely upon some naming convention or other such
standard to determine this.

I searched for that a bit, because in Linux I'd parse the output from the
"mount -t nfs" command to see where NFS filesystems start in the hierarchy.
Unfortunately, there's no "mount" in PASE and also no /etc/mtab. So no
avail this way.

Perhaps there are IFS APIs to look at, to see which filesystem is mounted
where. A quick search revealed nothing helpful so far, but I really did
only a quick search. Even in GO CMDMFS, there's no "work with".

Also, a call to the C "stat" function is supposed to give you an ID of the
device containing file. No idea where to go from here, though. (To map this
ID back to something helpful for determining if that "device" resembles an
NFS mount.)

Maybe this gets you a few starting points to dig deeper into.

A job which used to run in just a few minutes now takes 18 hours.

NFS was never quick in OS/400 and it's successors. ;-)

If you can describe what the job does and in wich environment it runs,
maybe there will raise further ideas how to solve this problem.

:wq! PoC

PGP-Key: DDD3 4ABF 6413 38DE - https://www.pocnet.net/poc-key.asc

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.