User Details
- User Since
- May 9 2018, 1:01 AM (211 w, 3 h)
Mon, May 9
Thu, Apr 28
This makes sense to me.
Apr 11 2022
No, in this example of 16k pages and 4k blocks, the first page would contain the first 4 blocks, the second page would contain the next 4 blocks, etc, so mmap'ing the file works as you would expect.
Apr 8 2022
Apr 7 2022
made requested changes.
Apr 6 2022
Feb 28 2022
Feb 24 2022
Feb 23 2022
It would be good to go ahead and resolve the XXX comments that are currently being added by the patch.
I would characterize this change as: redefine "read_bias==0" from the current meaning of "prefer writes" to instead mean "no read-vs-write bias".
This patch looks correct in implementing that new meaning, though it would be nice if it didn't involve essentially duplicating the code of cam_iosched_get_write() in cam_iosched_next_bio().
Feb 22 2022
Feb 10 2022
Feb 8 2022
Jan 10 2022
I agree with kib that there is no need to serialize read requests (that need to choose whether to read from lower or upper) with write requests (that change the target of future reads from lower to upper)... allowing a pending read from the lower layer to complete after a write changes the target of future reads of that sector to be the upper layer is fine. The application must be prepared for the read to return either the old data or the new data in this case because the order of processing of these parallel async operations is not guaranteed.
Dec 3 2021
Yea, I couldn't see any reason for the linker to leave the gap in libcrypto.so's memory layout either, but it doesn't seem like an invalid thing to do either, and it's easy enough to handle it.
update for review comments.
Nov 11 2021
Oct 27 2021
Sep 27 2021
there's one more unsafe use of g_io_request() in UFS, in softdep_synchronize(), but that can be fixed separately from this one.
Sep 24 2021
I'm told that these day using "bool" and true/false is preferred over using "int" and 1/0, but otherwise this is good.
Jul 19 2021
Jun 29 2021
Jun 24 2021
Jun 22 2021
overall I agree with mjg and kirk that it would be simpler and better in the long term for the bufobj to be part of the fs-specific "inode" structure for file systems that need it, rather than having the fs-independent code need to know about multiple flavors of vnodes.
May 28 2021
what is the "issue reported by jhb" that you mention?
May 25 2021
Apr 2 2021
Mar 18 2021
Mar 11 2021
Feb 24 2021
Feb 2 2021
Jan 7 2021
Jan 6 2021
Nov 3 2020
The same issue exists in g_io_speedup() (though that function appears to be unused at the moment).
Oct 5 2020
Sep 29 2020
Sep 22 2020
It might be that brelse/bqrelse should also assert that the flag is cleared, but there I am not that sure.
Sep 21 2020
Would it make sense to put this clearing of B_BARRIER someplace central like in bufdone() rather than in these specific error paths?
If we don't clear this flag in bufdone() then it would be good to assert in bufdone() that the flag is not set, to catch such mistakes earlier.
Sep 5 2020
Sep 1 2020
Jul 27 2020
ahh, right. the test I added for this fails the I/O in such a way (using gnop) that the iodone is actually called in the start path, so it's the same thread that xbusied the pages in that case. you said this problem was reported by other automated testing, how does that test fail I/O such that the iodone is called in a separate thread?
Jul 23 2020
Jul 20 2020
Jul 17 2020
update diff for kib's latest comments.
Jul 15 2020
typo
rename the new function and limit this diff to only fixing vnode_pager_generic_getpages_done().
Jul 14 2020
Jul 8 2020
update diff with markj's suggestions.
Jul 6 2020
updated diff for markj's latest comments.
Jun 26 2020
redo diff as markj suggested.
Yea, I didn't know what the problem having invalid pages on the paging queues would be either.
Jun 24 2020
The intention is that ffs_subr.c should only contain functions that are shared by the ufs kernel module and the libufs userland library. At some point the geom_label kernel module started using ffs_subr.c too even though that is cross-module direct reference, which is problematic when not all of the modules are statically included in the base kernel. Now that I moved the functions which are only needed by the ufs kernel module elsewhere, geom_label's instance of ffs_subr.c no longer references M_UFSMNT, so this change is not necessary.
Jun 18 2020
Jun 16 2020
Gleb asked me to commit this so that git blame will still blame me. :-)
The diff looks fine to me, adding kirk as a reviewer also.
Jun 6 2020
Jun 4 2020
May 25 2020
May 13 2020
really remove putpages wrapper this time.
update to address review comments.
May 12 2020
May 8 2020
update diff to 360823
May 2 2020
May 1 2020
Are there any more comments on this diff?
Apr 19 2020
generally, having the function that submits an async request return a pointer a request structure that is freed when the request completes is a bad idea, since the caller will have handle the request structure having already been freed, and thus having a pointer to it isn't useful. as you guys discussed, using the normal timeout path for polled commands (and fixing the normal timeout path to not be racy) would be good. a fun corner case will be when the use of the abort command in the timeout path itself times out.