Page MenuHomeFreeBSD

rlibby (Ryan Libby)
User

Projects

User Details

User Since
Nov 12 2015, 8:14 PM (316 w, 5 d)

Recent Activity

Oct 21 2021

rlibby accepted D32589: dmar: Don't try to reserve PCI regions for non-existing devices.

A NULL check seems like a clear improvement over a crash.

Oct 21 2021, 5:04 PM

Oct 13 2021

rlibby accepted D32472: bitset: Reimplement BIT_FOREACH_IS(SET|CLR).
Oct 13 2021, 4:43 PM
rlibby accepted D32472: bitset: Reimplement BIT_FOREACH_IS(SET|CLR).
Oct 13 2021, 1:41 AM
rlibby accepted D32472: bitset: Reimplement BIT_FOREACH_IS(SET|CLR).
Oct 13 2021, 1:00 AM

Sep 23 2021

rlibby added inline comments to D32028: bitset(9): Introduce BIT_FOREACH_SET and BIT_FOREACH_CLR.
Sep 23 2021, 1:23 AM

Sep 21 2021

rlibby added inline comments to D32028: bitset(9): Introduce BIT_FOREACH_SET and BIT_FOREACH_CLR.
Sep 21 2021, 6:08 PM
rlibby added inline comments to D32029: Convert consumers to use the CPU_FOREACH_SET() macro.
Sep 21 2021, 5:36 PM
rlibby added inline comments to D32028: bitset(9): Introduce BIT_FOREACH_SET and BIT_FOREACH_CLR.
Sep 21 2021, 5:23 PM

Jul 7 2021

rlibby added inline comments to D31039: Panic on ufsdirhash_findfree: free mismatch.
Jul 7 2021, 4:50 PM

Jul 3 2021

rlibby added a comment to D28762: ofed: quiet gcc -Wint-in-bool-context.

Seems like this is needed to build stable/13 with GCC. Are you going to MFC this? If not I can cherry-pick it for you.

Jul 3 2021, 1:44 AM
rlibby committed R10:16d43e560229: shared shadow vm object invalidation regression test (authored by rlibby).
shared shadow vm object invalidation regression test
Jul 3 2021, 12:29 AM
rlibby committed R10:4544f2ea7dd9: ddb: reliably fail with ambiguous commands (authored by rlibby).
ddb: reliably fail with ambiguous commands
Jul 3 2021, 12:29 AM
rlibby committed R10:65d3d8496536: ofed: quiet gcc -Wint-in-bool-context (authored by rlibby).
ofed: quiet gcc -Wint-in-bool-context
Jul 3 2021, 12:29 AM

Apr 15 2021

rlibby abandoned D29542: sysctlmemlock: add a knob to disable and make interruptible.

Will work on a providing a better semaphore first.

Apr 15 2021, 4:58 PM

Apr 7 2021

rlibby committed R10:13d4f96130b6: shared shadow vm object invalidation regression test (authored by rlibby).
shared shadow vm object invalidation regression test
Apr 7 2021, 7:43 PM

Apr 1 2021

rlibby added a comment to D29542: sysctlmemlock: add a knob to disable and make interruptible.
In D29542#662307, @mjg wrote:

I disagree with the patch.

The current mechanism is crap and should probably be retired, anyone interested in ramping up kernel memory use has plenty of other ways to do it.

Apr 1 2021, 11:19 PM
rlibby requested review of D29542: sysctlmemlock: add a knob to disable and make interruptible.
Apr 1 2021, 10:28 PM

Mar 23 2021

rlibby accepted D29391: LinuxKPI: remove < 5.0 version support.

LGTM, and I checked $work's tree for other references.

Mar 23 2021, 5:33 PM

Mar 22 2021

rlibby accepted D29076: Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double.
Mar 22 2021, 2:54 PM

Mar 14 2021

rlibby committed R10:3e5e9939cda3: ddb: enable the use of ^C and ^S/^Q (authored by rlibby).
ddb: enable the use of ^C and ^S/^Q
Mar 14 2021, 11:21 PM
rlibby committed R10:588ce1a3ac8d: kobj: avoid gcc -Wcast-function-type (authored by rlibby).
kobj: avoid gcc -Wcast-function-type
Mar 14 2021, 11:21 PM
rlibby closed D28676: ddb: enable the use of ^C and ^S/^Q.
Mar 14 2021, 11:20 PM
rlibby closed D28769: kobj: avoid gcc -Wcast-function-type.
Mar 14 2021, 11:20 PM
rlibby added inline comments to D29076: Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double.
Mar 14 2021, 8:25 PM

Mar 11 2021

rlibby committed R9:9c5b7a9157bc: Update PGP key for rlibby@ (authored by rlibby).
Update PGP key for rlibby@
Mar 11 2021, 8:22 AM

Mar 5 2021

rlibby requested changes to D29076: Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double.

Change looks fine once the i386 hack is restored.

Mar 5 2021, 11:10 PM
rlibby added inline comments to D29076: Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double.
Mar 5 2021, 4:34 PM
rlibby added inline comments to D29076: Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double.
Mar 5 2021, 4:05 PM

Feb 25 2021

rlibby closed D28926: Close races in vm object chain traversal for unlock.
Feb 25 2021, 8:30 PM
rlibby committed R10:d7671ad8d6eb: Close races in vm object chain traversal for unlock (authored by rlibby).
Close races in vm object chain traversal for unlock
Feb 25 2021, 8:30 PM
rlibby added a comment to D28926: Close races in vm object chain traversal for unlock.

This can be done without introducing another object pointer (nobj) by resetting lobj and following the pattern elsewhere, but I found the approach with nobj to be more readable.

Feb 25 2021, 6:38 PM
rlibby requested review of D28926: Close races in vm object chain traversal for unlock.
Feb 25 2021, 6:33 PM
rlibby closed D28762: ofed: quiet gcc -Wint-in-bool-context.
Feb 25 2021, 12:01 AM
rlibby committed R10:bf667f282a7b: ofed: quiet gcc -Wint-in-bool-context (authored by rlibby).
ofed: quiet gcc -Wint-in-bool-context
Feb 25 2021, 12:01 AM
rlibby closed D28725: ddb: just move cursor when the lexer backs up.
Feb 25 2021, 12:00 AM
rlibby committed R10:d8404b7ec36d: ddb: just move cursor when the lexer backs up (authored by rlibby).
ddb: just move cursor when the lexer backs up
Feb 25 2021, 12:00 AM
rlibby closed D28659: ddb: reliably fail with ambiguous commands.
Feb 25 2021, 12:00 AM
rlibby committed R10:d85c9cef1380: ddb: reliably fail with ambiguous commands (authored by rlibby).
ddb: reliably fail with ambiguous commands
Feb 25 2021, 12:00 AM
rlibby closed D28563: This KASSERT is overzealous because of the following race condition:.
Feb 25 2021, 12:00 AM
rlibby committed R10:14b5a3c7d5c0: vm pqbatch: move unmanaged page assert under pagequeue lock (authored by mlaier).
vm pqbatch: move unmanaged page assert under pagequeue lock
Feb 25 2021, 12:00 AM

Feb 24 2021

rlibby accepted D28909: atomic: add atomic_interrupt_fence().
Feb 24 2021, 8:49 PM
rlibby accepted D28909: atomic: add atomic_interrupt_fence().
Feb 24 2021, 8:31 PM
rlibby accepted D28901: buf: Fix the dirtybufthresh check.

I guess this case is intended for when a single-ish writer is outpacing the buf daemon?

Feb 24 2021, 7:01 AM
rlibby accepted D28821: rmlock: Add a missing compiler membar to the rlock slow path.
Feb 24 2021, 1:38 AM

Feb 21 2021

rlibby added inline comments to D28821: rmlock: Add a missing compiler membar to the rlock slow path.
Feb 21 2021, 7:39 PM
rlibby added a comment to D28821: rmlock: Add a missing compiler membar to the rlock slow path.
In D28821#645324, @mjg wrote:

While the patch at hand may indeed be good enough for a quick fixup, trying to review the entire ordeal suggests the mechanism is very error prone (at least to my taste). For example rm_tracker_remove may still be executing against IPIs and it contains multiple unordered stores.

I think that is ok, the ordering doesn't matter with respect to the IPI, which only does forward traversal and does not update the queue.

Feb 21 2021, 2:43 AM
rlibby accepted D28821: rmlock: Add a missing compiler membar to the rlock slow path.

I have a couple questions, but the change itself looks fine.

Feb 21 2021, 2:32 AM

Feb 20 2021

rlibby added a comment to D28769: kobj: avoid gcc -Wcast-function-type.
In D28769#645024, @jhb wrote:
In D28769#644259, @jhb wrote:

The only thing that is kind of useful about the current declaration is that it documents that all kobj methods are expected to return int (and specifically kobj returns a default value if no method is found).

Hmm, I may be misunderstanding something here, but I think I see methods where that isn't true, that return void or pointers? For example, sys/kern/bus_if.m, child_deleted and get_dma_tag, then sys/dev/pci/pci.c, pci_child_deleted and pci_get_dma_tag (void and bus_dma_tag_t).

Yes, those functions do abuse the interface a bit, and it might be ok for the non-void case as long as the function has an explicit default method, but for methods without a default, kobj_error_method() is what gets used. I guess though that the generated BUS_CHILD_DELETED() does actually return void though, so perhaps it isn't really inherent to kobj aside from the default default.

Feb 20 2021, 12:05 AM

Feb 18 2021

rlibby added a comment to D28769: kobj: avoid gcc -Wcast-function-type.
In D28769#644259, @jhb wrote:

The only thing that is kind of useful about the current declaration is that it documents that all kobj methods are expected to return int (and specifically kobj returns a default value if no method is found).

Feb 18 2021, 6:55 PM
rlibby abandoned D28768: zfs: Remove unused abd_alloc_scatter_offset_chunkcnt.
In D28768#644214, @mm wrote:

I have merged lastest OpenZFS to main including the new "compatibility" property, you can close this now. Thanks for getting the change upstream!

Feb 18 2021, 5:10 PM
rlibby requested review of D28769: kobj: avoid gcc -Wcast-function-type.
Feb 18 2021, 8:18 AM
rlibby requested review of D28768: zfs: Remove unused abd_alloc_scatter_offset_chunkcnt.
Feb 18 2021, 7:38 AM
rlibby abandoned D28761: tcp_lro_log: mark __unused to avoid unused function warning.

Dropping, alternate solution committed as 0a4f851074a3ca74cd4859c20e7d9807b2aeca65.

Feb 18 2021, 7:05 AM
rlibby added a comment to D28761: tcp_lro_log: mark __unused to avoid unused function warning.
In D28761#644041, @rrs wrote:

question

If we put the wrap
#ifdef TCPHPTS

#endif

Around the function do we still need __unused for gcc?

(it won't be unused of course if TCPHPTS is defined)

Feb 18 2021, 6:56 AM
rlibby added a comment to D28760: OpenZFS: #if 0 unused abd_alloc_scatter_offset_chunkcnt()..

@freqlabs, @mm, sure thing.

Feb 18 2021, 12:47 AM

Feb 17 2021

rlibby requested review of D28762: ofed: quiet gcc -Wint-in-bool-context.
Feb 17 2021, 11:33 PM
rlibby requested review of D28761: tcp_lro_log: mark __unused to avoid unused function warning.
Feb 17 2021, 11:11 PM
rlibby accepted D28760: OpenZFS: #if 0 unused abd_alloc_scatter_offset_chunkcnt()..

I'm obviously not the maintainer but:

Feb 17 2021, 11:03 PM
rlibby added a comment to D28599: fwohci: Cast bitfield to uint32_t before passing it to roundup2()..

Patch itself looks fine.

Feb 17 2021, 9:22 PM
rlibby updated the diff for D28676: ddb: enable the use of ^C and ^S/^Q.

markj feedback: man style

Feb 17 2021, 7:09 PM
rlibby added inline comments to D28676: ddb: enable the use of ^C and ^S/^Q.
Feb 17 2021, 6:54 PM
rlibby updated the diff for D28725: ddb: just move cursor when the lexer backs up.

markj feedback: ANSI-fy while here

Feb 17 2021, 4:28 PM
rlibby requested review of D28725: ddb: just move cursor when the lexer backs up.
Feb 17 2021, 6:56 AM
rlibby updated the summary of D28676: ddb: enable the use of ^C and ^S/^Q.
Feb 17 2021, 5:36 AM
rlibby updated the diff for D28676: ddb: enable the use of ^C and ^S/^Q.

markj feedback:

  • Rename the sysctl and make it tunable
  • output a warning when input is dropped
  • man page blurb
Feb 17 2021, 5:34 AM

Feb 16 2021

rlibby added a comment to D28676: ddb: enable the use of ^C and ^S/^Q.

So, yeah, I don't want to break this kind of thing. On the other hand I want it to be possible to break out of a situation where a tool has executed some kind of command that would take forever to complete and could result in loss of the debugger. What's in the log you linked should fit in the 512 byte buffer, but the point stands if someone had a bigger script like that. One possibility could be just to default to the prioritize_control_input=0 behavior, so the break ability is only lost for large scripts. Another could be just a big bump in the buffer size (2k? 4k?). Thoughts?

So ddb does support a scripting facility, whereby you can run something like

db> script test= show pcpu; ps
db> run test
-- "show pcpu" output, "ps" output --

So there is at least a workaround for this kind of problem, though there you are limited by TOK_STRING_SIZE, I believe.

Feb 16 2021, 9:27 PM
rlibby added a comment to D28676: ddb: enable the use of ^C and ^S/^Q.

So if one were to programatically send a sequence of commands, separated by newlines, to ddb, does this change mean that after the first command begins executing, the echoed characters from subsequent commands will be interleaved with output from the first command?

Feb 16 2021, 6:43 PM

Feb 15 2021

rlibby added a comment to D28676: ddb: enable the use of ^C and ^S/^Q.
In D28676#641723, @imp wrote:

Couple of comments but I don't know a lot about the character pipeline so I'm not sure how much good they will do.

Feb 15 2021, 8:10 AM
rlibby updated the diff for D28676: ddb: enable the use of ^C and ^S/^Q.

imp feedback: provide a chicken switch

Feb 15 2021, 7:28 AM
rlibby added inline comments to D28676: ddb: enable the use of ^C and ^S/^Q.
Feb 15 2021, 2:29 AM
rlibby requested review of D28676: ddb: enable the use of ^C and ^S/^Q.
Feb 15 2021, 2:21 AM

Feb 14 2021

rlibby requested review of D28659: ddb: reliably fail with ambiguous commands.
Feb 14 2021, 12:48 AM

Feb 10 2021

rlibby accepted D28563: This KASSERT is overzealous because of the following race condition:.
Feb 10 2021, 8:02 PM
rlibby accepted D28563: This KASSERT is overzealous because of the following race condition:.
Feb 10 2021, 2:00 AM

Jan 28 2021

rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..

To be clear, everyone is ok with this being committed for now and improvements being worked on and tested for later?

Jan 28 2021, 7:35 PM

Jan 27 2021

rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..

...

One possibility to unify the two tries might be to augment each node with a bitmap, with one bit per slot, and maintain the invariant that a bit is set iff the subtree rooted at that slot contains at least one dirty buf, or the slot points directly to a dirty buf. Then we can still quickly look up the dirty buf with smallest LBN that's larger than a given LBN. That's still not ideal for implementing lookups of clean bufs since all bufs in a subtree may be dirty. We could use a second bitmap to handle that case or maybe there's some more clever way.

Right, if you did it with two bits or two bitmaps, you can track each of dirty and clean per subtree that way, but either way you still have to do the log(n) scan.

Which scan do you mean exactly?

If I understand the pctrie bitmap proposal correctly:

Any walk of just the dirty or clean list becomes O(log(n + m) + n) where n is the number of entries in the list of interest and n + m is the sum of the number of entries from both lists, or in other words, finding the next element becomes O(log(n + m)) instead of O(1). The situation where you'd notice this would be when m >> n. In code, this is git grep "TAILQ_FOREACH.*bo_\(dirty\|clean\)".

Oh, I was envisioning keeping the separate lists and just merging the pctries. The bits let you quickly find the next dirty or clean buf after a given LBN, so buf_vlist_add() would stay more or less the same, and you'd keep the lists for iterating over successive bufs.

Jan 27 2021, 11:03 PM
rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..
In D28375#634847, @cem wrote:

I think I mentioned this talking to Bryan but I’m not sure we actually need separate clean and dirty buf tries— we might be better off with a single trie, and two linked lists for enumeration. That’s a big refactor and there may be reasons it isn’t feasible.

Yeah, we need the clean/dirty tailq linkage, but if we could get away with just one pctrie that would be great. That would also get rid of the free/alloc entirely during reassignbuf(). From grepping, only vfs_subr.c actually accesses bv_root, so that's encouraging, and struct bufv doesn't look too bad either. It's looking feasible to me...

I think we use the tries to enable fast insertion into the sorted lists?

Ah, yeah, I see. (And we actually use the order?)

There are some operations on ranges of bufs which rely on this. v_inval_buf_range_locked() for instance. They can drop the bufobj lock between iterations so it doesn't seem very easy to maintain a cursor for the pctrie.

Jan 27 2021, 10:44 PM
rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..

...

One possibility to unify the two tries might be to augment each node with a bitmap, with one bit per slot, and maintain the invariant that a bit is set iff the subtree rooted at that slot contains at least one dirty buf, or the slot points directly to a dirty buf. Then we can still quickly look up the dirty buf with smallest LBN that's larger than a given LBN. That's still not ideal for implementing lookups of clean bufs since all bufs in a subtree may be dirty. We could use a second bitmap to handle that case or maybe there's some more clever way.

Right, if you did it with two bits or two bitmaps, you can track each of dirty and clean per subtree that way, but either way you still have to do the log(n) scan.

Which scan do you mean exactly?

Jan 27 2021, 10:22 PM
rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..
In D28375#634847, @cem wrote:

I think I mentioned this talking to Bryan but I’m not sure we actually need separate clean and dirty buf tries— we might be better off with a single trie, and two linked lists for enumeration. That’s a big refactor and there may be reasons it isn’t feasible.

Yeah, we need the clean/dirty tailq linkage, but if we could get away with just one pctrie that would be great. That would also get rid of the free/alloc entirely during reassignbuf(). From grepping, only vfs_subr.c actually accesses bv_root, so that's encouraging, and struct bufv doesn't look too bad either. It's looking feasible to me...

I think we use the tries to enable fast insertion into the sorted lists?

Jan 27 2021, 9:49 PM
rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..
In D28375#634847, @cem wrote:

I think I mentioned this talking to Bryan but I’m not sure we actually need separate clean and dirty buf tries— we might be better off with a single trie, and two linked lists for enumeration. That’s a big refactor and there may be reasons it isn’t feasible.

Jan 27 2021, 8:51 PM
rlibby added a comment to D28375: Fix getblk() with GB_NOCREAT returning false-negatives..

This approach seems safe but obviously makes the lookup twice as slow when the buffer doesn't exist. I'm not sure we could do better easily...

Jan 27 2021, 8:11 PM

Jan 20 2021

rlibby closed D28043: pms: handle maximum size IO with any alignment.
Jan 20 2021, 10:01 PM
rlibby committed R10:e54a1d575180: pms: handle maximum size IO with any alignment (authored by rlibby).
pms: handle maximum size IO with any alignment
Jan 20 2021, 10:01 PM
rlibby closed D27994: pms: quiet -Wunused-variable.
Jan 20 2021, 10:01 PM
rlibby committed R10:84ab9074d4c1: pms: quiet -Wunused-variable (authored by rlibby).
pms: quiet -Wunused-variable
Jan 20 2021, 10:01 PM

Jan 12 2021

rlibby updated the diff for D28043: pms: handle maximum size IO with any alignment.

imp feedback: keep the limit

Jan 12 2021, 8:38 AM

Jan 11 2021

rlibby committed R10:16079c7233be: hid: quiet -Wswitch (authored by rlibby).
hid: quiet -Wswitch
Jan 11 2021, 5:56 AM
rlibby closed D28082: hid: quiet -Wswitch.
Jan 11 2021, 5:56 AM
rlibby closed D28081: pf: quiet -Wredundant-decls for pf_get_ruleset_number.
Jan 11 2021, 5:55 AM
rlibby committed R10:c86fa3b8d72f: pf: quiet -Wredundant-decls for pf_get_ruleset_number (authored by rlibby).
pf: quiet -Wredundant-decls for pf_get_ruleset_number
Jan 11 2021, 5:55 AM
rlibby closed D28036: dtrace tests: fix prototypes for gcc build.
Jan 11 2021, 5:55 AM
rlibby committed R10:c14e17a49cdd: dtrace tests: fix prototypes for gcc build (authored by rlibby).
dtrace tests: fix prototypes for gcc build
Jan 11 2021, 5:55 AM

Jan 10 2021

rlibby updated the diff for D28082: hid: quiet -Wswitch.

Feedback: use default instead of listing cases

Jan 10 2021, 7:58 PM
rlibby added a comment to D28082: hid: quiet -Wswitch.

The advantage of listing cases instead of using default would be that if another enum value ever gets added, then the compiler's warning about unhandled cases won't have been suppressed. But I agree it's uglier. I'll change it to default.

Jan 10 2021, 7:33 PM
rlibby requested review of D28082: hid: quiet -Wswitch.
Jan 10 2021, 7:59 AM
rlibby requested review of D28081: pf: quiet -Wredundant-decls for pf_get_ruleset_number.
Jan 10 2021, 7:55 AM

Jan 8 2021

rlibby added inline comments to D28043: pms: handle maximum size IO with any alignment.
Jan 8 2021, 7:55 PM
rlibby requested review of D28043: pms: handle maximum size IO with any alignment.
Jan 8 2021, 7:31 PM
rlibby requested review of D28036: dtrace tests: fix prototypes for gcc build.
Jan 8 2021, 7:33 AM

Jan 6 2021

rlibby requested review of D27994: pms: quiet -Wunused-variable.
Jan 6 2021, 1:14 AM