[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 04/11] 9p: darwin: Handle struct dirent differences
From: |
Michael Roitzsch |
Subject: |
Re: [PATCH v2 04/11] 9p: darwin: Handle struct dirent differences |
Date: |
Wed, 24 Nov 2021 16:45:30 +0100 |
Hi,
> Are you sure d_seekoff doesn't work on macOS?
I just tried on an APFS volume on macOS Monterey and d_seekoff is always 0,
while telldir() outputs useful values.
> Because using telldir() instead
> is not the same thing. Accessing d_*off is just POD access, whereas telldir()
> is a syscall.
I am not sure this is the case. I have tried a quick test program:
#include <dirent.h>
int main(void)
{
int result = 0;
DIR *dir = opendir(".");
while (readdir(dir)) {
result += telldir(dir);
}
closedir(dir);
return result;
}
I ran it with 'sudo dtruss ./test', which should give me a trace of the system
calls. The relevant portion is:
open_nocancel(".\0", 0x1100004, 0x0) = 3 0
sysctlbyname(kern.secure_kernel, 0x12, 0x7FF7BE49810C, 0x7FF7BE498110, 0x0)
= 0 0
fstatfs64(0x3, 0x7FF7BE498110, 0x0) = 0 0
getdirentries64(0x3, 0x7FF4A5808A00, 0x2000) = 1472 0
close_nocancel(0x3) = 0 0
The directory has more than 30 entries, but the loop does not appear to cause
individual system calls. Instead, readdir() and telldir() appear to be library
functions powered by this getdirentries64 syscall.
This is on Monterey. Unfortunately I cannot test if older versions of macOS are
different.
Michael
- [PATCH v2 00/11] 9p: Add support for darwin, Will Cohen, 2021/11/21
- [PATCH v2 06/11] 9p: darwin: Compatibility defn for XATTR_SIZE_MAX, Will Cohen, 2021/11/21
- [PATCH v2 07/11] 9p: darwin: *xattr_nofollow implementations, Will Cohen, 2021/11/21
- [PATCH v2 08/11] 9p: darwin: Compatibility for f/l*xattr, Will Cohen, 2021/11/21
- [PATCH v2 10/11] 9p: darwin: Implement compatibility for mknodat, Will Cohen, 2021/11/21
- [PATCH v2 11/11] 9p: darwin: meson: Allow VirtFS on Darwin, Will Cohen, 2021/11/21
- [PATCH v2 05/11] 9p: darwin: Ignore O_{NOATIME, DIRECT}, Will Cohen, 2021/11/21