Page MenuHomeFreeBSD

rmacklem (Rick Macklem)
User

Projects

User Details

User Since
Jan 13 2015, 10:58 PM (247 w, 5 d)

Recent Activity

Today

rmacklem added a comment to D21883: Fix interface between nfsclient and vnode pager..

Thanks for the comment.

Sun, Oct 13, 3:45 PM

Yesterday

rmacklem added a comment to D21883: Fix interface between nfsclient and vnode pager..

The new revision makes changes in the vm part that I don't understand, so I am afraid I can't
review them.

Sat, Oct 12, 3:47 PM

Sun, Oct 6

rmacklem added a comment to D21883: Fix interface between nfsclient and vnode pager..

Added a reply to the inline comment.

Sun, Oct 6, 3:33 PM
rmacklem committed rS353133: Do a commit for the output file when flushing for Copy..
Do a commit for the output file when flushing for Copy.
Sun, Oct 6, 3:33 AM
rmacklem committed rS353132: Update the comments related to flushing in Seek and Copy..
Update the comments related to flushing in Seek and Copy.
Sun, Oct 6, 3:25 AM

Sat, Oct 5

rmacklem added a comment to D21883: Fix interface between nfsclient and vnode pager..

Other than the one inline comment, it looks good to me. However, I don't know enough about the locking/vm stuff
to say if nfs_lock() is correct?
Delaying doing the vnode_pager_setsize() until a lock operation on the vnode sounds reasonable to me.

Sat, Oct 5, 10:13 PM

Fri, Oct 4

rmacklem committed rS353098: Fix the comment in the NFSv4.2 client copy_file_range..
Fix the comment in the NFSv4.2 client copy_file_range.
Fri, Oct 4, 5:02 AM
rmacklem committed rS353097: Flush writes for both in and out files before NFSv4.2 Copy in client..
Flush writes for both in and out files before NFSv4.2 Copy in client.
Fri, Oct 4, 4:57 AM
rmacklem committed rS353090: Flush writes in the NFSv4.2 client before doing a Seek operation..
Flush writes in the NFSv4.2 client before doing a Seek operation.
Fri, Oct 4, 2:04 AM

Thu, Oct 3

rmacklem committed rS353029: Add vfs.nfsd.linuxseekdata so that the NFSv4.2 server can be Linux compatible..
Add vfs.nfsd.linuxseekdata so that the NFSv4.2 server can be Linux compatible.
Thu, Oct 3, 2:59 AM

Mon, Sep 30

rmacklem updated the diff for D21814: factor out the code that checks to see if vnode_pager_setsize() can be called with the NFS node lock held.

This version of the patch replaces nfscl_checksetsize() with vnode_pager_setsize_nonblock().
The latter is a macro which just calls vnode_pager_setsize_mightsleep() with can_sleep == false.

Mon, Sep 30, 2:12 AM

Sat, Sep 28

rmacklem added a comment to D21814: factor out the code that checks to see if vnode_pager_setsize() can be called with the NFS node lock held.

As an alternative to creating a function called nfscl_checksetsize(), what about adding a "can_sleep"
flag argument to vnode_pager_setsize().
If can_sleep is "false", then it would return EWOULDBLOCK for the "shrinking" case.
(If can_sleep is "true" it would retain current behaviour.) Yes, the function would no
longer be void, but would return (0) except for this case.

Sat, Sep 28, 1:42 AM

Fri, Sep 27

rmacklem committed rS352825: Allow the NFSv4.2 Copy operation to do a synchronous copy when.
Allow the NFSv4.2 Copy operation to do a synchronous copy when
Fri, Sep 27, 10:19 PM
rmacklem committed rS352817: Merge in an up to date kernel from head..
Merge in an up to date kernel from head.
Fri, Sep 27, 8:10 PM
rmacklem created D21814: factor out the code that checks to see if vnode_pager_setsize() can be called with the NFS node lock held.
Fri, Sep 27, 1:40 AM

Thu, Sep 26

rmacklem committed rS352736: Replace all mtx_assert() calls for n_mtx and ncl_iod_mutex with macros..
Replace all mtx_assert() calls for n_mtx and ncl_iod_mutex with macros.
Thu, Sep 26, 2:55 AM
rmacklem added a comment to D21762: Add a sleep lock to the NFS node to protect n_size.

Unfortunately testing found a deadlock problem.

  • One of the iod threads is sleeping on "vmopar", so it is in vnode_pager_setsize() when the size is being reduced.
  • The rest of the iod threads are waiting for the NFS node lock.
Thu, Sep 26, 2:01 AM

Wed, Sep 25

rmacklem updated the diff for D21762: Add a sleep lock to the NFS node to protect n_size.

This version of the patch changes the n_mtx lock to an sx lock (n_sx) and
the ncl_iod_mutex to ncl_iod_sx. The former is done so that it can safely be
locked while calling vnode_pager_setsize().
The latter is changed to an sx lock since it is held when n_sx is acquired.
All the msleep()s are changed to sx_sleep() calls.

Wed, Sep 25, 1:40 AM

Tue, Sep 24

rmacklem committed rS352664: Replace all mtx_lock()/mtx_unlock() on the iod lock with macros..
Replace all mtx_lock()/mtx_unlock() on the iod lock with macros.
Tue, Sep 24, 11:38 PM
rmacklem committed rS352636: Replace all mtx_lock()/mtx_unlock() on n_mtx with the macros..
Replace all mtx_lock()/mtx_unlock() on n_mtx with the macros.
Tue, Sep 24, 1:59 AM

Mon, Sep 23

rmacklem added a comment to D21762: Add a sleep lock to the NFS node to protect n_size.

So, do you think that just replacing n_mtx with n_solock makes more sense?
(I'll admit I was thinking it was a lot of editing, but so what.)

Mon, Sep 23, 4:10 PM
rmacklem created D21762: Add a sleep lock to the NFS node to protect n_size.
Mon, Sep 23, 2:39 AM

Sun, Sep 15

rmacklem committed rS352343: Update the nfsstats structure..
Update the nfsstats structure.
Sun, Sep 15, 2:17 AM

Sep 13 2019

rmacklem committed rS352270: Add support for the Extended Attribute Access bits..
Add support for the Extended Attribute Access bits.
Sep 13 2019, 1:07 AM
rmacklem committed rS352269: Add support for xattr_support attribute to the NFSv4.2 server..
Add support for xattr_support attribute to the NFSv4.2 server.
Sep 13 2019, 1:04 AM

Sep 9 2019

rmacklem committed rS352052: Make vop_stdioctl() a global function so that nfs_ioctl() can call it..
Make vop_stdioctl() a global function so that nfs_ioctl() can call it.
Sep 9 2019, 1:05 AM
rmacklem committed rS352051: Merge in an up to date head kernel..
Merge in an up to date head kernel.
Sep 9 2019, 12:48 AM

Sep 8 2019

rmacklem committed rS352049: Move vfs.nfsd.maxcopyrange to vfs.nfs.maxcopyrange so client can use it as well..
Move vfs.nfsd.maxcopyrange to vfs.nfs.maxcopyrange so client can use it as well.
Sep 8 2019, 9:43 PM

Sep 7 2019

rmacklem committed rS352026: Make an obvious simplification of an "if" expression..
Make an obvious simplification of an "if" expression.
Sep 7 2019, 11:39 PM
rmacklem committed rS352024: Increase the maximum request/response size for NFSv4.2..
Increase the maximum request/response size for NFSv4.2.
Sep 7 2019, 9:27 PM
rmacklem committed rS351968: Add support for the List Extended Attributes RPC..
Add support for the List Extended Attributes RPC.
Sep 7 2019, 4:10 AM

Sep 6 2019

rmacklem committed rS351922: Add support for the NFSv4.2 Remove Extended Attribute operation..
Add support for the NFSv4.2 Remove Extended Attribute operation.
Sep 6 2019, 2:52 AM

Sep 5 2019

rmacklem committed rS351901: Delete the unused "nd" argument for nfsrv_proxyds()..
Delete the unused "nd" argument for nfsrv_proxyds().
Sep 5 2019, 10:25 PM

Sep 4 2019

rmacklem committed rS351834: Delete the unused "nd" argument for nfsrv_checkdsattr()..
Delete the unused "nd" argument for nfsrv_checkdsattr().
Sep 4 2019, 10:37 PM
rmacklem committed rS351833: Factor out the code that creates an iovec from nfsvno_write()..
Factor out the code that creates an iovec from nfsvno_write().
Sep 4 2019, 9:54 PM
rmacklem committed rS351832: Move vn_lock() down, so that it doesn't return ENOTTY with the vnode locked..
Move vn_lock() down, so that it doesn't return ENOTTY with the vnode locked.
Sep 4 2019, 9:44 PM
rmacklem committed rS351829: MFC: r350395.
MFC: r350395
Sep 4 2019, 8:14 PM

Sep 2 2019

rmacklem committed rS351683: Set the Get extended attribute big reply and Set extended attribute big request..
Set the Get extended attribute big reply and Set extended attribute big request.
Sep 2 2019, 2:52 AM
rmacklem committed rS351682: Factor the code that creates the mbuf chain from nfsvno_read()..
Factor the code that creates the mbuf chain from nfsvno_read().
Sep 2 2019, 2:41 AM

Sep 1 2019

rmacklem committed rS351652: Add the Set Extended attribute operation..
Add the Set Extended attribute operation.
Sep 1 2019, 4:58 AM

Aug 31 2019

rmacklem committed rS351646: Add support for the Get extended attribute operation..
Add support for the Get extended attribute operation.
Aug 31 2019, 4:10 PM
rmacklem committed rS351645: Update the NFS common files for the optional Extended attribute support.
Update the NFS common files for the optional Extended attribute support
Aug 31 2019, 3:17 PM

Aug 27 2019

rmacklem committed rS351525: Add support for _PC_MIN_HOLE_SIZE to the NFSv4.2 client..
Add support for _PC_MIN_HOLE_SIZE to the NFSv4.2 client.
Aug 27 2019, 1:40 AM

Aug 22 2019

rmacklem committed rS351374: Add a couple of lines noting that r351372 maps ENOTTY->EINVAL for other cases..
Add a couple of lines noting that r351372 maps ENOTTY->EINVAL for other cases.
Aug 22 2019, 1:30 AM
rmacklem committed rS351372: Map ENOTTY to EINVAL for lseek(SEEK_DATA/SEEK_HOLE)..
Map ENOTTY to EINVAL for lseek(SEEK_DATA/SEEK_HOLE).
Aug 22 2019, 1:15 AM
rmacklem closed D21300: Fix lseek() so that it never returns errnos not listed on the man page, such as ENOTTY.
Aug 22 2019, 1:15 AM
rmacklem committed rS351371: Allow a NFSv4.2 Data server to handle Seek..
Allow a NFSv4.2 Data server to handle Seek.
Aug 22 2019, 12:37 AM

Aug 21 2019

rmacklem added a comment to D21300: Fix lseek() so that it never returns errnos not listed on the man page, such as ENOTTY.

Updated the patch to only map ENOTTY to EINVAL, per Mark's comments.

Aug 21 2019, 10:28 PM
rmacklem added a comment to D21300: Fix lseek() so that it never returns errnos not listed on the man page, such as ENOTTY.

Actually, I only mapped ENOTTY when I first did the patch. The only reason I changed it
is that any error returned by VOP_GETATTR() also gets returned to lseek(2). For NFS,
this could be EACCES, for example, since file permissions are checked for every operation
on NFS, nit just at open(2) time.

Aug 21 2019, 4:55 AM

Aug 20 2019

rmacklem committed rS351252: Fix nfsvno_seek()'s setting of eof..
Fix nfsvno_seek()'s setting of eof.
Aug 20 2019, 5:00 PM
rmacklem committed rS351247: Add proxy support to the NFSv4.2 server Seek command so that it will.
Add proxy support to the NFSv4.2 server Seek command so that it will
Aug 20 2019, 5:37 AM

Aug 19 2019

rmacklem committed rS351202: Add an entry to RELNOTES for r351201..
Add an entry to RELNOTES for r351201.
Aug 19 2019, 12:46 AM
rmacklem closed D21299: Add a vop_stdioctl() that does the trivial algorithm for FIOSEEKDATA/FIOSEEKHOLE.
Aug 19 2019, 12:29 AM
rmacklem committed rS351201: Add a vop_stdioctl() that performs a trivial FIOSEEKDATA/FIOSEEKHOLE..
Add a vop_stdioctl() that performs a trivial FIOSEEKDATA/FIOSEEKHOLE.
Aug 19 2019, 12:29 AM

Aug 18 2019

rmacklem added a comment to D21299: Add a vop_stdioctl() that does the trivial algorithm for FIOSEEKDATA/FIOSEEKHOLE.

This version of the patch has the changes suggested by kib@ incorporated in it.
The only semantic change is that it now returns whatever error VOP_GETATTR()
returns if VOP_GETATTR() fails. This is consistent with the behaviour of vn_bmap_seekhole().

Aug 18 2019, 1:50 AM

Aug 17 2019

rmacklem created D21300: Fix lseek() so that it never returns errnos not listed on the man page, such as ENOTTY.
Aug 17 2019, 3:24 AM
rmacklem created D21299: Add a vop_stdioctl() that does the trivial algorithm for FIOSEEKDATA/FIOSEEKHOLE.
Aug 17 2019, 3:17 AM

Aug 15 2019

rmacklem committed rS351106: Fix copy_file_range(2) so that unneeded blocks are not allocated to the output….
Fix copy_file_range(2) so that unneeded blocks are not allocated to the output…
Aug 15 2019, 11:21 PM
rmacklem closed D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.
Aug 15 2019, 11:21 PM

Aug 12 2019

rmacklem committed rS350884: Add support for the Seek operation to the NFSv4.2 client and server..
Add support for the Seek operation to the NFSv4.2 client and server.
Aug 12 2019, 5:25 AM

Aug 8 2019

rmacklem added a comment to D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.

Only change is a modified comment explaining how FIOSEEKHOLE might
find the same offset as FIOSEEKDATA already has returned for the file.

Aug 8 2019, 10:56 PM
rmacklem committed rS350777: Remove some harmless cruft from vn_generic_copy_file_range()..
Remove some harmless cruft from vn_generic_copy_file_range().
Aug 8 2019, 8:07 PM
rmacklem committed rS350776: Fix copy_file_range(2) for an unlikely race during hole finding..
Fix copy_file_range(2) for an unlikely race during hole finding.
Aug 8 2019, 7:53 PM

Aug 5 2019

rmacklem committed rS350580: Fix the NFSv4.2 client Copy operation's handling of a stale write verifier..
Fix the NFSv4.2 client Copy operation's handling of a stale write verifier.
Aug 5 2019, 2:53 AM

Aug 4 2019

rmacklem added a comment to D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.

This version of the patch adds an additional sanity check for
the results from VOP_IOCTL(). This change can only have an effect
for a non-INVARIANTS kernel where one of the VOP_IOCTL()s
return a bogus offset.
It ensures a reasonable positive value for xfer2 is returned for this case.

Aug 4 2019, 10:10 PM
rmacklem added a comment to D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.

Replied to inline comment.

Aug 4 2019, 9:27 PM
rmacklem added a comment to D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.

This version of the patch has the INVARIANTS printf() replaced by a KASSERT().
It also has KASSERT()s added for the results of FIOSEEKDATA/FIOSEEKHOLE.

Aug 4 2019, 4:32 PM
rmacklem added a comment to D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.

Replied to kib@'s comments inline.

Aug 4 2019, 3:16 PM
rmacklem created D21155: fix copy_file_range(2) so that it doesn't allocate unneeded data blocks of all 0s in the output file.
Aug 4 2019, 1:07 AM

Aug 2 2019

rmacklem committed rS350528: MFC: r350367.
MFC: r350367
Aug 2 2019, 2:00 AM

Jul 31 2019

rmacklem committed rS350491: Add an entry for the copy_file_range(2) syscall..
Add an entry for the copy_file_range(2) syscall.
Jul 31 2019, 11:36 PM

Jul 29 2019

rmacklem committed rS350398: Fix IO Advise, Layout error and Layout stats to not do vn_start_write()..
Fix IO Advise, Layout error and Layout stats to not do vn_start_write().
Jul 29 2019, 1:01 AM

Jul 28 2019

rmacklem committed rS350397: Return NFSERR_NOTSUPP for the NFSv4.2 Copy operation if a pNFS server..
Return NFSERR_NOTSUPP for the NFSv4.2 Copy operation if a pNFS server.
Jul 28 2019, 10:01 PM
rmacklem committed rS350395: Fix printing of Server Re-Failed and Server Faults..
Fix printing of Server Re-Failed and Server Faults.
Jul 28 2019, 9:44 PM
rmacklem added a comment to D21092: freebsd32 shims for copy_file_range(2).

I don't really know anything about this, but it looks fine to me.
The only change is uint32_t replaces size_t, which makes sense to 32bits.
(I'm guessing this is only used for amd64, where "int" and "unsigned int"
remain 32bits.)

Jul 28 2019, 1:35 AM

Jul 27 2019

rmacklem committed rS350368: Merge in an up to date kernel from head..
Merge in an up to date kernel from head.
Jul 27 2019, 2:23 AM
rmacklem committed rS350367: Lock the vnode before calling ufs_bmap_seekdata()..
Lock the vnode before calling ufs_bmap_seekdata().
Jul 27 2019, 1:52 AM

Jul 26 2019

rmacklem committed rS350337: Add support for Copy (the intra-server case) to the NFSv4.2 client and server..
Add support for Copy (the intra-server case) to the NFSv4.2 client and server.
Jul 26 2019, 12:28 AM

Jul 25 2019

rmacklem committed rS350326: Merge in an up to date kernel from head..
Merge in an up to date kernel from head.
Jul 25 2019, 4:35 PM
rmacklem committed rS350321: r350320 committed the wrong version of generated syscall.mk..
r350320 committed the wrong version of generated syscall.mk.
Jul 25 2019, 6:48 AM
rmacklem committed rS350320: Update the generated syscall.mk for copy_file_range(2)..
Update the generated syscall.mk for copy_file_range(2).
Jul 25 2019, 6:35 AM
rmacklem committed rS350319: Create a man page for VOP_COPY_FILE_RANGE(9)..
Create a man page for VOP_COPY_FILE_RANGE(9).
Jul 25 2019, 6:20 AM
rmacklem committed rS350318: Add an entry for copy_file_range(2) to unistd.h..
Add an entry for copy_file_range(2) to unistd.h.
Jul 25 2019, 6:11 AM
rmacklem committed rS350317: Add libc support for the copy_file_range(2) syscall added by r350315..
Add libc support for the copy_file_range(2) syscall added by r350315.
Jul 25 2019, 6:06 AM
rmacklem committed rS350316: Update the generated syscall files for copy_file_range(2) added by.
Update the generated syscall files for copy_file_range(2) added by
Jul 25 2019, 5:56 AM
rmacklem closed D20584: add a linux compatible copy_file_range(2) syscall.
Jul 25 2019, 5:46 AM
rmacklem committed rS350315: Add kernel support for a Linux compatible copy_file_range(2) syscall..
Add kernel support for a Linux compatible copy_file_range(2) syscall.
Jul 25 2019, 5:46 AM

Jul 22 2019

rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

Marked done and replied to inline comments.

Jul 22 2019, 3:57 PM
rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

This version incorporates a change to VOP_COPY_FILE_RANGE.9 suggested by asomers@.

Jul 22 2019, 3:50 PM
D20584: add a linux compatible copy_file_range(2) syscall now requires review to proceed.

This updates incorporates changes suggested by kib@.
Replace 1048576 with 1024 * 1024 for readability and move
vn_generic_copy_file_range() and helper functions from
vfs_subr.c to vfs_vnops.c.

Jul 22 2019, 3:19 PM
rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

Replied and checked done to inline comments.

Jul 22 2019, 3:55 AM
rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

This version incorporates changes suggested by asomers@.

Jul 22 2019, 3:27 AM
rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

The previous version of the patch had a single bwillwrite() call before the copy
done by the VOP call or vn_generic_copy_file_range().
kib@ pointed out that bwillwrite() calls are needed in the copy loop, which makes
sense, since the copy loop could be writing a large amount of data and constipate
the buffer cache for file systems using it.

Jul 22 2019, 1:58 AM

Jul 18 2019

rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

vn_copy_file_range() erroneously returned the error with *lenp set to the requested
length instead of 0 (the number of bytes copied).
This version of the patch has this fixed and a couple of extraneous brackets removed.

Jul 18 2019, 4:05 PM

Jul 13 2019

rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

One minor additional fix. For the case where the "len" argument is 0, the Linux
syscall returns 0. The previous patch did that, but it did 0 length (ie. start and end equal)
range locks, which the range lock code doesn't handle correctly.

Jul 13 2019, 11:40 PM

Jul 7 2019

rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

Marked "check for flags == 0" as done on the inline comment.

Jul 7 2019, 9:16 PM

Jul 6 2019

rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

This version of the patch checks for flags == 0 and returns EINVAL when not 0.
It also documents "must be 0" in the man page. This change seemed to be the
consensus from a discussion on FreeBSD-current@.

Jul 6 2019, 12:26 AM

Jul 5 2019

rmacklem committed rS349772: MFC: r348590, r348591.
MFC: r348590, r348591
Jul 5 2019, 10:48 PM
rmacklem committed rS349771: MFC: r348590, r348591.
MFC: r348590, r348591
Jul 5 2019, 10:36 PM
rmacklem added a comment to D20584: add a linux compatible copy_file_range(2) syscall.

Taken comment w.r.t. handling of flags argument over to freebsd-current@, since more people will see it there.

Jul 5 2019, 3:20 PM