rendered paste bodyIndex: src/data/socket_file.cc
===================================================================
--- src/data/socket_file.cc (revision 1037)
+++ src/data/socket_file.cc (working copy)
@@ -98,9 +98,9 @@
#endif
bool
-SocketFile::reserve(RESERVE_PARAM uint64_t offset, RESERVE_PARAM uint64_t length) {
+SocketFile::reserve(RESERVE_PARAM uint64_t offset, RESERVE_PARAM uint64_t length) const {
#ifdef USE_XFS
- struct xfs_flock64 flock;
+ struct ::xfs_flock64 flock;
flock.l_whence = SEEK_SET;
flock.l_start = offset;
@@ -134,6 +134,9 @@
if (!is_open())
throw internal_error("SocketFile::set_size() called on a closed file");
+ if (!reserve(0, size))
+ throw internal_error("SocketFile::reserve() failed");
+
if (ftruncate(m_fd, size) == 0)
return true;
Index: src/data/socket_file.h
===================================================================
--- src/data/socket_file.h (revision 1037)
+++ src/data/socket_file.h (working copy)
@@ -67,7 +67,7 @@
// Reserve the space on disk if a system call is defined. 'length'
// of zero indicates to the end of the file.
- bool reserve(uint64_t offset = 0, uint64_t length = 0);
+ bool reserve(uint64_t offset = 0, uint64_t length = 0) const;
bool is_open() const { return m_fd != invalid_fd; }
Index: configure.ac
===================================================================
--- configure.ac (revision 1037)
+++ configure.ac (working copy)
@@ -43,7 +43,7 @@
TORRENT_ENABLE_ARCH
TORRENT_WITH_SYSROOT
-dnl TORRENT_WITH_XFS
+TORRENT_WITH_XFS
TORRENT_WITH_KQUEUE
TORRENT_WITHOUT_EPOLL
TORRENT_WITH_POSIX_FALLOCATE