Add QStorageInfo::blockSize

[ChangeLog][QtCore][QStorageInfo] Added QStorageInfo::blockSize(), which
returns the optimal block size for data transfer to and from the
storage.

Change-Id: Ib306f8f647014b399b87ffff13f4eba6000452d4
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
This commit is contained in:
Thiago Macieira 2015-07-27 14:41:19 -07:00
parent 62bd4f5852
commit cc7fcecd7a
5 changed files with 17 additions and 1 deletions

View File

@ -221,6 +221,18 @@ qint64 QStorageInfo::bytesTotal() const
return d->bytesTotal; return d->bytesTotal;
} }
/*!
\since 5.6
Returns the optimal transfer block size for this filesystem.
Returns -1 if QStorageInfo could not determine the size or if the QStorageInfo
object is not valid.
*/
int QStorageInfo::blockSize() const
{
return d->blockSize;
}
/*! /*!
Returns the type name of the filesystem. Returns the type name of the filesystem.

View File

@ -72,6 +72,7 @@ public:
qint64 bytesTotal() const; qint64 bytesTotal() const;
qint64 bytesFree() const; qint64 bytesFree() const;
qint64 bytesAvailable() const; qint64 bytesAvailable() const;
int blockSize() const;
inline bool isRoot() const; inline bool isRoot() const;
bool isReadOnly() const; bool isReadOnly() const;

View File

@ -76,6 +76,7 @@ void QStorageInfoPrivate::retrievePosixInfo()
device = QByteArray(statfs_buf.f_mntfromname); device = QByteArray(statfs_buf.f_mntfromname);
readOnly = (statfs_buf.f_flags & MNT_RDONLY) != 0; readOnly = (statfs_buf.f_flags & MNT_RDONLY) != 0;
fileSystemType = QByteArray(statfs_buf.f_fstypename); fileSystemType = QByteArray(statfs_buf.f_fstypename);
blockSize = statfs_buf.f_bsize;
} }
} }

View File

@ -53,7 +53,7 @@ class QStorageInfoPrivate : public QSharedData
{ {
public: public:
inline QStorageInfoPrivate() : QSharedData(), inline QStorageInfoPrivate() : QSharedData(),
bytesTotal(-1), bytesFree(-1), bytesAvailable(-1), bytesTotal(-1), bytesFree(-1), bytesAvailable(-1), blockSize(-1),
readOnly(false), ready(false), valid(false) readOnly(false), ready(false), valid(false)
{} {}
@ -84,6 +84,7 @@ public:
qint64 bytesTotal; qint64 bytesTotal;
qint64 bytesFree; qint64 bytesFree;
qint64 bytesAvailable; qint64 bytesAvailable;
int blockSize;
bool readOnly; bool readOnly;
bool ready; bool ready;

View File

@ -510,6 +510,7 @@ void QStorageInfoPrivate::retrieveVolumeInfo()
bytesTotal = statfs_buf.f_blocks * statfs_buf.f_bsize; bytesTotal = statfs_buf.f_blocks * statfs_buf.f_bsize;
bytesFree = statfs_buf.f_bfree * statfs_buf.f_bsize; bytesFree = statfs_buf.f_bfree * statfs_buf.f_bsize;
bytesAvailable = statfs_buf.f_bavail * statfs_buf.f_bsize; bytesAvailable = statfs_buf.f_bavail * statfs_buf.f_bsize;
blockSize = statfs_buf.f_bsize;
#if defined(Q_OS_ANDROID) || defined (Q_OS_BSD4) #if defined(Q_OS_ANDROID) || defined (Q_OS_BSD4)
#if defined(_STATFS_F_FLAGS) #if defined(_STATFS_F_FLAGS)
readOnly = (statfs_buf.f_flags & ST_RDONLY) != 0; readOnly = (statfs_buf.f_flags & ST_RDONLY) != 0;