From: Lans Carstensen <Lans.Carstensen@dreamworks.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: NFS list <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 3/4] nfs-utils: nfs-iostat.py autofs cleanup and option to sort by ops/s
Date: Wed, 26 Aug 2009 16:57:15 -0700 [thread overview]
Message-ID: <4A95CBDB.40502@dreamworks.com> (raw)
In-Reply-To: <486FBC5E-011A-4FF0-995D-944958BE74AE@oracle.com>
Chuck Lever wrote:
>
> On Aug 26, 2009, at 12:59 AM, Lans Carstensen wrote:
>
>> commit ef558b7b978418ac3da35e36dcf02a223e4ebe2d
>> Author: Lans Carstensen <Lans.Carstensen@dreamworks.com>
>> Date: Tue Aug 25 21:52:49 2009 -0700
>>
>> Update list of mount points to parse stats for and drop mount
>> points from stats collection when they are umounted. This
>> ensures proper stats collection for autofs mountpoints.
>>
>> diff --git a/tools/nfs-iostat/nfs-iostat.py
>> b/tools/nfs-iostat/nfs-iostat.py
>> index 6ce31fc..9f3b3eb 100644
>> --- a/tools/nfs-iostat/nfs-iostat.py
>> +++ b/tools/nfs-iostat/nfs-iostat.py
>> @@ -447,7 +447,14 @@ def parse_stats_file(filename):
>> return ms_dict
>>
>> def print_iostat_summary(old, new, devices, time, ac):
>> - for device in devices:
>> + if old:
>> + # Trim device list to only include intersection of old and
>> new data,
>> + # this addresses umounts due to autofs mountpoints
>> + devicelist = filter(lambda x:x in devices,old)
>> + else:
>> + devicelist = devices
>> +
>> + for device in devicelist:
>> stats = DeviceData()
>> stats.parse_stats(new[device])
>> if not old:
>> @@ -458,11 +465,35 @@ def print_iostat_summary(old, new, devices,
>> time, ac):
>> diff_stats = stats.compare_iostats(old_stats)
>> diff_stats.display_iostats(time, ac)
>>
>> +def list_nfs_mounts(givenlist, mountstats):
>> + """return a list of NFS mounts given a list to validate or
>> + return a full list if the given list is empty
>> + """
>> + list = []
>> + if len(givenlist) > 0:
>> + for device in givenlist:
>> + stats = DeviceData()
>> + stats.parse_stats(mountstats[device])
>> + if stats.is_nfs_mountpoint():
>> + list += [device]
>> + else:
>> + for device, descr in mountstats.iteritems():
>> + stats = DeviceData()
>> + stats.parse_stats(descr)
>> + if stats.is_nfs_mountpoint():
>> + list += [device]
>> + if len(list) == 0:
>> + print 'No NFS mount points were found'
>> + return
>
> You refactored this logic from the main routine. I think this last
> "return" was OK in the main routine, but in a subroutine it may not do
> exactly what you want. A NoneType object is passed to
> print_iostat_summary in this case
>
> [cel@matisse tmp]$ ./nfs-iostat.py
> No NFS mount points were found
> Traceback (most recent call last):
> File "./nfs-iostat.py", line 580, in <module>
> iostat_command(prog)
> File "./nfs-iostat.py", line 549, in iostat_command
> print_iostat_summary(old_mountstats, mountstats, devices,
> sample_time, which)
> File "./nfs-iostat.py", line 457, in print_iostat_summary
> for device in devicelist:
> TypeError: 'NoneType' object is not iterable
Sigh. Thanks. I'll test more thoroughly and resubmit. Based on the
--list= argument change it'll probably be easier to refactor the script
to use optparse, so I'll end up regenerating the last two patches as
probably three new ones.
-- Lans Carstensen, Systems Engineering, Dreamworks Animation
Because they consistently observe and listen, the humble improve.
-- Wynton Marsalis
next prev parent reply other threads:[~2009-08-26 23:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-26 4:59 [PATCH 3/4] nfs-utils: nfs-iostat.py autofs cleanup and option to sort by ops/s Lans Carstensen
2009-08-26 14:30 ` Chuck Lever
2009-08-26 21:12 ` Chuck Lever
2009-08-26 23:57 ` Lans Carstensen [this message]
2009-08-27 14:09 ` Chuck Lever
-- strict thread matches above, loose matches on Subject: below --
2009-09-15 4:57 Lans Carstensen
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=4A95CBDB.40502@dreamworks.com \
--to=lans.carstensen@dreamworks.com \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.