History log of /src/usr.sbin/puffs/mount_psshfs/psshfs.h |
Revision | | Date | Author | Comments |
1.40 |
| 01-Apr-2010 |
pooka | In case we create a file, reclaim the vnode, and lookup the file without the directory timeout expiring, we get vattr_null as the attributes for that file. Ensure that we always report sane attributes by getting them from the server if this is the case. (also, sprinkle some const)
Fixes problem reported by dyoung. But wait! The bug's medallion begins to glow! The bug looks much better! I crumble to dust.
There's probably another similar bug related to "lazy open". It will trigger if we reclaim a node before the response to the open arrives. Even the comments (typoless) know about this bug ... But verifying it exists and fixing it will have to wait for another day.
|
1.39 |
| 07-Jan-2010 |
pooka | Add -u and -g, which allow to remap one (local,remote) uidgid, i.e. umapfs without the fuss.
|
1.38 |
| 05-Nov-2009 |
pooka | more lp64 it's-a-sign! fixes
|
1.37 |
| 20-May-2009 |
pooka | Copyright year management. no functional change (unless sarah disagrees)
|
1.36 |
| 20-May-2009 |
pooka | Introduce -c [12], which can be used to open 1 or 2 ssh connections to the server. If "2" is specified, a separate connection is used for data and directory operations. Using two connections can significantly increase directory operation performance on a saturated link, at least up to 30x faster.
|
1.35 |
| 23-Feb-2009 |
pooka | Support statvfs@openssh.com extension where available. Makes df(1) return something other than just 0. caveat: statvfs is done for the mountpoint path, so might not give the truth about a directory inside the mountpoint.
|
1.34 |
| 06-Sep-2008 |
pooka | branches: 1.34.6; Due to a recent encounter with a sucky internet connection, add experimental option -p, which tries to reestablish the connection to the sftp server in case it is lost. This currently has a few limitations (found in the man page), but generally works in some use cases.
Better support might eventually emerge, but since that requires a plunge into the depths of puffs_framebuf, I need quite a bit of Fernet Branca to build up my courage before attempting it.
|
1.33 |
| 07-Dec-2007 |
pooka | branches: 1.33.8; Don't use puffs_cc_getusermount()
|
1.32 |
| 07-Dec-2007 |
pooka | Get rid of a lot of extra complexity due to doing separate getattr requests in readdir - just use the results from the readdir rpc.
|
1.31 |
| 30-Nov-2007 |
pooka | Rototill.
Ok, ok, a few more words about it: stop holding puffs_cc as a holy value and passing it around to almost every possible place (popquiz: which kernel variable does this remind you of?). Instead, pass the natural choice, puffs_usermount, and fetch puffs_cc via puffs_cc_getcc() only in routines which actually need it. This not only simplifies code, but (thanks to the introduction of puffs_cc_getcc()) enables constructs which weren't previously sanely possible, say layering as a curious example.
There's still a little to do on this front, but this was the major fs interface blast.
|
1.30 |
| 30-Nov-2007 |
pooka | Introduce the concept of lazyopens. This means that when a file handle open is requested, it is waited for only if the node was not previously succesfully opened. The actual wait for the file handle happens only when the file handle is actually needed (read or write). This in turn has the effect that reading cached files will be quick instead of waiting for the file handle from the sftp server first. The wait previously could be very long if there were serveral hundred k of outstanding requests in a limited-bandwidth link.
The code is in some need of serious handholding, but it works, so I'll leave that as "future work".
|
1.29 |
| 18-Nov-2007 |
pooka | Don't bother tracking opencount and try to close file handles in the close method - simply just wait for inactive and do it there.
|
1.28 |
| 11-Nov-2007 |
pooka | Don't overload "attributes last read" for the symlink cache, use a separate variable.
|
1.27 |
| 10-Nov-2007 |
pooka | Cache readlink results similarly to attributes. Makes "cd" fast for a slow connection if a symlink is along the path.
(this should be done elsewhere, but I want it for sshfs now)
|
1.26 |
| 08-Nov-2007 |
pooka | Make attribute & directory content caching timeout a command line option. Use -t -1 to never expire, which is nifty on a high-latency link where you know the server won't be modified from under you.
|
1.25 |
| 20-Oct-2007 |
pooka | Add option -r to specify maximum number of active read requests for each node. Setting this to a small number can be used to improve interactive performance on low-bandwidth links when performing bulk data reads. Of course I could also open separate pipes for bulk and other, but this was quicker and less intrusive and doesn't require authenticating twice.
|
1.24 |
| 06-Sep-2007 |
pooka | adapt to new cmpfb signature
|
1.23 |
| 23-Aug-2007 |
pooka | branches: 1.23.2; Prevent crash in case there is more than one reader for the same directory concurrently. Might need to revisit the method used here later, though.
|
1.22 |
| 27-Jul-2007 |
pooka | branches: 1.22.4; Track memory mappings. Close file handles already in close() if there are no active mappings, otherwise do the standard inactive() run.
|
1.21 |
| 07-Jul-2007 |
pooka | adapt to puffs_framebuf changes
|
1.20 |
| 06-Jun-2007 |
pooka | Move puffs to a two clause license where it already isn't so. And as agc pointed out, even files with the third clause were already effectively two clause because of a slight bug in the language...
|
1.19 |
| 20-May-2007 |
pooka | Observe that when doing ls -l, the attributes of the first file getattr are usually still outstanding when we already would like the result. Instead of issueing another stat which will be serviced only after all the other entries in the directory, record all the outgoing readdir getattr buffers and if we encounter an outstanding request when we need to fetch attrs, do a puffs_framev_framebuf_ccpromote() wait for it instead of firing off the second query. This shaves almost 10% off the time for ls -lR.
Also, get rid of the SUPERREADDIR conditional, since it has penetrated the code quite a bit and the #ifdef SUPERREADDIRs were starting to look like tagliatelle alla bolognese (n.b. I love how it looks, but I wouldn't like it either if my tagliatelle alla bolognese looked like psshfs code). Maybe it should be re-introduced in the form of a switch?
|
1.18 |
| 20-May-2007 |
pooka | Implement SUPERREADDIR (like nfs readdirplus) getattr cache warming a bit differently: when reading the directory, store all getattr caching queries and fire off only when the directory read is complete. That way the common sequence is not [readdir, lots of async getattr requests, readdir EOF] but rather [readdir, readdir EOF, lots of async getattr]. This speeds up ls -lR by about 25% (on my LAN).
|
1.17 |
| 18-May-2007 |
pooka | remove obvious incorrect assert() from doreclaim() and remove the whole PSN_NUKED bit - it's not very useful because of the noref setback.
|
1.16 |
| 18-May-2007 |
pooka | * use NOREF setback to prompt immediate (well, once the kernel reference count goes to 0) reclaim of deleted nodes as opposed to waiting for the system to start reclaiming the freelist * combine some nodeflags from different variable to one status variable
|
1.15 |
| 15-May-2007 |
pooka | adapt to "step 3" of puffs_framebuf changes
|
1.14 |
| 12-May-2007 |
pooka | uint32_t vs. size_t pointer adjustments for LP64 build
|
1.13 |
| 11-May-2007 |
pooka | adapt to puffs_framebuf changes
|
1.12 |
| 06-May-2007 |
pooka | Open files in open and close them in inactive. This avoids the silly and problematic chmod + open + "un"chmod in write, among other things.
|
1.11 |
| 05-May-2007 |
pooka | Adapt to use puffs_framebuf. This gets rid of most of the duplicated code between mount_psshfs and mount_9p and clarifies the code structure.
|
1.10 |
| 19-Apr-2007 |
pooka | use puffs_cc_getspecific() where puffs_usermount is not required
|
1.9 |
| 12-Apr-2007 |
pooka | Support nfs exporting.
Now, when I say support, I mean "support", due to the limitations of the backend. File handles are valid only for one session, since nodes can only be identified by pathnames and pathnames don't (all) fit into the nfs file handle space. Additionally, we can't detect if a pathname is completely replaced by another file (if it's done via some other route that through our mount, of course). But then again, that's an inherent problem with sshfs even without nfs.
|
1.8 |
| 12-Apr-2007 |
pooka | Hide struct puffs_usermount from the rest of the world and provide accessors for interesting data in it. Namely, you can now get pu->pu_privdata with puffs_getspecific(), pu->pu_pn_root with puffs_set/getroot() and pu->pu_maxreqlen with puffs_getmaxreqlen().
|
1.7 |
| 22-Mar-2007 |
pooka | In case lookup from the directory listing fails, try statting the target before giving up. Makes it possible to access files from -r+x directories.
|
1.6 |
| 27-Feb-2007 |
pooka | size_t -> uint32_t cleanup to make LP64 build
noticed by wiz
|
1.5 |
| 15-Feb-2007 |
pooka | Support reclaim. To support dotdot lookup, here we leave the reclaimed nodes hanging until all their children have been reclaimed and then reclaim everything we can as far up to root as possible. This is because the file system structures are currently interlinked in a fashion which would make dotdot lookup based on purely a path instead of a in-memory node parent member pointer very difficult. Yes, this deserves a closer look some day.
|
1.4 |
| 09-Feb-2007 |
pooka | Implement "superreaddir". This issues a getattr for all the directory entries already in readdir and caches the results instead of waiting for each individial getattr from the kernel. For high-latency links the difference in "ls -l" is quite astounding and even on my lan "ls -lR" is faster than for nfs in a normal directory hierarchy (i.e. not one artifically setup to have thousands of files per directory).
TODO: implement some sort of bandwidth/latency measurement in the code and enable or disable this option based on than information (and a command-line flag).
|
1.3 |
| 15-Jan-2007 |
pooka | * adapt to libpuffs path changes * fix bug in rename
|
1.2 |
| 06-Jan-2007 |
pooka | * do mount as a forward operation instead of a callback * process -o args for mount
|
1.1 |
| 29-Dec-2006 |
pooka | puffs sshfs, an sshfs implementation built on top of the puffs continuation framework
|
1.22.4.2 |
| 27-Jul-2007 |
pooka | Track memory mappings. Close file handles already in close() if there are no active mappings, otherwise do the standard inactive() run.
|
1.22.4.1 |
| 27-Jul-2007 |
pooka | file psshfs.h was added on branch matt-mips64 on 2007-07-27 09:46:29 +0000
|
1.23.2.2 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.23.2.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
1.33.8.1 |
| 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
1.34.6.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|