New upstream version 8.1.0

This commit is contained in:
geos_one
2025-08-10 01:34:16 +02:00
commit c891bb7105
4398 changed files with 838833 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
#include <program/Program.h>
#include <common/net/message/storage/listing/ListDirFromOffsetRespMsg.h>
#include "ListDirFromOffsetMsgEx.h"
#include <boost/lexical_cast.hpp>
bool ListDirFromOffsetMsgEx::processIncoming(ResponseContext& ctx)
{
#ifdef BEEGFS_DEBUG
const char* logContext = "ListDirFromOffsetMsgEx incoming";
#endif // BEEGFS_DEBUG
EntryInfo* entryInfo = this->getEntryInfo();
LOG_DEBUG(logContext, Log_SPAM,
std::string("serverOffset: ") + StringTk::int64ToStr(getServerOffset() ) + "; " +
std::string("maxOutNames: ") + StringTk::int64ToStr(getMaxOutNames() ) + "; " +
std::string("filterDots: ") + StringTk::uintToStr(getFilterDots() ) + "; " +
std::string("parentEntryID: ") + entryInfo->getParentEntryID() + "; " +
std::string("buddyMirrored: ") + (entryInfo->getIsBuddyMirrored() ? "true" : "false") + "; " +
std::string("entryID: ") + entryInfo->getEntryID() );
StringList names;
UInt8List entryTypes;
StringList entryIDs;
Int64List serverOffsets;
int64_t newServerOffset = getServerOffset(); // init to something useful
FhgfsOpsErr listRes = listDirIncremental(entryInfo, &names, &entryTypes, &entryIDs,
&serverOffsets, &newServerOffset);
LOG_DEBUG(logContext, Log_SPAM,
std::string("newServerOffset: ") + StringTk::int64ToStr(newServerOffset) + "; " +
std::string("names.size: ") + StringTk::int64ToStr(names.size() ) + "; " +
std::string("listRes: ") + boost::lexical_cast<std::string>(listRes));
ctx.sendResponse(
ListDirFromOffsetRespMsg(
listRes, &names, &entryTypes, &entryIDs, &serverOffsets, newServerOffset) );
Program::getApp()->getNodeOpStats()->updateNodeOp(ctx.getSocket()->getPeerIP(),
MetaOpCounter_READDIR, getMsgHeaderUserID() );
return true;
}
FhgfsOpsErr ListDirFromOffsetMsgEx::listDirIncremental(EntryInfo* entryInfo, StringList* outNames,
UInt8List* outEntryTypes, StringList* outEntryIDs, Int64List* outServerOffsets,
int64_t* outNewOffset)
{
MetaStore* metaStore = Program::getApp()->getMetaStore();
// reference dir
DirInode* dir = metaStore->referenceDir(entryInfo->getEntryID(), entryInfo->getIsBuddyMirrored(),
true);
if(!dir)
return FhgfsOpsErr_PATHNOTEXISTS;
// query contents
ListIncExOutArgs outArgs(outNames, outEntryTypes, outEntryIDs, outServerOffsets, outNewOffset);
FhgfsOpsErr listRes = dir->listIncrementalEx(
getServerOffset(), getMaxOutNames(), getFilterDots(), outArgs);
// clean-up
metaStore->releaseDir(entryInfo->getEntryID() );
return listRes;
}

View File

@@ -0,0 +1,20 @@
#pragma once
#include <storage/MetaStore.h>
#include <common/storage/EntryInfo.h>
#include <common/storage/StorageErrors.h>
#include <common/net/message/storage/listing/ListDirFromOffsetMsg.h>
class ListDirFromOffsetMsgEx : public ListDirFromOffsetMsg
{
public:
virtual bool processIncoming(ResponseContext& ctx);
private:
FhgfsOpsErr listDirIncremental(EntryInfo* entryInfo, StringList* outNames,
UInt8List* outEntryTypes, StringList* outEntryIDs, Int64List* outServerOffsets,
int64_t* outNewOffset);
};