Document the fact that StatFs.restat() and ctor can throw.

StatFs.restat() and the StatFs constructor can throw
IllegalArgumentException. This was not previously documented;
not all callers took this into account, for example:
   http://r.android.com/251290

This CL adds documentation to those methods. It also adds
comments to two of the callers.

Separately from this CL, we may in addition consider adding
new API StatFs.checkedRestat() and StatFs.checkedCreate()
or similar that throw IOException; we cannot change the
existing constructor and method since they are public.

Test: Checked that "make" still completed successfully.

Change-Id: I6a0b3cb7718939408937c61de7c3b000b948fa59
This commit is contained in:
Tobias Thierer
2016-08-02 16:41:11 +01:00
parent eb7c287c71
commit 0ad48dc8aa
3 changed files with 11 additions and 1 deletions

View File

@@ -61,6 +61,8 @@ public final class SQLiteGlobal {
public static int getDefaultPageSize() {
synchronized (sLock) {
if (sDefaultPageSize == 0) {
// If there is an issue accessing /data, something is so seriously
// wrong that we just let the IllegalArgumentException propagate.
sDefaultPageSize = new StatFs("/data").getBlockSize();
}
return SystemProperties.getInt("debug.sqlite.pagesize", sDefaultPageSize);

View File

@@ -34,11 +34,16 @@ public class StatFs {
* class.
*
* @param path path in the desired file system to stat.
*
* @throws IllegalArgumentException if the file system access fails
*/
public StatFs(String path) {
mStat = doStat(path);
}
/**
* @throws IllegalArgumentException if the file system access fails
*/
private static StructStatVfs doStat(String path) {
try {
return Os.statvfs(path);
@@ -51,6 +56,8 @@ public class StatFs {
* Perform a restat of the file system referenced by this object. This is
* the same as re-constructing the object with the same file system path,
* and the new stat values are available upon return.
*
* @throws IllegalArgumentException if the file system access fails
*/
public void restat(String path) {
mStat = doStat(path);

View File

@@ -330,7 +330,8 @@ public class DeviceStorageMonitorService extends SystemService {
mLastReportedFreeMemTime = 0;
mResolver = context.getContentResolver();
mIsBootImageOnDisk = isBootImageOnDisk();
//create StatFs object
// If these constructors throw IllegalArgumentException, something
// is so seriously wrong that we just let the Exception propagate.
mDataFileStats = new StatFs(DATA_PATH.getAbsolutePath());
mSystemFileStats = new StatFs(SYSTEM_PATH.getAbsolutePath());
mCacheFileStats = new StatFs(CACHE_PATH.getAbsolutePath());