User Details
- User Since
- Jan 13 2015, 10:58 PM (596 w, 4 d)
Today
Yesterday
Fri, Jun 19
I guess it does. I don't know UFS, but it does seem "inefficient" to first do
UFS_INODE_SET_FLAG_SHARED(), which locks/unlocks the vnode interlock and
then call ufs_itimes(), which locks the vnode interlock again and calls ufs_itimes_locked().
This looks ok to me, although I'll admit I am not
conversant with UFS semantics, so I'll leave that
to others.
Thu, Jun 18
Made changes as suggested by kib@.
Wed, Jun 17
Changed return value to EBUSY when the nfsd
are running and got rid of the locking around
reading the list head, as suggested by markj@.
Tue, Jun 16
Add vfs_netexport_reset() as suggested by markj@.
Also, add KASSERT()s to check ne_ref > 0.
Mon, Jun 15
Sun, Jun 14
Updated with changes recommended by markj@
and kib@. Mostly removal of unnecessary locking
calls, plus a couple of important typo fixes.
Added vfs_netexport_acquire() as suggested by markj@
and renamed vfs_netexport_free() to vfs_netexport_release(),
since that seemed more consistent.
This looks fine to me and seemed to behave when I
tested with lotsa printf()s.
Ok, so I finally think I remember how this works;-)
Your patch tests out well, but I think it needs something like the following:
- sys/rpc/rpcsec_tls/rpctls_impl.c.yyy 2026-06-14 09:08:45.910463000 -0700
+++ sys/rpc/rpcsec_tls/rpctls_impl.c 2026-06-14 09:01:06.722976000 -0700
@@ -298,8 +298,18 @@ printf("rpctls_connect soref so=%p\n", so);
stat = rpctlscd_connect_2(&arg, &res, rpctls_connect_handle); if (stat == RPC_SUCCESS) *reterr = res.reterr;
- else
+ else {
+ struct ct_data *ct = (struct ct_data *)newclient->cl_private;
+
+printf("clnt at rpctls_rpc_failed so=%p\n", so);
rpctls_rpc_failed(&ups, so);
+ /*
+ * Since rpctls_rpc_failed() will do a soclose() if the
+ * daemon is not running, set ct_tlsstate to avoid doing
+ * a close in clnt_vc_destroy().
+ */
+ ct->ct_tlsstate = RPCTLS_INHANDSHAKE;
+ }
Now that I am testing it, this does not seem to be needed.
(You get to the "else" case if rpc.tlsservd is running on the
server and you use your little tls_trigger.c test against it.)
Once I've put it through some testing, I'll update the patch.
Ok, so now I see what you've done. You are now taking the
soref() when it is inserted in the RB tree instead of when it
is taken out.
Sat, Jun 13
Fix the memset() so that it only zeros out
part of the structure, as spotted by markj@.
I don't see why adding another soref() stops a socket
from being leaked?
Use refcount_init() as suggested by kib@.
Modified patch to use a local static bool instead
of kgss_gssd_cl. I also moved the svc_nl_create()
and svc_reg() function calls in gssd.c to before
the daemon() call, to avoid any race with nfsd
startup.
As suggested by glebius@.
Do you need me to commit it or do you have a
commit bit for src?
Thanks for the comments.
Fri, Jun 12
Mon, Jun 8
Fri, Jun 5
Thu, Jun 4
Wed, Jun 3
Tue, Jun 2
I'll just leave things in their current state.
Thu, May 28
Mon, May 25
Sat, May 23
Fri, May 22
I'll commit it authored by you, since I don't recall
that you are a committer.
Oh, and I'd leave the comment (or something like it)
in the code, so that it is obvious why the cast'ng is done.
If we cast the ids to (uintmax_t) and then use %ju,
it will still work if uid_t/gid_t ever becomes 64bits.
May 21 2026
May 20 2026
May 19 2026
May 17 2026
May 15 2026
May 14 2026
Could you please take another look at this?
kib@ seems to think this is preferred to just
enabling it for all NICs.
May 6 2026
May 5 2026
May 4 2026
Increase the "off" sanity limit and declare ndm_eocookie
as u_int as suggested by markj@.
Add a sanity limit for "off" to avoid an
overflow when calculating "pos".
This ensures a NULL reply for overly
large offsets.
