My main worry is that it is relatively large (which can make it harder to review, and harder for Ronnie and Paulo et al to backport) but if it is the cleanest way to solve various problems, then it could be worth pursuing. Otherwise, I prefer cleanup (unless relatively small and reasonably easy to review) when it is related to fixing other problems. The biggest problems I would like to fix are: 1) using compounding in more places (plenty of benchmarks or simple examples like gunzip, tar, rsync, to go through to look for places where network traces show compounding not being used) 2) optimizing compounding better e.g. - "ls -l" of directory with mfsymlinks sends multiple compound requests for every mfsymlink when only need one - "ls" sends an extra roundtrip for 99% of cases, to send the final querydir (which gets no more files rc ...). We should be sending "open/querydir/querydir" compound not "open/querydir") 3) ) we need to fix a few cases when we open a file in compound ops when we already have an appropriate one open 4) we request leases where appropriate for compounding sequences (e.g. open/querydir) e.g. when open sent but no close and reasonable possibility of benefiting from deferred close. 5) we set the parent lease key where possible (quoting from MS-SMB2: "The client MUST search the GlobalFileTable for the parent directory of the file being opened. The name of the parent directory is obtained by removing the last component of the path. If any entry is found, ParentLeaseKey is obtained from File.LeaseKey of that entry and SMB2_LEASE_FLAG_PARENT_LEASE_KEY_SET bit MUST be set in the Flags field.") 6) we need to make sure we are always requesting handle leases (e.g. RWH or RH) - we have one case (cachiong directories) where we request "R" instead of "RH" and we need to make sure that we close any deferred opens (or cached dir opens) when we lose the 'H' on a lease On Sun, Mar 19, 2023 at 2:19 PM Volker Lendecke <Volker.Lendecke@xxxxxxxxx> wrote: > > Hello! > > This is not a formal patchset, more a request for comments. > > In fs/cifs when doing compound operations I see a lot of fiddly > boilerplate code. Attached find a little patchset that introduces a > struct smb2_compound_op capturing most of that boilerplate code, along > with a few sample uses. > > Is that worth exploring further? > > Thanks, > > Volker -- Thanks, Steve