- Jul 28, 2013
-
-
Glauber Costa authored
Some of our files include headers inside an "extern C" declaration. The problem with that eventually we will have definitions with C linkage - since they are inside extern "C" - being included in places where __cplusplus is defined. I specifically worked around this int the sx_xlock implementation, but it is starting to create bigger problems. Fix it by making all headers usable from whichever place by themselves, instead of relying in extern inclusions in the cpp files
-
Christoph Hellwig authored
Mostly to get the X bits on directories right for lookups, as well as checks for hard readonly files.
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
It may not be available yet. Change the mode checks to use zp->z_mode, and remove the devvp checks as we do not support device nodes outside of devfs.
-
Christoph Hellwig authored
We might not have a vnode assigned to a znode yet when doing access checks from lookup.
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
- Jul 27, 2013
-
-
Glauber Costa authored
Because this is arch specific, I am adding it to a newly created file in arch/x64. I am making it available to BSD through netport for the lack of a better place
-
Christoph Hellwig authored
-
Christoph Hellwig authored
ZFS expects vdev providers to work asynchronously and waits in higher level code when needed.
-
Glauber Costa authored
Dear BSD developers: a long is a long, not an int. Because of that define, the struct linux uses for its ifreq ioctl will be of a different size (it is fine in 32-bit machines of course), causing our network requests to get borked.
-
- Jul 17, 2013
-
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
This operation is very different from FreeBSD and Solaris because our VFS uses create just for the actual entry creation and not for opening the file, similar to how Linux splits the operation. A lot of code that is already handled in vnop_open or the VFS thus can go away.
-
Christoph Hellwig authored
This is required for write operations. For now we don't actually replay it yet, as that requires a lot more hairy OS-specific code.
-
Christoph Hellwig authored
-
Christoph Hellwig authored
This one will only show up in non-debug builds for some reason.
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
- Jul 15, 2013
-
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
Christoph Hellwig authored
-
- Jul 12, 2013
-
-
Christoph Hellwig authored
Now that we have a reliable number of CPUs indicator the implementation is trivial.
-
- Jul 11, 2013
-
-
Nadav Har'El authored
This patch fixes two bugs in so_wake_poll(), which caused us missing some poll wakeups, resulting in poll()s that never wake up. This can be seen as a hang in the following simple loop exercising memcached: (while :; do; echo "stats" | nc 192.168.122.100 11211; done) The two fixes are: 1. If so_wake_poll() decides *not* to call poll_wake() - because it sees zero data on this packet - it mustn't reset the SB_SEL flag on the socket, or we will ignore the next event even when it does have data. 2. To see if the socket is readable, we need to call soreadable(), not soreadabledata() - the former adds the connection close event to the readability. See sopoll_generic(), which also sets a readability event in that case.
-
Glauber Costa authored
verbatim header files import, plus the code in build.mk to find them
-
- Jul 09, 2013
-
-
Nadav Har'El authored
wakeup() and wakeup_one() dropped the lock before waking the thread(s). But if a thread timed out at the same time we are planning to wake it, and if the thread imediately exited, our attempt to wake() it could crash. Therefore wakeup() needs to continue holding the lock until after the wake(). When msleep() times out, before it returns it reacquires the lock, ensuring it cannot return before a concurrent wakeup() does its wakes. Note that in the ordinary wakeup() case (not racing with a timeout), we are *not* negatively affected by holding the lock while wake()ing because the waking msleep() does not try to reacquire the lock in the non-timeout case. Additionally, we use wake_with() instead of separate set and wake instructions. Without wake_with() we have the (exceedingly rare) possibility that merely setting _awake=true causes msleep() to return, and its caller then decides to exit the thread, the wake() right after the _awake=true would crash.
-