Re: [PATCH] Make mountstats and nfs-iostat Python 3 compatible

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- Original Message -----
> This just made it into f19 and it doesn't work for me:
> 
> $ mountstats /mnt
>   File "/usr/sbin/mountstats", line 272
>     (count, ((count * 100) / sends)), end=' ')
>                                          ^
> SyntaxError: invalid syntax
> 
> $ python
> Python 2.7.5 (default, Oct  8 2013, 12:19:40)
> [GCC 4.8.1 20130603 (Red Hat 4.8.1-1)] on linux2
> 
> 
> I think mountstats needs this line at the top of the file:
> 
> from __future__ import print_function
> 

True, sorry for the bug.
Slavek

> At least until python3 is the default on fedora.
> 
> -dros
> 
> On Sep 18, 2013, at 3:16 PM, Steve Dickson <SteveD@xxxxxxxxxx> wrote:
> 
> > 
> > 
> > On 17/09/13 05:21, Bohuslav Kabrda wrote:
> >> This will make mountstat and nfs-iostat run on Python 2.6, 2.7
> >> and >= 3.0
> >> 
> >> Signed-off-by: Bohuslav Kabrda <bkabrda@xxxxxxxxxx>
> > Committed!
> > 
> > steved.
> > 
> >> ---
> >> tools/mountstats/mountstats.py | 310
> >> ++++++++++++++++++++---------------------
> >> tools/nfs-iostat/nfs-iostat.py |  22 +--
> >> 2 files changed, 166 insertions(+), 166 deletions(-)
> >> 
> >> diff --git a/tools/mountstats/mountstats.py
> >> b/tools/mountstats/mountstats.py
> >> index b95b71d..3f5fea5 100644
> >> --- a/tools/mountstats/mountstats.py
> >> +++ b/tools/mountstats/mountstats.py
> >> @@ -53,7 +53,7 @@ class DeviceData:
> >>             if words[6].find('nfs') != -1:
> >>                 self.__nfs_data['statvers'] = words[7]
> >>         elif words[0] == 'age:':
> >> -            self.__nfs_data['age'] = long(words[1])
> >> +            self.__nfs_data['age'] = int(words[1])
> >>         elif words[0] == 'opts:':
> >>             self.__nfs_data['mountoptions'] =
> >>             ''.join(words[1:]).split(',')
> >>         elif words[0] == 'caps:':
> >> @@ -91,12 +91,12 @@ class DeviceData:
> >>             self.__nfs_data['shortwrites'] = int(words[22])
> >>             self.__nfs_data['delay'] = int(words[23])
> >>         elif words[0] == 'bytes:':
> >> -            self.__nfs_data['normalreadbytes'] = long(words[1])
> >> -            self.__nfs_data['normalwritebytes'] = long(words[2])
> >> -            self.__nfs_data['directreadbytes'] = long(words[3])
> >> -            self.__nfs_data['directwritebytes'] = long(words[4])
> >> -            self.__nfs_data['serverreadbytes'] = long(words[5])
> >> -            self.__nfs_data['serverwritebytes'] = long(words[6])
> >> +            self.__nfs_data['normalreadbytes'] = int(words[1])
> >> +            self.__nfs_data['normalwritebytes'] = int(words[2])
> >> +            self.__nfs_data['directreadbytes'] = int(words[3])
> >> +            self.__nfs_data['directwritebytes'] = int(words[4])
> >> +            self.__nfs_data['serverreadbytes'] = int(words[5])
> >> +            self.__nfs_data['serverwritebytes'] = int(words[6])
> >> 
> >>     def __parse_rpc_line(self, words):
> >>         if words[0] == 'RPC':
> >> @@ -110,8 +110,8 @@ class DeviceData:
> >>                 self.__rpc_data['rpcsends'] = int(words[4])
> >>                 self.__rpc_data['rpcreceives'] = int(words[5])
> >>                 self.__rpc_data['badxids'] = int(words[6])
> >> -                self.__rpc_data['inflightsends'] = long(words[7])
> >> -                self.__rpc_data['backlogutil'] = long(words[8])
> >> +                self.__rpc_data['inflightsends'] = int(words[7])
> >> +                self.__rpc_data['backlogutil'] = int(words[8])
> >>             elif words[1] == 'tcp':
> >>                 self.__rpc_data['port'] = words[2]
> >>                 self.__rpc_data['bind_count'] = int(words[3])
> >> @@ -121,7 +121,7 @@ class DeviceData:
> >>                 self.__rpc_data['rpcsends'] = int(words[7])
> >>                 self.__rpc_data['rpcreceives'] = int(words[8])
> >>                 self.__rpc_data['badxids'] = int(words[9])
> >> -                self.__rpc_data['inflightsends'] = long(words[10])
> >> +                self.__rpc_data['inflightsends'] = int(words[10])
> >>                 self.__rpc_data['backlogutil'] = int(words[11])
> >>             elif words[1] == 'rdma':
> >>                 self.__rpc_data['port'] = words[2]
> >> @@ -148,7 +148,7 @@ class DeviceData:
> >>         else:
> >>             op = words[0][:-1]
> >>             self.__rpc_data['ops'] += [op]
> >> -            self.__rpc_data[op] = [long(word) for word in words[1:]]
> >> +            self.__rpc_data[op] = [int(word) for word in words[1:]]
> >> 
> >>     def parse_stats(self, lines):
> >>         """Turn a list of lines from a mount stat file into a
> >> @@ -179,81 +179,81 @@ class DeviceData:
> >>     def display_nfs_options(self):
> >>         """Pretty-print the NFS options
> >>         """
> >> -        print 'Stats for %s mounted on %s:' % \
> >> -            (self.__nfs_data['export'], self.__nfs_data['mountpoint'])
> >> -
> >> -        print '  NFS mount options: %s' %
> >> ','.join(self.__nfs_data['mountoptions'])
> >> -        print '  NFS server capabilities: %s' %
> >> ','.join(self.__nfs_data['servercapabilities'])
> >> -        if self.__nfs_data.has_key('nfsv4flags'):
> >> -            print '  NFSv4 capability flags: %s' %
> >> ','.join(self.__nfs_data['nfsv4flags'])
> >> -        if self.__nfs_data.has_key('pseudoflavor'):
> >> -            print '  NFS security flavor: %d  pseudoflavor: %d' % \
> >> -                (self.__nfs_data['flavor'],
> >> self.__nfs_data['pseudoflavor'])
> >> +        print('Stats for %s mounted on %s:' % \
> >> +            (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
> >> +
> >> +        print('  NFS mount options: %s' %
> >> ','.join(self.__nfs_data['mountoptions']))
> >> +        print('  NFS server capabilities: %s' %
> >> ','.join(self.__nfs_data['servercapabilities']))
> >> +        if 'nfsv4flags' in self.__nfs_data:
> >> +            print('  NFSv4 capability flags: %s' %
> >> ','.join(self.__nfs_data['nfsv4flags']))
> >> +        if 'pseudoflavor' in self.__nfs_data:
> >> +            print('  NFS security flavor: %d  pseudoflavor: %d' % \
> >> +                (self.__nfs_data['flavor'],
> >> self.__nfs_data['pseudoflavor']))
> >>         else:
> >> -            print '  NFS security flavor: %d' % self.__nfs_data['flavor']
> >> +            print('  NFS security flavor: %d' %
> >> self.__nfs_data['flavor'])
> >> 
> >>     def display_nfs_events(self):
> >>         """Pretty-print the NFS event counters
> >>         """
> >> -        print
> >> -        print 'Cache events:'
> >> -        print '  data cache invalidated %d times' %
> >> self.__nfs_data['datainvalidates']
> >> -        print '  attribute cache invalidated %d times' %
> >> self.__nfs_data['attrinvalidates']
> >> -        print '  inodes synced %d times' % self.__nfs_data['syncinodes']
> >> -        print
> >> -        print 'VFS calls:'
> >> -        print '  VFS requested %d inode revalidations' %
> >> self.__nfs_data['inoderevalidates']
> >> -        print '  VFS requested %d dentry revalidations' %
> >> self.__nfs_data['dentryrevalidates']
> >> -        print
> >> -        print '  VFS called nfs_readdir() %d times' %
> >> self.__nfs_data['vfsreaddir']
> >> -        print '  VFS called nfs_lookup() %d times' %
> >> self.__nfs_data['vfslookup']
> >> -        print '  VFS called nfs_permission() %d times' %
> >> self.__nfs_data['vfspermission']
> >> -        print '  VFS called nfs_file_open() %d times' %
> >> self.__nfs_data['vfsopen']
> >> -        print '  VFS called nfs_file_flush() %d times' %
> >> self.__nfs_data['vfsflush']
> >> -        print '  VFS called nfs_lock() %d times' %
> >> self.__nfs_data['vfslock']
> >> -        print '  VFS called nfs_fsync() %d times' %
> >> self.__nfs_data['vfsfsync']
> >> -        print '  VFS called nfs_file_release() %d times' %
> >> self.__nfs_data['vfsrelease']
> >> -        print
> >> -        print 'VM calls:'
> >> -        print '  VFS called nfs_readpage() %d times' %
> >> self.__nfs_data['vfsreadpage']
> >> -        print '  VFS called nfs_readpages() %d times' %
> >> self.__nfs_data['vfsreadpages']
> >> -        print '  VFS called nfs_writepage() %d times' %
> >> self.__nfs_data['vfswritepage']
> >> -        print '  VFS called nfs_writepages() %d times' %
> >> self.__nfs_data['vfswritepages']
> >> -        print
> >> -        print 'Generic NFS counters:'
> >> -        print '  File size changing operations:'
> >> -        print '    truncating SETATTRs: %d  extending WRITEs: %d' % \
> >> -            (self.__nfs_data['setattrtrunc'],
> >> self.__nfs_data['extendwrite'])
> >> -        print '  %d silly renames' % self.__nfs_data['sillyrenames']
> >> -        print '  short reads: %d  short writes: %d' % \
> >> -            (self.__nfs_data['shortreads'],
> >> self.__nfs_data['shortwrites'])
> >> -        print '  NFSERR_DELAYs from server: %d' %
> >> self.__nfs_data['delay']
> >> +        print()
> >> +        print('Cache events:')
> >> +        print('  data cache invalidated %d times' %
> >> self.__nfs_data['datainvalidates'])
> >> +        print('  attribute cache invalidated %d times' %
> >> self.__nfs_data['attrinvalidates'])
> >> +        print('  inodes synced %d times' % self.__nfs_data['syncinodes'])
> >> +        print()
> >> +        print('VFS calls:')
> >> +        print('  VFS requested %d inode revalidations' %
> >> self.__nfs_data['inoderevalidates'])
> >> +        print('  VFS requested %d dentry revalidations' %
> >> self.__nfs_data['dentryrevalidates'])
> >> +        print()
> >> +        print('  VFS called nfs_readdir() %d times' %
> >> self.__nfs_data['vfsreaddir'])
> >> +        print('  VFS called nfs_lookup() %d times' %
> >> self.__nfs_data['vfslookup'])
> >> +        print('  VFS called nfs_permission() %d times' %
> >> self.__nfs_data['vfspermission'])
> >> +        print('  VFS called nfs_file_open() %d times' %
> >> self.__nfs_data['vfsopen'])
> >> +        print('  VFS called nfs_file_flush() %d times' %
> >> self.__nfs_data['vfsflush'])
> >> +        print('  VFS called nfs_lock() %d times' %
> >> self.__nfs_data['vfslock'])
> >> +        print('  VFS called nfs_fsync() %d times' %
> >> self.__nfs_data['vfsfsync'])
> >> +        print('  VFS called nfs_file_release() %d times' %
> >> self.__nfs_data['vfsrelease'])
> >> +        print()
> >> +        print('VM calls:')
> >> +        print('  VFS called nfs_readpage() %d times' %
> >> self.__nfs_data['vfsreadpage'])
> >> +        print('  VFS called nfs_readpages() %d times' %
> >> self.__nfs_data['vfsreadpages'])
> >> +        print('  VFS called nfs_writepage() %d times' %
> >> self.__nfs_data['vfswritepage'])
> >> +        print('  VFS called nfs_writepages() %d times' %
> >> self.__nfs_data['vfswritepages'])
> >> +        print()
> >> +        print('Generic NFS counters:')
> >> +        print('  File size changing operations:')
> >> +        print('    truncating SETATTRs: %d  extending WRITEs: %d' % \
> >> +            (self.__nfs_data['setattrtrunc'],
> >> self.__nfs_data['extendwrite']))
> >> +        print('  %d silly renames' % self.__nfs_data['sillyrenames'])
> >> +        print('  short reads: %d  short writes: %d' % \
> >> +            (self.__nfs_data['shortreads'],
> >> self.__nfs_data['shortwrites']))
> >> +        print('  NFSERR_DELAYs from server: %d' %
> >> self.__nfs_data['delay'])
> >> 
> >>     def display_nfs_bytes(self):
> >>         """Pretty-print the NFS event counters
> >>         """
> >> -        print
> >> -        print 'NFS byte counts:'
> >> -        print '  applications read %d bytes via read(2)' %
> >> self.__nfs_data['normalreadbytes']
> >> -        print '  applications wrote %d bytes via write(2)' %
> >> self.__nfs_data['normalwritebytes']
> >> -        print '  applications read %d bytes via O_DIRECT read(2)' %
> >> self.__nfs_data['directreadbytes']
> >> -        print '  applications wrote %d bytes via O_DIRECT write(2)' %
> >> self.__nfs_data['directwritebytes']
> >> -        print '  client read %d bytes via NFS READ' %
> >> self.__nfs_data['serverreadbytes']
> >> -        print '  client wrote %d bytes via NFS WRITE' %
> >> self.__nfs_data['serverwritebytes']
> >> +        print()
> >> +        print('NFS byte counts:')
> >> +        print('  applications read %d bytes via read(2)' %
> >> self.__nfs_data['normalreadbytes'])
> >> +        print('  applications wrote %d bytes via write(2)' %
> >> self.__nfs_data['normalwritebytes'])
> >> +        print('  applications read %d bytes via O_DIRECT read(2)' %
> >> self.__nfs_data['directreadbytes'])
> >> +        print('  applications wrote %d bytes via O_DIRECT write(2)' %
> >> self.__nfs_data['directwritebytes'])
> >> +        print('  client read %d bytes via NFS READ' %
> >> self.__nfs_data['serverreadbytes'])
> >> +        print('  client wrote %d bytes via NFS WRITE' %
> >> self.__nfs_data['serverwritebytes'])
> >> 
> >>     def display_rpc_generic_stats(self):
> >>         """Pretty-print the generic RPC stats
> >>         """
> >>         sends = self.__rpc_data['rpcsends']
> >> 
> >> -        print
> >> -        print 'RPC statistics:'
> >> +        print()
> >> +        print('RPC statistics:')
> >> 
> >> -        print '  %d RPC requests sent, %d RPC replies received (%d XIDs
> >> not found)' % \
> >> -            (sends, self.__rpc_data['rpcreceives'],
> >> self.__rpc_data['badxids'])
> >> +        print('  %d RPC requests sent, %d RPC replies received (%d XIDs
> >> not found)' % \
> >> +            (sends, self.__rpc_data['rpcreceives'],
> >> self.__rpc_data['badxids']))
> >>         if sends != 0:
> >> -            print '  average backlog queue length: %d' % \
> >> -                (float(self.__rpc_data['backlogutil']) / sends)
> >> +            print('  average backlog queue length: %d' % \
> >> +                (float(self.__rpc_data['backlogutil']) / sends))
> >> 
> >>     def display_rpc_op_stats(self):
> >>         """Pretty-print the per-op stats
> >> @@ -261,23 +261,23 @@ class DeviceData:
> >>         sends = self.__rpc_data['rpcsends']
> >> 
> >>         # XXX: these should be sorted by 'count'
> >> -        print
> >> +        print()
> >>         for op in self.__rpc_data['ops']:
> >>             stats = self.__rpc_data[op]
> >>             count = stats[0]
> >>             retrans = stats[1] - count
> >>             if count != 0:
> >> -                print '%s:' % op
> >> -                print '\t%d ops (%d%%)' % \
> >> -                    (count, ((count * 100) / sends)),
> >> -                print '\t%d retrans (%d%%)' % (retrans, ((retrans * 100)
> >> / count)),
> >> -                print '\t%d major timeouts' % stats[2]
> >> -                print '\tavg bytes sent per op: %d\tavg bytes received
> >> per op: %d' % \
> >> -                    (stats[3] / count, stats[4] / count)
> >> -                print '\tbacklog wait: %f' % (float(stats[5]) / count),
> >> -                print '\tRTT: %f' % (float(stats[6]) / count),
> >> -                print '\ttotal execute time: %f (milliseconds)' % \
> >> -                    (float(stats[7]) / count)
> >> +                print('%s:' % op)
> >> +                print('\t%d ops (%d%%)' % \
> >> +                    (count, ((count * 100) / sends)), end=' ')
> >> +                print('\t%d retrans (%d%%)' % (retrans, ((retrans * 100)
> >> / count)), end=' ')
> >> +                print('\t%d major timeouts' % stats[2])
> >> +                print('\tavg bytes sent per op: %d\tavg bytes received
> >> per op: %d' % \
> >> +                    (stats[3] / count, stats[4] / count))
> >> +                print('\tbacklog wait: %f' % (float(stats[5]) / count),
> >> end=' ')
> >> +                print('\tRTT: %f' % (float(stats[6]) / count), end=' ')
> >> +                print('\ttotal execute time: %f (milliseconds)' % \
> >> +                    (float(stats[7]) / count))
> >> 
> >>     def compare_iostats(self, old_stats):
> >>         """Return the difference between two sets of stats
> >> @@ -285,9 +285,9 @@ class DeviceData:
> >>         result = DeviceData()
> >> 
> >>         # copy self into result
> >> -        for key, value in self.__nfs_data.iteritems():
> >> +        for key, value in self.__nfs_data.items():
> >>             result.__nfs_data[key] = value
> >> -        for key, value in self.__rpc_data.iteritems():
> >> +        for key, value in self.__rpc_data.items():
> >>             result.__rpc_data[key] = value
> >> 
> >>         # compute the difference of each item in the list
> >> @@ -295,7 +295,7 @@ class DeviceData:
> >>         # the reference to them.  so we build new lists here
> >>         # for the result object.
> >>         for op in result.__rpc_data['ops']:
> >> -            result.__rpc_data[op] = map(difference, self.__rpc_data[op],
> >> old_stats.__rpc_data[op])
> >> +            result.__rpc_data[op] = list(map(difference,
> >> self.__rpc_data[op], old_stats.__rpc_data[op]))
> >> 
> >>         # update the remaining keys we care about
> >>         result.__rpc_data['rpcsends'] -= old_stats.__rpc_data['rpcsends']
> >> @@ -312,17 +312,17 @@ class DeviceData:
> >>         if sample_time == 0:
> >>             sample_time = float(self.__nfs_data['age'])
> >> 
> >> -        print
> >> -        print '%s mounted on %s:' % \
> >> -            (self.__nfs_data['export'], self.__nfs_data['mountpoint'])
> >> +        print()
> >> +        print('%s mounted on %s:' % \
> >> +            (self.__nfs_data['export'], self.__nfs_data['mountpoint']))
> >> 
> >> -        print '\top/s\trpc bklog'
> >> -        print '\t%.2f' % (sends / sample_time),
> >> +        print('\top/s\trpc bklog')
> >> +        print('\t%.2f' % (sends / sample_time), end=' ')
> >>         if sends != 0:
> >> -            print '\t%.2f' % \
> >> -                ((float(self.__rpc_data['backlogutil']) / sends) /
> >> sample_time)
> >> +            print('\t%.2f' % \
> >> +                ((float(self.__rpc_data['backlogutil']) / sends) /
> >> sample_time))
> >>         else:
> >> -            print '\t0.00'
> >> +            print('\t0.00')
> >> 
> >>         # reads:  ops/s, kB/s, avg rtt, and avg exe
> >>         # XXX: include avg xfer size and retransmits?
> >> @@ -332,15 +332,15 @@ class DeviceData:
> >>         rtt = float(read_rpc_stats[6])
> >>         exe = float(read_rpc_stats[7])
> >> 
> >> -        print '\treads:\tops/s\t\tkB/s\t\tavg RTT (ms)\tavg exe (ms)'
> >> -        print '\t\t%.2f' % (ops / sample_time),
> >> -        print '\t\t%.2f' % (kilobytes / sample_time),
> >> +        print('\treads:\tops/s\t\tkB/s\t\tavg RTT (ms)\tavg exe (ms)')
> >> +        print('\t\t%.2f' % (ops / sample_time), end=' ')
> >> +        print('\t\t%.2f' % (kilobytes / sample_time), end=' ')
> >>         if ops != 0:
> >> -            print '\t\t%.2f' % (rtt / ops),
> >> -            print '\t\t%.2f' % (exe / ops)
> >> +            print('\t\t%.2f' % (rtt / ops), end=' ')
> >> +            print('\t\t%.2f' % (exe / ops))
> >>         else:
> >> -            print '\t\t0.00',
> >> -            print '\t\t0.00'
> >> +            print('\t\t0.00', end=' ')
> >> +            print('\t\t0.00')
> >> 
> >>         # writes:  ops/s, kB/s, avg rtt, and avg exe
> >>         # XXX: include avg xfer size and retransmits?
> >> @@ -350,15 +350,15 @@ class DeviceData:
> >>         rtt = float(write_rpc_stats[6])
> >>         exe = float(write_rpc_stats[7])
> >> 
> >> -        print '\twrites:\tops/s\t\tkB/s\t\tavg RTT (ms)\tavg exe (ms)'
> >> -        print '\t\t%.2f' % (ops / sample_time),
> >> -        print '\t\t%.2f' % (kilobytes / sample_time),
> >> +        print('\twrites:\tops/s\t\tkB/s\t\tavg RTT (ms)\tavg exe (ms)')
> >> +        print('\t\t%.2f' % (ops / sample_time), end=' ')
> >> +        print('\t\t%.2f' % (kilobytes / sample_time), end=' ')
> >>         if ops != 0:
> >> -            print '\t\t%.2f' % (rtt / ops),
> >> -            print '\t\t%.2f' % (exe / ops)
> >> +            print('\t\t%.2f' % (rtt / ops), end=' ')
> >> +            print('\t\t%.2f' % (exe / ops))
> >>         else:
> >> -            print '\t\t0.00',
> >> -            print '\t\t0.00'
> >> +            print('\t\t0.00', end=' ')
> >> +            print('\t\t0.00')
> >> 
> >> def parse_stats_file(filename):
> >>     """pop the contents of a mountstats file into a dictionary,
> >> @@ -388,18 +388,18 @@ def parse_stats_file(filename):
> >>     return ms_dict
> >> 
> >> def print_mountstats_help(name):
> >> -    print 'usage: %s [ options ] <mount point>' % name
> >> -    print
> >> -    print ' Version %s' % Mountstats_version
> >> -    print
> >> -    print ' Display NFS client per-mount statistics.'
> >> -    print
> >> -    print '  --version    display the version of this command'
> >> -    print '  --nfs        display only the NFS statistics'
> >> -    print '  --rpc        display only the RPC statistics'
> >> -    print '  --start      sample and save statistics'
> >> -    print '  --end        resample statistics and compare them with
> >> saved'
> >> -    print
> >> +    print('usage: %s [ options ] <mount point>' % name)
> >> +    print()
> >> +    print(' Version %s' % Mountstats_version)
> >> +    print()
> >> +    print(' Display NFS client per-mount statistics.')
> >> +    print()
> >> +    print('  --version    display the version of this command')
> >> +    print('  --nfs        display only the NFS statistics')
> >> +    print('  --rpc        display only the RPC statistics')
> >> +    print('  --start      sample and save statistics')
> >> +    print('  --end        resample statistics and compare them with
> >> saved')
> >> +    print()
> >> 
> >> def mountstats_command():
> >>     """Mountstats command
> >> @@ -414,7 +414,7 @@ def mountstats_command():
> >>             return
> >> 
> >>         if arg in ['-v', '--version', 'version']:
> >> -            print '%s version %s' % (sys.argv[0], Mountstats_version)
> >> +            print('%s version %s' % (sys.argv[0], Mountstats_version))
> >>             sys.exit(0)
> >> 
> >>         if arg in ['-n', '--nfs']:
> >> @@ -426,10 +426,10 @@ def mountstats_command():
> >>             continue
> >> 
> >>         if arg in ['-s', '--start']:
> >> -            raise Exception, 'Sampling is not yet implemented'
> >> +            raise Exception('Sampling is not yet implemented')
> >> 
> >>         if arg in ['-e', '--end']:
> >> -            raise Exception, 'Sampling is not yet implemented'
> >> +            raise Exception('Sampling is not yet implemented')
> >> 
> >>         if arg == sys.argv[0]:
> >>             continue
> >> @@ -448,14 +448,14 @@ def mountstats_command():
> >> 
> >>     for mp in mountpoints:
> >>         if mp not in mountstats:
> >> -            print 'Statistics for mount point %s not found' % mp
> >> +            print('Statistics for mount point %s not found' % mp)
> >>             continue
> >> 
> >>         stats = DeviceData()
> >>         stats.parse_stats(mountstats[mp])
> >> 
> >>         if not stats.is_nfs_mountpoint():
> >> -            print 'Mount point %s exists but is not an NFS mount' % mp
> >> +            print('Mount point %s exists but is not an NFS mount' % mp)
> >>             continue
> >> 
> >>         if nfs_only:
> >> @@ -472,37 +472,37 @@ def mountstats_command():
> >>            stats.display_rpc_op_stats()
> >> 
> >> def print_nfsstat_help(name):
> >> -    print 'usage: %s [ options ]' % name
> >> -    print
> >> -    print ' Version %s' % Mountstats_version
> >> -    print
> >> -    print ' nfsstat-like program that uses NFS client per-mount
> >> statistics.'
> >> -    print
> >> +    print('usage: %s [ options ]' % name)
> >> +    print()
> >> +    print(' Version %s' % Mountstats_version)
> >> +    print()
> >> +    print(' nfsstat-like program that uses NFS client per-mount
> >> statistics.')
> >> +    print()
> >> 
> >> def nfsstat_command():
> >>     print_nfsstat_help(prog)
> >> 
> >> def print_iostat_help(name):
> >> -    print 'usage: %s [ <interval> [ <count> ] ] [ <mount point> ] ' %
> >> name
> >> -    print
> >> -    print ' Version %s' % Mountstats_version
> >> -    print
> >> -    print ' iostat-like program to display NFS client per-mount
> >> statistics.'
> >> -    print
> >> -    print ' The <interval> parameter specifies the amount of time in
> >> seconds between'
> >> -    print ' each report.  The first report contains statistics for the
> >> time since each'
> >> -    print ' file system was mounted.  Each subsequent report contains
> >> statistics'
> >> -    print ' collected during the interval since the previous report.'
> >> -    print
> >> -    print ' If the <count> parameter is specified, the value of <count>
> >> determines the'
> >> -    print ' number of reports generated at <interval> seconds apart.  If
> >> the interval'
> >> -    print ' parameter is specified without the <count> parameter, the
> >> command generates'
> >> -    print ' reports continuously.'
> >> -    print
> >> -    print ' If one or more <mount point> names are specified, statistics
> >> for only these'
> >> -    print ' mount points will be displayed.  Otherwise, all NFS mount
> >> points on the'
> >> -    print ' client are listed.'
> >> -    print
> >> +    print('usage: %s [ <interval> [ <count> ] ] [ <mount point> ] ' %
> >> name)
> >> +    print()
> >> +    print(' Version %s' % Mountstats_version)
> >> +    print()
> >> +    print(' iostat-like program to display NFS client per-mount
> >> statistics.')
> >> +    print()
> >> +    print(' The <interval> parameter specifies the amount of time in
> >> seconds between')
> >> +    print(' each report.  The first report contains statistics for the
> >> time since each')
> >> +    print(' file system was mounted.  Each subsequent report contains
> >> statistics')
> >> +    print(' collected during the interval since the previous report.')
> >> +    print()
> >> +    print(' If the <count> parameter is specified, the value of <count>
> >> determines the')
> >> +    print(' number of reports generated at <interval> seconds apart.  If
> >> the interval')
> >> +    print(' parameter is specified without the <count> parameter, the
> >> command generates')
> >> +    print(' reports continuously.')
> >> +    print()
> >> +    print(' If one or more <mount point> names are specified, statistics
> >> for only these')
> >> +    print(' mount points will be displayed.  Otherwise, all NFS mount
> >> points on the')
> >> +    print(' client are listed.')
> >> +    print()
> >> 
> >> def print_iostat_summary(old, new, devices, time):
> >>     for device in devices:
> >> @@ -530,7 +530,7 @@ def iostat_command():
> >>             return
> >> 
> >>         if arg in ['-v', '--version', 'version']:
> >> -            print '%s version %s' % (sys.argv[0], Mountstats_version)
> >> +            print('%s version %s' % (sys.argv[0], Mountstats_version))
> >>             return
> >> 
> >>         if arg == sys.argv[0]:
> >> @@ -543,14 +543,14 @@ def iostat_command():
> >>             if interval > 0:
> >>                 interval_seen = True
> >>             else:
> >> -                print 'Illegal <interval> value'
> >> +                print('Illegal <interval> value')
> >>                 return
> >>         elif not count_seen:
> >>             count = int(arg)
> >>             if count > 0:
> >>                 count_seen = True
> >>             else:
> >> -                print 'Illegal <count> value'
> >> +                print('Illegal <count> value')
> >>                 return
> >> 
> >>     # make certain devices contains only NFS mount points
> >> @@ -563,13 +563,13 @@ def iostat_command():
> >>                 check += [device]
> >>         devices = check
> >>     else:
> >> -        for device, descr in mountstats.iteritems():
> >> +        for device, descr in mountstats.items():
> >>             stats = DeviceData()
> >>             stats.parse_stats(descr)
> >>             if stats.is_nfs_mountpoint():
> >>                 devices += [device]
> >>     if len(devices) == 0:
> >> -        print 'No NFS mount points were found'
> >> +        print('No NFS mount points were found')
> >>         return
> >> 
> >>     old_mountstats = None
> >> @@ -608,7 +608,7 @@ try:
> >>     elif prog == 'ms-iostat':
> >>         iostat_command()
> >> except KeyboardInterrupt:
> >> -    print 'Caught ^C... exiting'
> >> +    print('Caught ^C... exiting')
> >>     sys.exit(1)
> >> 
> >> sys.exit(0)
> >> diff --git a/tools/nfs-iostat/nfs-iostat.py
> >> b/tools/nfs-iostat/nfs-iostat.py
> >> index c035537..1c523f9 100644
> >> --- a/tools/nfs-iostat/nfs-iostat.py
> >> +++ b/tools/nfs-iostat/nfs-iostat.py
> >> @@ -95,7 +95,7 @@ class DeviceData:
> >>             if words[6] == 'nfs':
> >>                 self.__nfs_data['statvers'] = words[7]
> >>         elif words[0] == 'age:':
> >> -            self.__nfs_data['age'] = long(words[1])
> >> +            self.__nfs_data['age'] = int(words[1])
> >>         elif words[0] == 'opts:':
> >>             self.__nfs_data['mountoptions'] =
> >>             ''.join(words[1:]).split(',')
> >>         elif words[0] == 'caps:':
> >> @@ -116,7 +116,7 @@ class DeviceData:
> >>         elif words[0] == 'bytes:':
> >>             i = 1
> >>             for key in NfsByteCounters:
> >> -                self.__nfs_data[key] = long(words[i])
> >> +                self.__nfs_data[key] = int(words[i])
> >>                 i += 1
> >> 
> >>     def __parse_rpc_line(self, words):
> >> @@ -131,8 +131,8 @@ class DeviceData:
> >>                 self.__rpc_data['rpcsends'] = int(words[4])
> >>                 self.__rpc_data['rpcreceives'] = int(words[5])
> >>                 self.__rpc_data['badxids'] = int(words[6])
> >> -                self.__rpc_data['inflightsends'] = long(words[7])
> >> -                self.__rpc_data['backlogutil'] = long(words[8])
> >> +                self.__rpc_data['inflightsends'] = int(words[7])
> >> +                self.__rpc_data['backlogutil'] = int(words[8])
> >>             elif words[1] == 'tcp':
> >>                 self.__rpc_data['port'] = words[2]
> >>                 self.__rpc_data['bind_count'] = int(words[3])
> >> @@ -142,8 +142,8 @@ class DeviceData:
> >>                 self.__rpc_data['rpcsends'] = int(words[7])
> >>                 self.__rpc_data['rpcreceives'] = int(words[8])
> >>                 self.__rpc_data['badxids'] = int(words[9])
> >> -                self.__rpc_data['inflightsends'] = long(words[10])
> >> -                self.__rpc_data['backlogutil'] = long(words[11])
> >> +                self.__rpc_data['inflightsends'] = int(words[10])
> >> +                self.__rpc_data['backlogutil'] = int(words[11])
> >>             elif words[1] == 'rdma':
> >>                 self.__rpc_data['port'] = words[2]
> >>                 self.__rpc_data['bind_count'] = int(words[3])
> >> @@ -169,7 +169,7 @@ class DeviceData:
> >>         else:
> >>             op = words[0][:-1]
> >>             self.__rpc_data['ops'] += [op]
> >> -            self.__rpc_data[op] = [long(word) for word in words[1:]]
> >> +            self.__rpc_data[op] = [int(word) for word in words[1:]]
> >> 
> >>     def parse_stats(self, lines):
> >>         """Turn a list of lines from a mount stat file into a
> >> @@ -271,7 +271,7 @@ class DeviceData:
> >>         nfs_stats = self.__nfs_data
> >>         lookup_ops = self.__rpc_data['LOOKUP'][0]
> >>         readdir_ops = self.__rpc_data['READDIR'][0]
> >> -        if self.__rpc_data.has_key('READDIRPLUS'):
> >> +        if 'READDIRPLUS' in self.__rpc_data:
> >>             readdir_ops += self.__rpc_data['READDIRPLUS'][0]
> >> 
> >>         dentry_revals = nfs_stats['dentryrevalidates']
> >> @@ -330,7 +330,7 @@ class DeviceData:
> >>     def __print_rpc_op_stats(self, op, sample_time):
> >>         """Print generic stats for one RPC op
> >>         """
> >> -        if not self.__rpc_data.has_key(op):
> >> +        if op not in self.__rpc_data:
> >>             return
> >> 
> >>         rpc_stats = self.__rpc_data[op]
> >> @@ -405,7 +405,7 @@ class DeviceData:
> >>         elif which == 2:
> >>             self.__print_rpc_op_stats('LOOKUP', sample_time)
> >>             self.__print_rpc_op_stats('READDIR', sample_time)
> >> -            if self.__rpc_data.has_key('READDIRPLUS'):
> >> +            if 'READDIRPLUS' in self.__rpc_data:
> >>                 self.__print_rpc_op_stats('READDIRPLUS', sample_time)
> >>             self.__print_dir_cache_stats(sample_time)
> >>         elif which == 3:
> >> @@ -450,7 +450,7 @@ def print_iostat_summary(old, new, devices, time,
> >> options):
> >>     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)
> >> +        devicelist = [x for x in old if x in devices]
> >>     else:
> >>         devicelist = devices
> >> 
> >> 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

-- 
Regards,
Bohuslav "Slavek" Kabrda.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux