hrev52556 adds 2 changesets to branch 'master'
old head: 966c60f355b606d03da31f86080367b6dae635d8
new head: 59ecfa6cb620abe17a41ad72d746d8a35f671ad6
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=59ecfa6cb620+%5E966c60f355b6
----------------------------------------------------------------------------
f0d5e5b06264: userlandfs: Fix the BeOS frontend on 64-bit.
59ecfa6cb620: netfs: Fix and enable on 64-bit.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
12 files changed, 42 insertions(+), 30 deletions(-)
build/jam/HaikuPackages | 2 +-
build/jam/packages/UserlandFS | 2 +-
build/jam/repositories/Haiku | 2 +-
.../file_systems/netfs/client/ShareVolume.cpp | 10 ++++-----
.../file_systems/netfs/client/ShareVolume.h | 2 +-
.../file_systems/netfs/headers/shared/Requests.h | 22 ++++++++++----------
.../netfs/server/ClientConnection.cpp | 14 ++++++-------
.../file_systems/netfs/server/NetFSServer.cpp | 2 +-
.../kernel/file_systems/netfs/server/Node.cpp | 3 ++-
.../netfs/server/SecurityContext.cpp | 9 ++++++++
.../file_systems/userlandfs/server/beos/Jamfile | 2 ++
.../file_systems/userlandfs/server/beos/lock.h | 2 +-
############################################################################
Commit: f0d5e5b06264fc96566ec96049230de4404c73a3
URL: https://git.haiku-os.org/haiku/commit/?id=f0d5e5b06264
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Sun Nov 18 19:36:28 2018 UTC
userlandfs: Fix the BeOS frontend on 64-bit.
----------------------------------------------------------------------------
diff --git a/build/jam/packages/UserlandFS b/build/jam/packages/UserlandFS
index 7f1c50a7d1..c702abbf0f 100644
--- a/build/jam/packages/UserlandFS
+++ b/build/jam/packages/UserlandFS
@@ -12,7 +12,7 @@ AddFilesToPackage servers : userlandfs_server ;
# libs
local userlandfsLibs = [ FFilterByBuildFeatures
- libuserlandfs_beos_kernel.so@!x86_64
+ libuserlandfs_beos_kernel.so
libuserlandfs_haiku_kernel.so
libuserlandfs_fuse.so
]
diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/beos/Jamfile
b/src/add-ons/kernel/file_systems/userlandfs/server/beos/Jamfile
index 37868b1f90..d8f7741760 100644
--- a/src/add-ons/kernel/file_systems/userlandfs/server/beos/Jamfile
+++ b/src/add-ons/kernel/file_systems/userlandfs/server/beos/Jamfile
@@ -4,6 +4,8 @@ local userlandFSTop = [ FDirName $(HAIKU_TOP) src add-ons kernel
file_systems userlandfs ] ;
local userlandFSIncludes = [ PrivateHeaders userlandfs ] ;
+SubDirCcFlags -Wno-error=format ;
+
SubDirSysHdrs [ FDirName $(userlandFSIncludes) ] ;
SubDirHdrs [ FDirName $(userlandFSIncludes) private ] ;
SubDirHdrs [ FDirName $(userlandFSIncludes) shared ] ;
diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/beos/lock.h
b/src/add-ons/kernel/file_systems/userlandfs/server/beos/lock.h
index 8e0e133e6b..98582c8dd7 100644
--- a/src/add-ons/kernel/file_systems/userlandfs/server/beos/lock.h
+++ b/src/add-ons/kernel/file_systems/userlandfs/server/beos/lock.h
@@ -24,7 +24,7 @@
struct beos_lock {
sem_id s;
- long c;
+ int32 c;
};
struct beos_mlock {
############################################################################
Revision: hrev52556
Commit: 59ecfa6cb620abe17a41ad72d746d8a35f671ad6
URL: https://git.haiku-os.org/haiku/commit/?id=59ecfa6cb620
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Sun Nov 18 19:37:06 2018 UTC
netfs: Fix and enable on 64-bit.
----------------------------------------------------------------------------
diff --git a/build/jam/HaikuPackages b/build/jam/HaikuPackages
index 76f131fe00..8efe6419cf 100644
--- a/build/jam/HaikuPackages
+++ b/build/jam/HaikuPackages
@@ -8,7 +8,7 @@ local packages = [ FFilterByBuildFeatures
HaikuUserguide
HaikuWelcome
MakefileEngine
- NetFS@!x86_64
+ NetFS
UserlandFS
]
;
diff --git a/build/jam/repositories/Haiku b/build/jam/repositories/Haiku
index 6cd12a8e94..9ea56dd6b3 100644
--- a/build/jam/repositories/Haiku
+++ b/build/jam/repositories/Haiku
@@ -40,7 +40,7 @@ if $(HAIKU_IS_BOOTSTRAP) != 1 {
haiku_userguide_zh_CN
haiku_welcome
makefile_engine
- netfs@!x86_64
+ netfs
userland_fs
] ;
}
diff --git a/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.cpp
b/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.cpp
index 01ef34646d..243d8ad296 100644
--- a/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.cpp
+++ b/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.cpp
@@ -132,7 +132,7 @@ struct ShareVolume::AttrDirCookie {
}
ShareAttrDirIterator* iterator;
- int32 cookie;
+ intptr_t cookie;
bool rewind;
};
@@ -747,7 +747,7 @@ ShareVolume::Close(Node* _node, void* cookie)
status_t
ShareVolume::FreeCookie(Node* _node, void* cookie)
{
- return _Close((int32)cookie);
+ return _Close((intptr_t)cookie);
}
// Read
@@ -765,7 +765,7 @@ ShareVolume::Read(Node* _node, void* cookie, off_t pos,
void* _buffer,
// prepare the request
ReadRequest request;
request.volumeID = fID;
- request.cookie = (int32)cookie;
+ request.cookie = (intptr_t)cookie;
request.pos = pos;
request.size = bufferSize;
@@ -861,7 +861,7 @@ ShareVolume::Write(Node* _node, void* cookie, off_t pos,
const void* _buffer,
// prepare the request
WriteRequest request;
request.volumeID = fID;
- request.cookie = (int32)cookie;
+ request.cookie = (intptr_t)cookie;
request.pos = pos;
request.data.SetTo(buffer, toWrite);
@@ -2951,7 +2951,7 @@ ShareVolume::_MultiWalk(RequestMemberArray<EntryInfo>&
_entryInfos,
// _Close
status_t
-ShareVolume::_Close(int32 cookie)
+ShareVolume::_Close(intptr_t cookie)
{
if (!_EnsureShareMounted())
return ERROR_NOT_CONNECTED;
diff --git a/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.h
b/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.h
index 93b7aa1acf..8b0bfe6e3a 100644
--- a/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.h
+++ b/src/add-ons/kernel/file_systems/netfs/client/ShareVolume.h
@@ -217,7 +217,7 @@ private:
status_t _MultiWalk(
RequestMemberArray<EntryInfo>& entryInfos,
MultiWalkReply** reply);
- status_t _Close(int32 cookie);
+ status_t _Close(intptr_t cookie);
uint32 _GetConnectionState();
bool _IsConnected();
diff --git a/src/add-ons/kernel/file_systems/netfs/headers/shared/Requests.h
b/src/add-ons/kernel/file_systems/netfs/headers/shared/Requests.h
index 0d0c878209..e1655a42fb 100644
--- a/src/add-ons/kernel/file_systems/netfs/headers/shared/Requests.h
+++ b/src/add-ons/kernel/file_systems/netfs/headers/shared/Requests.h
@@ -468,7 +468,7 @@ struct CreateFileReply : ReplyRequest {
}
EntryInfo entryInfo;
- int32 cookie;
+ intptr_t cookie;
};
// OpenRequest
@@ -500,7 +500,7 @@ struct OpenReply : ReplyRequest {
}
NodeInfo nodeInfo;
- int32 cookie;
+ intptr_t cookie;
};
// CloseRequest
@@ -514,7 +514,7 @@ struct CloseRequest : VolumeRequest {
visitor->Visit(this, cookie);
}
- int32 cookie;
+ intptr_t cookie;
};
// CloseReply
@@ -542,7 +542,7 @@ struct ReadRequest : VolumeRequest {
visitor->Visit(this, size);
}
- int32 cookie;
+ intptr_t cookie;
off_t pos;
int32 size;
};
@@ -578,7 +578,7 @@ struct WriteRequest : VolumeRequest {
visitor->Visit(this, data);
}
- int32 cookie;
+ intptr_t cookie;
off_t pos;
Data data;
};
@@ -825,7 +825,7 @@ struct OpenDirReply : ReplyRequest {
}
NodeInfo nodeInfo;
- int32 cookie;
+ intptr_t cookie;
};
// ReadDirRequest
@@ -841,7 +841,7 @@ struct ReadDirRequest : VolumeRequest {
visitor->Visit(this, rewind);
}
- int32 cookie;
+ intptr_t cookie;
int32 count;
bool rewind;
};
@@ -955,7 +955,7 @@ struct OpenAttrDirReply : ReplyRequest {
}
AttrDirInfo attrDirInfo;
- int32 cookie;
+ intptr_t cookie;
};
// ReadAttrDirRequest
@@ -970,7 +970,7 @@ struct ReadAttrDirRequest : VolumeRequest {
visitor->Visit(this, rewind);
}
- int32 cookie;
+ intptr_t cookie;
int32 count;
bool rewind;
};
@@ -1180,7 +1180,7 @@ struct OpenQueryReply : ReplyRequest {
visitor->Visit(this, cookie);
}
- int32 cookie;
+ intptr_t cookie;
};
// ReadQueryRequest
@@ -1193,7 +1193,7 @@ struct ReadQueryRequest : Request {
visitor->Visit(this, cookie);
}
- int32 cookie;
+ intptr_t cookie;
int32 count;
};
diff --git a/src/add-ons/kernel/file_systems/netfs/server/ClientConnection.cpp
b/src/add-ons/kernel/file_systems/netfs/server/ClientConnection.cpp
index a224f736f1..873cfe984c 100644
--- a/src/add-ons/kernel/file_systems/netfs/server/ClientConnection.cpp
+++ b/src/add-ons/kernel/file_systems/netfs/server/ClientConnection.cpp
@@ -2046,15 +2046,15 @@ ClientConnection::VisitReadAttrRequest(ReadAttrRequest*
request)
// the size of the attribute.
attr_info info;
result = handle->StatAttr(request->name.GetString(), &info);
- off_t originalPos = max(request->pos, 0LL);
- int32 originalSize = max(request->size, 0L);
+ off_t originalPos = max(request->pos, (off_t)0);
+ int32 originalSize = max(request->size, (int32)0);
off_t pos = originalPos;
int32 size = originalSize;
type_code type = B_SWAP_INT32(request->type);
bool convert = false;
if (result == B_OK) {
- originalSize = min((off_t)originalSize, max(0LL,
info.size - pos));
+ originalSize = min((off_t)originalSize, max((off_t)0,
info.size - pos));
size = originalSize;
// deal with inverse endianess clients
@@ -2193,7 +2193,7 @@ ClientConnection::VisitWriteAttrRequest(WriteAttrRequest*
request)
managerLocker.Unlock();
if (result == B_OK) {
- off_t pos = max(request->pos, 0LL);
+ off_t pos = max(request->pos, (off_t)0);
int32 size = request->data.GetSize();
type_code type = request->type;
char* buffer = (char*)request->data.GetData();
@@ -2204,8 +2204,8 @@ ClientConnection::VisitWriteAttrRequest(WriteAttrRequest*
request)
if (pos != 0) {
WARN("WriteAttr(): WARNING: Need to
convert attribute "
"endianess, but position is not
0: attribute: %s, "
- "pos: %lld, size: %ld\n",
request->name.GetString(),
- pos, size);
+ "pos: %" B_PRIdOFF ", size: %"
B_PRId32 "\n",
+ request->name.GetString(), pos,
size);
}
swap_data(type, buffer, size, B_SWAP_ALWAYS);
} else
@@ -2571,7 +2571,7 @@ ClientConnection::ProcessQueryEvent(NodeMonitoringEvent*
event)
} else {
// We only support "entry created" and "entry removed" query
events.
// "entry moved" is split by the volume manager into those.
- ERROR("Ignoring unexpected query event: opcode: 0x%lx\n",
+ ERROR("Ignoring unexpected query event: opcode: 0x%" B_PRIx32
"\n",
event->opcode);
return;
}
diff --git a/src/add-ons/kernel/file_systems/netfs/server/NetFSServer.cpp
b/src/add-ons/kernel/file_systems/netfs/server/NetFSServer.cpp
index 4bcf77dc39..324b271243 100644
--- a/src/add-ons/kernel/file_systems/netfs/server/NetFSServer.cpp
+++ b/src/add-ons/kernel/file_systems/netfs/server/NetFSServer.cpp
@@ -1150,7 +1150,7 @@ NetFSServer::_ConnectionDeleter()
ClientConnection* connection = NULL;
if (error == B_OK) {
AutoLocker<Locker> _(fLock);
- connection =
(ClientConnection*)fClosedConnections.RemoveItem(0L);
+ connection =
(ClientConnection*)fClosedConnections.RemoveItem((int32)0);
}
if (connection)
delete connection;
diff --git a/src/add-ons/kernel/file_systems/netfs/server/Node.cpp
b/src/add-ons/kernel/file_systems/netfs/server/Node.cpp
index b36c78a726..de79068c33 100644
--- a/src/add-ons/kernel/file_systems/netfs/server/Node.cpp
+++ b/src/add-ons/kernel/file_systems/netfs/server/Node.cpp
@@ -151,7 +151,8 @@ Node::UpdateStat()
// check if it is the same node
if (st.st_dev != fStat.st_dev || st.st_ino != fStat.st_ino) {
ERROR("Node::UpdateStat(): ERROR: GetPath() returned path that "
- "doesn't point to this node: node: (%ld, %lld), path:
`%s'\n",
+ "doesn't point to this node: node: (%" B_PRIdDEV ", %"
B_PRIdINO "), "
+ "path: `%s'\n",
GetVolumeID(), GetID(), path.GetPath());
return B_ENTRY_NOT_FOUND;
}
diff --git a/src/add-ons/kernel/file_systems/netfs/server/SecurityContext.cpp
b/src/add-ons/kernel/file_systems/netfs/server/SecurityContext.cpp
index 8662ac0b53..df39137fda 100644
--- a/src/add-ons/kernel/file_systems/netfs/server/SecurityContext.cpp
+++ b/src/add-ons/kernel/file_systems/netfs/server/SecurityContext.cpp
@@ -329,7 +329,12 @@ struct SecurityContext::UserPath {
uint32 GetHashCode() const
{
+#ifdef B_HAIKU_64_BIT
+ uint64 v = (uint64)user;
+ return (path.GetHashCode() * 31) + ((uint32)(v >> 32) ^
(uint32)v);
+#else
return path.GetHashCode() * 31 + (uint32)user;
+#endif
}
UserPath& operator=(const UserPath& other)
@@ -520,7 +525,11 @@ SecurityContext::Archive(BMessage* archive, bool deep)
const
if (!tmpUserArchives)
return B_NO_MEMORY;
ArrayDeleter<BMessage> deleter(tmpUserArchives);
+#ifdef B_HAIKU_64_BIT
+ HashMap<HashKey64<User*>, BMessage*> userArchives;
+#else
HashMap<HashKey32<User*>, BMessage*> userArchives;
+#endif
int32 i = 0;
for (UserMap::Iterator it = fUsers->GetIterator(); it.HasNext();) {
User* user = it.Next().value;