diff options
Diffstat (limited to 'isys')
-rw-r--r-- | isys/isys.c | 24 | ||||
-rw-r--r-- | isys/isys.py | 6 |
2 files changed, 30 insertions, 0 deletions
diff --git a/isys/isys.c b/isys/isys.c index b4860329a..f5a47aad6 100644 --- a/isys/isys.c +++ b/isys/isys.c @@ -71,8 +71,10 @@ static PyObject * doSetResolvRetry(PyObject * s, PyObject * args); static PyObject * doLoadFont(PyObject * s, PyObject * args); static PyObject * doLoadKeymap(PyObject * s, PyObject * args); static PyObject * doReadE2fsLabel(PyObject * s, PyObject * args); +static PyObject * doExt2Dirty(PyObject * s, PyObject * args); static PyMethodDef isysModuleMethods[] = { + { "e2dirty", (PyCFunction) doExt2Dirty, METH_VARARGS, NULL }, { "e2fslabel", (PyCFunction) doReadE2fsLabel, METH_VARARGS, NULL }, { "devSpaceFree", (PyCFunction) doDevSpaceFree, METH_VARARGS, NULL }, { "raidstop", (PyCFunction) doRaidStop, METH_VARARGS, NULL }, @@ -1148,3 +1150,25 @@ static PyObject * doReadE2fsLabel(PyObject * s, PyObject * args) { return Py_BuildValue("s", buf); } + +static PyObject * doExt2Dirty(PyObject * s, PyObject * args) { + char * device; + ext2_filsys fsys; + int rc; + int clean; + + if (!PyArg_ParseTuple(args, "s", &device)) return NULL; + + rc = ext2fs_open(device, EXT2_FLAG_FORCE, 0, 0, unix_io_manager, + &fsys); + if (rc) { + Py_INCREF(Py_None); + return Py_None; + } + + clean = fsys->super->s_state & EXT2_VALID_FS; + + ext2fs_close(fsys); + + return Py_BuildValue("i", !clean); +} diff --git a/isys/isys.py b/isys/isys.py index 02adedc95..65ee2a275 100644 --- a/isys/isys.py +++ b/isys/isys.py @@ -245,3 +245,9 @@ def readExt2Label(device): label = _isys.e2fslabel("/tmp/disk"); os.unlink("/tmp/disk") return label + +def ext2IsDirty(device): + makeDevInode(device, "/tmp/disk") + label = _isys.e2dirty("/tmp/disk"); + os.unlink("/tmp/disk") + return label |