Home | History | Annotate | only in /src/usr.sbin/puffs/mount_9p
History log of /src/usr.sbin/puffs/mount_9p
RevisionDateAuthorComments
 1.6 30-Aug-2020  christos include bsd.init.mk to avoid:
make: Bad conditional expression ` != "no"' in != "no"? -DINET6 :
 1.5 19-Jun-2020  uwe Use ?:: modifier instead of .if to check for ipv6.
This way we don't have to include bsd.init.mk early.
 1.4 13-Jun-2020  uwe Support IPv6.

Use getaddrinfo(3). Add -4 and -6 command line options. Obey USE_INET6.
 1.3 22-Apr-2009  lukem Enable WARNS=4 by default, except for:
cpuctl dumplfs hprop ipf iprop-log kadmin kcm kdc kdigest
kimpersonate kstash ktutil makefs ndbootd ntp pppd quot
racoon racoonctl rtadvd sntp sup tcpdchk tcpdmatch tcpdump
traceroute traceroute6 user veriexecgen wsmoused zic
(Mostly third-party applications)
 1.2 18-Jul-2007  pooka branches: 1.2.16; 1.2.20;
get rid of DBG=
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.2.20.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
 1.2.16.2 18-Jul-2007  pooka get rid of DBG=
 1.2.16.1 18-Jul-2007  pooka file Makefile was added on branch matt-mips64 on 2007-07-18 22:39:00 +0000
 1.11 28-May-2020  uwe Do not send dummy Tauth, it's completely unnecessary.

The best way to not use authentication is to not use authentication.
Cf. http://man.cat-v.org/plan_9/5/attach
 1.10 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.9 22-Jun-2011  mrg branches: 1.9.42;
remove some always true if () checks GCC 4.5.3 picks up.
 1.8 24-Aug-2008  pooka fix tyop in error message, no functional change
 1.7 30-Nov-2007  pooka branches: 1.7.8;
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.6 27-Nov-2007  pooka Remove "puffs_cid" from the puffs interface following l-removal
from the kernel vfs interfaces. puffs_cc_getcaller(pcc) can be
used now should the same information be desired.
 1.5 17-Jul-2007  pooka branches: 1.5.4;
support standard user@host:path mount argument
 1.4 01-Jul-2007  pooka adapt: pid -> const struct puffs_cid *
 1.3 11-May-2007  pooka Error with rtagid instead of tagid. caught by Dan's compiler flags.
 1.2 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.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.5.4.1 09-Jan-2008  matt sync with HEAD
 1.7.8.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.9.42.1 10-Jun-2019  christos Sync with HEAD
 1.17 11-Feb-2022  uwe mount_9p(8): Use full month name in previos (oops).
 1.16 10-Feb-2022  uwe mount_9p(8): document the new -C option.
 1.15 14-Jun-2020  uwe Support optional square brackets around the host name.

The brackets are required when using numeric IPv6 addresses as they
contain colons as part of their syntax. We do not enforce that the
thing in the brackets is a numeric IPv6 address - this matches scp
syntax and behavior.
 1.14 13-Jun-2020  uwe Support IPv6.

Use getaddrinfo(3). Add -4 and -6 command line options. Obey USE_INET6.
 1.13 30-May-2020  uwe Provide list of options for ease of reference.
 1.12 28-Oct-2019  wiz Sort SEE ALSO. "file system" police.
 1.11 28-Oct-2019  ozaki-r mount_9p: enable to communicate with vio9p via its character device file

With this feature, we can mount an exported filesystem by a VM host via
virtio-9p.
 1.10 07-Jun-2019  ozaki-r Handle Rerror and return errno correctly (only for 9P2000.u for now)
 1.9 17-May-2019  wiz Merge single-letter options in SYNOPSIS.
Add an article.
 1.8 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.7 17-May-2019  wiz Add missing .Re.
 1.6 17-May-2019  ozaki-r Refer the current official page
 1.5 17-May-2019  ozaki-r Document the -s option
 1.4 02-Dec-2007  wiz branches: 1.4.70;
Nits. Sort options.
 1.3 17-Jul-2007  pooka branches: 1.3.4;
support standard user@host:path mount argument
 1.2 08-Jul-2007  pooka Accept user as a flag. This way the usage is fstab-compliant:
mount_9p argument mountpoint
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.3.4.1 09-Jan-2008  matt sync with HEAD
 1.4.70.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.70.1 10-Jun-2019  christos Sync with HEAD
 1.9 28-Oct-2019  ozaki-r mount_9p: enable to communicate with vio9p via its character device file

With this feature, we can mount an exported filesystem by a VM host via
virtio-9p.
 1.8 04-Nov-2012  christos branches: 1.8.30;
add missing header
 1.7 06-Sep-2007  pooka branches: 1.7.28; 1.7.34;
adapt to new cmpfb signature
 1.6 20-May-2007  pooka branches: 1.6.4;
Change the signature of puffs_respcmp to return -1,0,1 for smaller,
equal, larger, respectively instead of 0/1 for non/equal. This
will allow sorting the buffers for faster matching in libpuffs.
While here, change the name from respcmp to framecmp, as that better
reflects the purpose.

NOTE! there is no obvious way to make compilation fail for file
systems which may already be using this feature (although I don't
think there are any outside our tree, as the feature is two weeks
old). Nevertheless, non-updated file systems will fail very quickly.
 1.5 15-May-2007  pooka don't leak memory if getting data from the buffer fails

CID 4485
 1.4 15-May-2007  pooka adapt to "step 3" of puffs_framebuf changes
 1.3 06-May-2007  pooka use puffs_framebuf_remaining()
 1.2 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.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.6.4.1 06-Nov-2007  matt sync with HEAD
 1.7.34.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.7.28.1 16-Jan-2013  yamt sync with (a bit old) head
 1.8.30.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.14 03-Sep-2021  andvar fix typos in comments, mainly s/extention/extension/ and s/sufficent/sufficient/
 1.13 26-May-2020  uwe Do not allocate 9P tags in advance, do it right before we need them.
If we are going to use sequential tags, we might as well try to make
them really sequential.
 1.12 26-May-2020  uwe proto_getstat - g/c debug printfs.
 1.11 07-Jun-2019  ozaki-r Handle Rerror and return errno correctly (only for 9P2000.u for now)
 1.10 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.9 30-Nov-2007  pooka branches: 1.9.70;
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.8 07-Jul-2007  pooka branches: 1.8.4;
adapt to puffs_framebuf changes
 1.7 16-May-2007  pooka Enhance the GETRESPONSE, JUSTSEND and SENDCB macros to process the
return value from the network layer.
 1.6 11-May-2007  pooka adapt to puffs_framebuf changes
 1.5 06-May-2007  pooka If mode is set, the uppermost byte specifying the type must be
correctly, otherwise the file server will attempt a conversion.
Specifically, if the directory bit is not set when changing the
permissions for a directory, a conversion from directory to regular
file would be attempted and naturally it being unsupported the
whole chmod would fail. So supply the file type as part of the
file mode.
 1.4 06-May-2007  pooka use puffs_framebuf_remaining()
 1.3 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.2 04-May-2007  pooka free uid and gid strings after use

CID 4474, 4475
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.8.4.1 09-Jan-2008  matt sync with HEAD
 1.9.70.1 10-Jun-2019  christos Sync with HEAD
 1.2 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.1 21-Apr-2007  pooka branches: 1.1.76;
mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.1.76.1 10-Jun-2019  christos Sync with HEAD
 1.35 10-Mar-2025  riastradh mount_9p(8): Implement pathconf stub.

Doesn't actually do anything useful -- it just returns EINVAL as
pathconf is supposed to for unknown pathconf key names; by default, it
will return ENOTSUPP, which leads applications like ls(1) to print:

ls: /mnt/.git: Operation not supported

This is a little silly; perhaps puffs should use EINVAL itself instead
of ENOTSUPP. But this change is less risky for now.

PR bin/58768: mount_9p: missing pathconf(2) support
 1.34 10-Feb-2022  ozaki-r branches: 1.34.4;
mount_9p: don't cache path names by default

Caching path names doesn't handle file changes by host, which is
not expected for normal usages. So turn it off by default.

Instead, -C option is added to turn it on.

Patch from k-goda@IIJ with my tweaks
 1.33 14-Jun-2020  uwe Support optional square brackets around the host name.

The brackets are required when using numeric IPv6 addresses as they
contain colons as part of their syntax. We do not enforce that the
thing in the brackets is a numeric IPv6 address - this matches scp
syntax and behavior.
 1.32 13-Jun-2020  uwe Remove -46 from the -c usage. While here, sync usage with man page
(s/devfile/device).
 1.31 13-Jun-2020  wiz Add -46 to usage.
 1.30 13-Jun-2020  uwe Support IPv6.

Use getaddrinfo(3). Add -4 and -6 command line options. Obey USE_INET6.
 1.29 30-May-2020  uwe Initialize puffs9p::server (though it's not used anywhere).
 1.28 29-May-2020  uwe Fix vio9p device name in a comment.
 1.27 28-Oct-2019  ozaki-r mount_9p: enable to communicate with vio9p via its character device file

With this feature, we can mount an exported filesystem by a VM host via
virtio-9p.
 1.26 20-May-2019  ozaki-r mount_9p: add missing -u option to the help message
 1.25 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.24 31-Aug-2011  joerg branches: 1.24.42;
Use __dead
 1.23 02-Dec-2007  wiz Sort options.
 1.22 16-Nov-2007  pooka use puffs_daemon() instead of daemon()
 1.21 06-Nov-2007  pooka Open the kernel descriptor as part of mount(), not init(). Then
it doesn't matter if someone fork()s or does other tricks between
init() and mount() (and besides, now it's where it logically should be).
 1.20 05-Nov-2007  pooka Actually, daemonize the file servers before mounting. I might require
at some point that the local protocol handler does not change after
the file system has been mounted.
 1.19 05-Nov-2007  pooka Pull the daemonizing code out of the library mainloop into the file
servers. Calling daemon() (i.e. fork()ing) inside a library can
cause nice surprises for e.g. threaded programs. As discussed with
Greg Oster & others.
 1.18 15-Oct-2007  pooka update usage to match reality. caught by jmcneill
 1.17 01-Sep-2007  pooka Adapt to new puffs_framev_init() signature - gotfb.
 1.16 17-Jul-2007  pooka branches: 1.16.4;
* add mntfromname parameter to puffs_init()
* set it in file servers
 1.15 17-Jul-2007  pooka support standard user@host:path mount argument
 1.14 08-Jul-2007  pooka Accept user as a flag. This way the usage is fstab-compliant:
mount_9p argument mountpoint
 1.13 07-Jul-2007  pooka adapt to puffs_framebuf changes
 1.12 19-May-2007  pooka support reclaim. set noref setback when removing a node to prompt
immediate reclaim.
 1.11 17-May-2007  pooka reflect changes in fs mount: use puffs_mount() instead of
puffs_domount() & puffs_start()
 1.10 15-May-2007  pooka adapt to "step 3" of puffs_framebuf changes
 1.9 11-May-2007  pooka use puffs_mainloop(); puffs_framebuf_eventloop() is a goner
 1.8 11-May-2007  pooka adapt to puffs_framebuf changes
 1.7 07-May-2007  pooka Use inactive-on-demand, set inactive request in open() to close
file handles when last reference is removed from the kernel.
 1.6 06-May-2007  pooka Close file handles in inactive instead of close - a memory mapping
may still be active after a vnode is closed
 1.5 06-May-2007  pooka adapt to puffs_framebuf_eventloop signature change
 1.4 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.3 02-May-2007  pooka For consistency destroy kernel request putbuffers also when
escaping event loop (the process is going to exit anyway, but ...)
 1.2 22-Apr-2007  pooka Alter the strategy for reading/writing a bit. First of all, use
PUFFS_KFLAG_WTCACHE. Second, create separate fids for reading and
writing. If opening for read, open a read-only fid and for write
a write-only fid; use these for reading and writing. When the
open-count for a node drops to zero, clunk both. This avoids hitting
the fid limit when accessing large directory hierarchies.

Two problems remain:
* does not take credentials into account, although we can only mount
the remote 9P file server with one set of credentials, so not a
huge worry
* doesn't work for the open/mmap/close/access_memory_window case, but
that will require some further kernel changes
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.16.4.2 09-Jan-2008  matt sync with HEAD
 1.16.4.1 06-Nov-2007  matt sync with HEAD
 1.24.42.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.24.42.1 10-Jun-2019  christos Sync with HEAD
 1.34.4.1 02-Aug-2025  perseant Sync with HEAD
 1.16 26-May-2020  uwe Use the typedef to declare tag in AUTOVAR. Do not allocate 9P tags in
advance in AUTOVAR, do it right before we need them. Do no reuse tags.
If we are going to use sequential tags, we might as well try to make
them really sequential.
 1.15 28-Oct-2019  ozaki-r mount_9p: enable to communicate with vio9p via its character device file

With this feature, we can mount an exported filesystem by a VM host via
virtio-9p.
 1.14 07-Jun-2019  ozaki-r Handle Rerror and return errno correctly (only for 9P2000.u for now)
 1.13 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.12 30-Nov-2007  pooka branches: 1.12.70;
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.11 06-Sep-2007  pooka adapt to new cmpfb signature
 1.10 17-Jul-2007  pooka branches: 1.10.4;
support standard user@host:path mount argument
 1.9 07-Jul-2007  pooka adapt to puffs_framebuf changes
 1.8 16-May-2007  pooka Enhance the GETRESPONSE, JUSTSEND and SENDCB macros to process the
return value from the network layer.
 1.7 15-May-2007  pooka adapt to "step 3" of puffs_framebuf changes
 1.6 11-May-2007  pooka adapt to puffs_framebuf changes
 1.5 06-May-2007  pooka If mode is set, the uppermost byte specifying the type must be
correctly, otherwise the file server will attempt a conversion.
Specifically, if the directory bit is not set when changing the
permissions for a directory, a conversion from directory to regular
file would be attempted and naturally it being unsupported the
whole chmod would fail. So supply the file type as part of the
file mode.
 1.4 06-May-2007  pooka Close file handles in inactive instead of close - a memory mapping
may still be active after a vnode is closed
 1.3 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.2 22-Apr-2007  pooka Alter the strategy for reading/writing a bit. First of all, use
PUFFS_KFLAG_WTCACHE. Second, create separate fids for reading and
writing. If opening for read, open a read-only fid and for write
a write-only fid; use these for reading and writing. When the
open-count for a node drops to zero, clunk both. This avoids hitting
the fid limit when accessing large directory hierarchies.

Two problems remain:
* does not take credentials into account, although we can only mount
the remote 9P file server with one set of credentials, so not a
huge worry
* doesn't work for the open/mmap/close/access_memory_window case, but
that will require some further kernel changes
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.10.4.2 09-Jan-2008  matt sync with HEAD
 1.10.4.1 06-Nov-2007  matt sync with HEAD
 1.12.70.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.12.70.1 10-Jun-2019  christos Sync with HEAD
 1.32 10-Mar-2025  riastradh mount_9p(8): Implement pathconf stub.

Doesn't actually do anything useful -- it just returns EINVAL as
pathconf is supposed to for unknown pathconf key names; by default, it
will return ENOTSUPP, which leads applications like ls(1) to print:

ls: /mnt/.git: Operation not supported

This is a little silly; perhaps puffs should use EINVAL itself instead
of ENOTSUPP. But this change is less risky for now.

PR bin/58768: mount_9p: missing pathconf(2) support
 1.31 02-Mar-2022  ozaki-r branches: 1.31.4;
mount_9p: check returned type for Tread
 1.30 02-Mar-2022  ozaki-r mount_9p: fix writing to a file opened with write-only mode

With the page cache, writing data to a file may demand to read contents
from a storage to fill a page in the page cache first.

Opening a file with write-only mode by a user lets a mount_9p process
open a file with write-only mode too at a 9p server. Thus, a read
request to the file from the page cache fails.

So we need to open a file always with read mode (internally) even if it
is opened with write-only mode by a user.

Note that the change doesn't mean that mount_9p allows users to read
contents from a file that is opened with write-only mode.
 1.29 01-Jun-2020  uwe Fix extra whitespace added by accident.
 1.28 27-May-2020  uwe puffs9p_node_rename - 9P rename is done with Twstat and can only
change the last pathname component. Return EXDEV for attempts to move
a file to a different directory to make mv(1) fall back to copying.
 1.27 27-May-2020  uwe noderemove - do not call puffs_setback here. noderemove is called
from rename (for existing target) and calling setback is not
appropriate in that context. Do that call instead directly in the
callers (remove, rmdir).

From Nicola Girardi, part of PR/54829.
 1.26 27-May-2020  uwe puffs9p_node_rename - noderename takes puffs_node, not p9pnode, but
this goes undetected b/c pn_data we pass is a pointer to void.

From Nicola Girardi, part of PR/54829.
 1.25 26-May-2020  uwe Use the typedef to declare tag in AUTOVAR. Do not allocate 9P tags in
advance in AUTOVAR, do it right before we need them. Do no reuse tags.
If we are going to use sequential tags, we might as well try to make
them really sequential.
 1.24 26-May-2020  uwe puffs9p_node_lookup - use the right type for tfid.
 1.23 07-Jun-2019  ozaki-r branches: 1.23.2;
Handle Rerror and return errno correctly (only for 9P2000.u for now)
 1.22 17-May-2019  ozaki-r mount_9p: add initial support for 9P2000.u

The implementation enables to work with a server talking 9P2000.u. However, it
doesn't use the extended fields yet; it just ignores those of received messages
and sets "please ignore" values to those of sending messages such as zero-length
strings and maximum unsigned values.

The feature is enabled by the -u option.
 1.21 18-Jan-2009  lukem branches: 1.21.40; 1.21.48;
fix -Wsign-compare issues
 1.20 22-Aug-2008  pooka * Apparently u9fs returns the inode number as the unique qidpath.
This is fairly annoying if browsing a hierarchy with multiple file
systems mounted, since at least inode 2 is fairly common. Compensate
by comparing modification time also. Not perfect, but ....
* Don't loop eternally if we attempt to read at or past EOF. Fixes
reading files on a non-cached mount.
 1.19 30-Nov-2007  pooka branches: 1.19.8;
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.18 27-Nov-2007  pooka Remove "puffs_cid" from the puffs interface following l-removal
from the kernel vfs interfaces. puffs_cc_getcaller(pcc) can be
used now should the same information be desired.
 1.17 13-Oct-2007  pooka Execute getattr in lookup to get file size. The kernel doesn't
anymore do this if we fail to set size.

The whole lookup procedure should be done in a smarter fashion,
but this is the quickie fix to get things working again.
 1.16 02-Jul-2007  pooka branches: 1.16.4;
adapt: inactive no longer comes with int *refcount (not that it was
used except for setting the default here anyway)
 1.15 01-Jul-2007  pooka adapt: **newnode etc. pointers -> struct puffs_newinfo
 1.14 01-Jul-2007  pooka adapt: pid -> const struct puffs_cid *
 1.13 24-Jun-2007  pooka Call puffs_pn_remove() just in case the file server happens to be
quick with recycling qids.
 1.12 19-May-2007  pooka support reclaim. set noref setback when removing a node to prompt
immediate reclaim.
 1.11 16-May-2007  pooka Enhance the GETRESPONSE, JUSTSEND and SENDCB macros to process the
return value from the network layer.
 1.10 15-May-2007  pooka In case we counter a protocol error while parsing the readdir response,
completely release our directory cookie - it's unlike we'll be coming
back to it. And if we do, it'll just be autogenerated.

CID 4487
 1.9 15-May-2007  pooka free name from proto_getstat() after use

CID 4488
 1.8 11-May-2007  pooka adapt to puffs_framebuf changes
 1.7 07-May-2007  pooka Use inactive-on-demand, set inactive request in open() to close
file handles when last reference is removed from the kernel.
 1.6 06-May-2007  pooka If mode is set, the uppermost byte specifying the type must be
correctly, otherwise the file server will attempt a conversion.
Specifically, if the directory bit is not set when changing the
permissions for a directory, a conversion from directory to regular
file would be attempted and naturally it being unsupported the
whole chmod would fail. So supply the file type as part of the
file mode.
 1.5 06-May-2007  pooka Close file handles in inactive instead of close - a memory mapping
may still be active after a vnode is closed
 1.4 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.3 04-May-2007  pooka Fix a couple of gotchas left after AUTOVAR() started creating the
network buffers.

CID 4477, 4478, 4479, 4480
 1.2 22-Apr-2007  pooka Alter the strategy for reading/writing a bit. First of all, use
PUFFS_KFLAG_WTCACHE. Second, create separate fids for reading and
writing. If opening for read, open a read-only fid and for write
a write-only fid; use these for reading and writing. When the
open-count for a node drops to zero, clunk both. This avoids hitting
the fid limit when accessing large directory hierarchies.

Two problems remain:
* does not take credentials into account, although we can only mount
the remote 9P file server with one set of credentials, so not a
huge worry
* doesn't work for the open/mmap/close/access_memory_window case, but
that will require some further kernel changes
 1.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.16.4.2 09-Jan-2008  matt sync with HEAD
 1.16.4.1 06-Nov-2007  matt sync with HEAD
 1.19.8.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.21.48.1 10-Jun-2019  christos Sync with HEAD
 1.21.40.2 18-Mar-2022  martin Minimal build fix for ticket #1738
 1.21.40.1 15-Mar-2022  martin Pull up following revision(s) (requested by ozaki-r in ticket #1738):

usr.sbin/puffs/mount_9p/node.c: revision 1.30
usr.sbin/puffs/mount_9p/node.c: revision 1.31

mount_9p: fix writing to a file opened with write-only mode

With the page cache, writing data to a file may demand to read contents
from a storage to fill a page in the page cache first.

Opening a file with write-only mode by a user lets a mount_9p process
open a file with write-only mode too at a 9p server. Thus, a read
request to the file from the page cache fails.

So we need to open a file always with read mode (internally) even if it
is opened with write-only mode by a user.

Note that the change doesn't mean that mount_9p allows users to read
contents from a file that is opened with write-only mode.

-

mount_9p: check returned type for Tread
 1.23.2.1 15-Mar-2022  martin Pull up following revision(s) (requested by ozaki-r in ticket #1434):

usr.sbin/puffs/mount_9p/node.c: revision 1.30
usr.sbin/puffs/mount_9p/node.c: revision 1.31

mount_9p: fix writing to a file opened with write-only mode

With the page cache, writing data to a file may demand to read contents
from a storage to fill a page in the page cache first.

Opening a file with write-only mode by a user lets a mount_9p process
open a file with write-only mode too at a 9p server. Thus, a read
request to the file from the page cache fails.

So we need to open a file always with read mode (internally) even if it
is opened with write-only mode by a user.

Note that the change doesn't mean that mount_9p allows users to read
contents from a file that is opened with write-only mode.

-

mount_9p: check returned type for Tread
 1.31.4.1 02-Aug-2025  perseant Sync with HEAD
 1.8 26-May-2020  uwe getdfwithoffset - do not issue dummy read to seek to offset zero on a
newly opened fid as it's already there. This is redundant and also
seems to confuse inferno when issued against the root directory. Now
you can ls the mount point of

styxlisten -A 'tcp!*!styx' export /

While here fix the seek logic to actually repeatedly seek forward
instead of always doing it from zero.
 1.7 07-Jun-2019  ozaki-r Handle Rerror and return errno correctly (only for 9P2000.u for now)
 1.6 30-Nov-2007  pooka branches: 1.6.70;
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.5 16-May-2007  pooka branches: 1.5.4;
Enhance the GETRESPONSE, JUSTSEND and SENDCB macros to process the
return value from the network layer.
 1.4 15-May-2007  pooka * free framebuf after use (even in the common path ;)
* simplify a loop
 1.3 11-May-2007  pooka adapt to puffs_framebuf changes
 1.2 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.1 21-Apr-2007  pooka mount_9p: mount a file server using the Plan9 file sharing protocol

Works, but lots of little things to nibble on:
* fix permissions to work better
* limit the amount of open files required
* do constant folding with psshfs code
* support authentication
etcetc.
 1.5.4.1 09-Jan-2008  matt sync with HEAD
 1.6.70.1 10-Jun-2019  christos Sync with HEAD

RSS XML Feed