9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Russ Cox rsc@plan9.bell-labs.com
Subject: [9fans] a problem with the 9p protocol?
Date: Sat,  4 Apr 1998 16:25:36 -0500	[thread overview]
Message-ID: <19980404212536.qjWdL_RcP7s-GsZbFeeMm0SGsN2B2_q35mQcu4aY3Cg@z> (raw)

> Where is the problem?

Your problem arises from the way the mount driver handles
mounted file descriptors.  There is a flag CMSG on each fd (well,
each channel) that says whether or not it is mounted.
Once you mount(2) it, the flag gets set.  After the flag is
set, normal reads and writes (via the read and write system
calls) are disallowed, presumably to not interfere with the
9P calls by the mount driver.

> If I run it with:
> 	ramfs -s
> 	filter
> 	mount /srv/filter /tmp/mnt
> it seems to work: 

Right.  In this case, /srv/ramfs has never been mounted directly by the
system, so the associated channel doesn't have the CMSG flag set.
Reads and writes by filter work.

> But if I first mount and
> then unmount the ramfs with:
> 	ramfs -s
> 	mount -c /srv/ramfs /tmp/mnt
> 	unmount /tmp/mnt
> 	filter
> 	mount /srv/filter /tmp/mnt
> I get:
> 	client->server: Tsession tag 65535 		# (from dump)
> 	write server: inappropriate use of fd
> 	mount: mount /srv/filtre /tmp/mnt: fsession: i/o error during authentication

Right.  In this case, /srv/ramfs has been mounted directly,
so CMSG is set. The first time filter calls read or write
(it happens to be a write), it fails.

The phenomenon is more simply demonstrated by
	% ramfs -s
	% echo squeamish ossifrage >>/srv/ramfs
	% mount /srv/ramfs /tmp/mnt
	% unmount /tmp/mnt
	% echo squeamish ossifrage >>/srv/ramfs
	echo: write error: inappropriate use of fd
	%

Russ




             reply	other threads:[~1998-04-04 21:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-04-04 21:25 Russ [this message]
  -- strict thread matches above, loose matches on Subject: below --
1998-04-04  5:58 Jean

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=19980404212536.qjWdL_RcP7s-GsZbFeeMm0SGsN2B2_q35mQcu4aY3Cg@z \
    --to=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).