[Python-checkins] bpo-32143: add f_fsid to os.statvfs() (#4571)

Fred Drake webhook-mailer at python.org
Thu Dec 14 17:46:50 EST 2017


https://github.com/python/cpython/commit/96a5e50a5de3683b2afd6d680c7ecc4b525986f6
commit: 96a5e50a5de3683b2afd6d680c7ecc4b525986f6
branch: master
author: Giuseppe Scrivano <gscrivano at gnu.org>
committer: Fred Drake <fred at fdrake.net>
date: 2017-12-14T17:46:46-05:00
summary:

bpo-32143: add f_fsid to os.statvfs() (#4571)

Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>

files:
A Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst
M Doc/library/os.rst
M Lib/test/test_os.py
M Modules/posixmodule.c

diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 95c81137230..a24934ceb7b 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -2436,7 +2436,7 @@ features:
    correspond to the members of the :c:type:`statvfs` structure, namely:
    :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`,
    :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`,
-   :attr:`f_flag`, :attr:`f_namemax`.
+   :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`.
 
    Two module-level constants are defined for the :attr:`f_flag` attribute's
    bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted
@@ -2471,6 +2471,9 @@ features:
    .. versionchanged:: 3.6
       Accepts a :term:`path-like object`.
 
+   .. versionadded:: 3.7
+      Added :attr:`f_fsid`.
+
 
 .. data:: supports_dir_fd
 
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 22412569092..f235f801e03 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -352,6 +352,11 @@ def test_statvfs_attributes(self):
         for value, member in enumerate(members):
             self.assertEqual(getattr(result, 'f_' + member), result[value])
 
+        self.assertTrue(isinstance(result.f_fsid, int))
+
+        # Test that the size of the tuple doesn't change
+        self.assertEqual(len(result), 10)
+
         # Make sure that assignment really fails
         try:
             result.f_bfree = 1
diff --git a/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst b/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst
new file mode 100644
index 00000000000..f416ec504ec
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst
@@ -0,0 +1 @@
+os.statvfs() includes the f_fsid field from statvfs(2)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index fb879e3821a..448d4b7428e 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1860,6 +1860,7 @@ static PyStructSequence_Field statvfs_result_fields[] = {
     {"f_favail", },
     {"f_flag",   },
     {"f_namemax",},
+    {"f_fsid",   },
     {0}
 };
 
@@ -9324,6 +9325,7 @@ _pystatvfs_fromstructstatvfs(struct statvfs st) {
     PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag));
     PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax));
 #endif
+    PyStructSequence_SET_ITEM(v, 10, PyLong_FromUnsignedLong(st.f_fsid));
     if (PyErr_Occurred()) {
         Py_DECREF(v);
         return NULL;



More information about the Python-checkins mailing list