1 #ifndef NDNDPDK_FILESERVER_FD_H
2 #define NDNDPDK_FILESERVER_FD_H
6 #include "../ndni/data.h"
7 #include "../ndni/tlv-encoder.h"
8 #include "../vendor/uthash-handle.h"
11 #include <linux/stat.h>
18 #define FileServerFd_StatTime(t) ((uint64_t)(t).tv_sec * SPDK_SEC_TO_NSEC + (uint64_t)(t).tv_nsec)
56 __attribute__((nonnull))
void
60 __attribute__((nonnull))
void
64 static __rte_always_inline
bool
66 return S_ISREG(entry->
st.stx_mode);
70 static __rte_always_inline
bool
72 return S_ISDIR(entry->
st.stx_mode);
75 __attribute__((nonnull))
static inline uint32_t
77 return TlvEncoder_SizeofVarNum(
TtName) + TlvEncoder_SizeofVarNum(entry->
versionedL) +
81 __attribute__((nonnull)) uint32_t
89 __attribute__((nonnull))
static inline uint32_t
92 return FileServerFd_SizeofMetadata_(entry);
102 __attribute__((nonnull))
void
111 __attribute__((nonnull))
bool
void FileServerFd_WriteMetadata(FileServerFd *entry, struct iovec *iov, int iovcnt)
Write metadata packet.
Definition: fd.c:309
FileServerFd * FileServer_NotFound
Sentinel value to indicate file not found.
Definition: fd.c:43
FileServerFd * FileServerFd_Open(FileServer *p, const PName *name, TscTime now)
Open file descriptor or increment reference count.
Definition: fd.c:203
void FileServerFd_Clear(FileServer *p)
Close all file descriptors.
Definition: fd.c:245
uint32_t FileServerFd_PrepareMetadata_(FileServer *p, FileServerFd *entry)
Definition: fd.c:259
void FileServerFd_Unref(FileServer *p, FileServerFd *entry)
Decrement file descriptor reference count.
Definition: fd.c:219
bool FileServerFd_GenerateLs(FileServer *p, FileServerFd *entry)
Populate directory listing.
Definition: fd.c:354
struct FileServerFd FileServerFd
File descriptor related information in the file server.
@ FileServerEstimatedMetadataSize
Definition: enum.h:22
@ FileServerMaxLsResult
Definition: enum.h:8
@ TtName
Definition: an.h:20
@ NameMaxLength
Definition: enum.h:10
File descriptor related information in the file server.
Definition: fd.h:21
char lsV[FileServerMaxLsResult]
directory listing value
Definition: fd.h:36
uint8_t metadataV[FileServerEstimatedMetadataSize]
metadata value excluding Name
Definition: fd.h:37
int fd
file descriptor
Definition: fd.h:29
UT_hash_handle hh
fdHt hashtable handle
Definition: fd.h:24
uint16_t prefixL
mount+path TLV-LENGTH
Definition: fd.h:32
struct statx st
statx result
Definition: fd.h:23
uint8_t nameV[NameMaxLength]
mount+path+[32=ls]+version TLV-VALUE
Definition: fd.h:35
uint32_t lsL
directory listing length (UINT32_MAX means invalid)
Definition: fd.h:30
uint64_t version
version number
Definition: fd.h:27
struct cds_list_head queueNode
fdQ node
Definition: fd.h:25
uint64_t lastSeg
last segment number
Definition: fd.h:28
uint8_t meta[16]
MetaInfo (FinalBlockId only)
Definition: fd.h:26
uint16_t refcnt
number of inflight SQEs referencing this entry
Definition: fd.h:31
uint16_t versionedL
mount+path+[32=ls]+version TLV-LENGTH
Definition: fd.h:33
uint8_t metadataL
metadata length excluding Name (0 means invalid)
Definition: fd.h:34
File server.
Definition: server.h:27
Parsed name.
Definition: name.h:139
uint64_t TscTime
TSC clock time point.
Definition: tsc.h:9