WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Parsing 'df' output is extremely non-port

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Parsing 'df' output is extremely non-portable. Replace with a direct statvfs().
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 13 Nov 2006 19:50:14 +0000
Delivery-date: Mon, 13 Nov 2006 11:50:02 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User john.levon@xxxxxxx
# Node ID 2511ac1f1e213b7491bb848ce503df33f0ffc144
# Parent  ad7b60a1db8c25a592e222263f6251e68f2e67eb
Parsing 'df' output is extremely non-portable. Replace with a direct statvfs().

Signed-off-by: John Levon <john.levon@xxxxxxx>
---
 tools/python/xen/xend/XendStorageRepository.py |   27 +------------------------
 1 files changed, 2 insertions(+), 25 deletions(-)

diff -r ad7b60a1db8c -r 2511ac1f1e21 
tools/python/xen/xend/XendStorageRepository.py
--- a/tools/python/xen/xend/XendStorageRepository.py    Mon Nov 13 16:19:38 
2006 +0000
+++ b/tools/python/xen/xend/XendStorageRepository.py    Thu Nov 09 15:03:51 
2006 -0800
@@ -31,10 +31,8 @@ XEND_STORAGE_DIR = "/var/lib/xend/storag
 XEND_STORAGE_DIR = "/var/lib/xend/storage/"
 XEND_STORAGE_QCOW_FILENAME = "%s.qcow"
 XEND_STORAGE_VDICFG_FILENAME = "%s.vdi.xml"
-DF_COMMAND = "df -lPk"
 QCOW_CREATE_COMMAND = "/usr/sbin/qcow-create %d %s"
 
-KB = 1024
 MB = 1024 *1024
 
 class DeviceInvalidError(Exception):
@@ -151,23 +149,6 @@ class XendStorageRepository:
         finally:
             self.lock.release()
 
-    def _get_df(self):
-        """Returns the output of 'df' in a dictionary where the keys
-        are the Linux device numbers, and the values are it's corresponding
-        free space in bytes
-
-        @rtype: dictionary
-        """
-        df = commands.getoutput(DF_COMMAND)
-        devnum_free = {}
-        for line in df.split('\n')[1:]:
-            words = line.split()
-            mount_point = words[-1]
-            dev_no = os.stat(mount_point).st_dev
-            free_kb = int(words[3])
-            devnum_free[dev_no] = free_kb * KB
-        return devnum_free
-
     def _get_free_space(self):
         """Returns the amount of free space in bytes available in the storage
         partition. Note that this may not be used if the storage repository
@@ -175,12 +156,8 @@ class XendStorageRepository:
 
         @rtype: int
         """
-        df = self._get_df()
-        devnum = os.stat(self.storage_dir).st_dev
-        if df.has_key(devnum):
-            return df[devnum]
-        raise DeviceInvalidError("Device not found for storage path: %s" %
-                                 self.storage_dir)
+        stfs = os.statvfs(self.storage_dir)
+        return stfs.f_bavail * stfs.f_frsize
 
     def _has_space_available_for(self, size_bytes):
         """Returns whether there is enough space for an image in the

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Parsing 'df' output is extremely non-portable. Replace with a direct statvfs()., Xen patchbot-unstable <=