public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Jan Stancek <jstancek@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] lsmod01: parse a copy of /proc/modules
Date: Mon, 29 Aug 2016 11:49:41 -0400 (EDT)	[thread overview]
Message-ID: <2063556369.71871.1472485781200.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <57C440C0.5050307@oracle.com>




----- Original Message -----
> From: "Stanislav Kholmanskikh" <stanislav.kholmanskikh@oracle.com>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: "vasily isaenko" <vasily.isaenko@oracle.com>, ltp@lists.linux.it
> Sent: Monday, 29 August, 2016 4:03:44 PM
> Subject: Re: [LTP] [PATCH] lsmod01: parse a copy of /proc/modules
> 
> 
> 
> On 08/29/2016 05:00 PM, Stanislav Kholmanskikh wrote:
> > 
> > 
> > On 08/29/2016 04:34 PM, Jan Stancek wrote:
> >>
> >>
> >>
> >>
> >> ----- Original Message -----
> >>> From: "Stanislav Kholmanskikh" <stanislav.kholmanskikh@oracle.com>
> >>> To: "Cyril Hrubis" <chrubis@suse.cz>
> >>> Cc: "vasily isaenko" <vasily.isaenko@oracle.com>, ltp@lists.linux.it
> >>> Sent: Monday, 29 August, 2016 3:05:11 PM
> >>> Subject: Re: [LTP] [PATCH] lsmod01: parse a copy of /proc/modules
> >>>
> >>>
> >>>
> >>> On 08/29/2016 03:50 PM, Cyril Hrubis wrote:
> >>>> Hi!
> >>>>> In my environment, if TMPDIR is on NFSv4, this test case fails with:
> >>>>>
> >>>>> lsmod01 1 TFAIL : lsmod output different from /proc/modules.
> >>>>>   21c21
> >>>>>   < sunrpc 207591 28
> >>>>>   ---
> >>>>>   > sunrpc 207591 29
> >>>>>
> >>>>> To avoid such problems I separate the process of getting data from
> >>>>> /proc/modules and the process of parsing it in the pipe structure.
> >>>>
> >>>> So the sunrpc module gets its ref counter incremented from somewhere of
> >>>> the nfs kernel code once we open file on NFS?
> >>>
> >>> Looks so. I hava a share mounted from localhost:
> >>>
> >>> [root@skholman-m7 mnt]# mount|grep mnt
> >>> 127.0.0.1:/opt on /mnt type nfs
> >>> (rw,vers=4,addr=127.0.0.1,clientaddr=127.0.0.1)
> >>> [root@skholman-m7 mnt]# awk '{print $1, $2, $3}' /proc/modules|sort >
> >>> /tmp/not_nfs
> >>> [root@skholman-m7 mnt]# awk '{print $1, $2, $3}' /proc/modules|sort > nfs
> >>> [root@skholman-m7 mnt]# grep sunrpc nfs
> >>> sunrpc 207591 29
> >>> [root@skholman-m7 mnt]# grep sunrpc /tmp/not_nfs
> >>> sunrpc 207591 28
> >>> [root@skholman-m7 mnt]#
> >>
> >> And if you do that with just "cat /proc/modules", then there's no
> >> difference?
> >> Could it be that it's actually first write that takes extra ref?
> >> cat is reading in 65536 byte chunks for me, awk only 1024.
> > 
> > Yes, there is no difference if I use "cat /proc/modules":
> > 
> > [root@skholman-m7 mnt]# awk '{print $1, $2, $3}' /proc/modules|sort > nfs
> > [root@skholman-m7 mnt]# grep sunrpc nfs
> > sunrpc 207591 29
> > [root@skholman-m7 mnt]# cat /proc/modules > temp
> > [root@skholman-m7 mnt]# awk '{print $1, $2, $3}' temp|sort > nfs
> > [root@skholman-m7 mnt]# grep sunrpc temp
> > sunrpc 207591 28 nfs,nfsd,lockd,nfs_acl,auth_rpcgss, Live
> > 0x00000000101ec000
> > [root@skholman-m7 mnt]#
> > 
> > As for 1024. lsmod also reads /proc/modules in 1024 bytes chunks.
> 
> I suppose it's something related to using the pipe construction, since
> this change also "fixes" the issue:

I'm suspecting this to be some kind of race between opening file on
nfs and reading /proc/modules at the same time:

# sh -c "cat /proc/modules | cat > temp2"; grep sunrpc temp2
sunrpc 300464 31 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000

# taskset -c 0 sh -c "cat /proc/modules | cat > temp2"; grep sunrpc temp2
sunrpc 300464 30 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000

or

# dd if=/proc/modules bs=1 | cat > temp2; grep sunrpc temp2
6332+0 records in
6332+0 records out
6332 bytes (6.3 kB) copied, 0.00288249 s, 2.2 MB/s
sunrpc 300464 30 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000

# dd if=/proc/modules bs=2 | cat > temp2; grep sunrpc temp2
3166+0 records in
3166+0 records out
6332 bytes (6.3 kB) copied, 0.00148174 s, 4.3 MB/s
sunrpc 300464 31 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000

or

# cat /proc/modules | sh -c cat > temp2; grep sunrpc temp2
sunrpc 300464 31 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000

# cat /proc/modules | sh -c "cat > temp2"; grep sunrpc temp2
sunrpc 300464 30 nfsv3,rpcsec_gss_krb5,nfsv4,nfs,nfsd,auth_rpcgss,nfs_acl,lockd, Live 0xffffffffa03a4000


  parent reply	other threads:[~2016-08-29 15:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-29 11:08 [LTP] [PATCH] lsmod01: parse a copy of /proc/modules Stanislav Kholmanskikh
2016-08-29 12:50 ` Cyril Hrubis
2016-08-29 13:05   ` Stanislav Kholmanskikh
2016-08-29 13:34     ` Jan Stancek
2016-08-29 14:00       ` Stanislav Kholmanskikh
2016-08-29 14:03         ` Stanislav Kholmanskikh
2016-08-29 15:17           ` Cyril Hrubis
2016-08-29 15:49           ` Jan Stancek [this message]
2016-10-11 12:03             ` Stanislav Kholmanskikh
2016-10-11 13:38               ` Cyril Hrubis
2016-10-11 15:47                 ` Stanislav Kholmanskikh
2016-10-11 16:15                   ` Cyril Hrubis
2016-11-09 14:34                     ` [LTP] [PATCH] lsmod01: keep the output in variables Stanislav Kholmanskikh
2016-11-09 16:49                       ` Cyril Hrubis
2016-11-10 10:07                         ` Stanislav Kholmanskikh
2016-11-10 11:39                           ` Cyril Hrubis
2016-11-10 14:15                             ` Stanislav Kholmanskikh
2016-08-31 13:55 ` [LTP] [PATCH] lsmod01: parse a copy of /proc/modules Cyril Hrubis
2016-09-02 14:12   ` Stanislav Kholmanskikh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2063556369.71871.1472485781200.JavaMail.zimbra@redhat.com \
    --to=jstancek@redhat.com \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox