9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: erik quanstrom <quanstro@quanstro.net>
To: 9fans@cse.psu.edu
Subject: Re: device-specific qid.version behaviour (was Re: [9fans] QTCTL?)
Date: Mon,  5 Nov 2007 12:54:35 -0500	[thread overview]
Message-ID: <84d7b8163cb339151fe23e621e8a29f2@quanstro.net> (raw)
In-Reply-To: <df49a7370711050906y7677c493r11202d6b2a1949f5@mail.gmail.com>

>> /n/sources/plan9/sys/src/9/port/devsd.c:177
> 
> ???
> i'm probably being stupid here, but all i see there is devsd dealing
> with its own data structures, with no external qids involved at all.
> an SDunit doesn't correspond with any file that devsd uses, as far as i can see.
> 
>> there is no race.  the client does a pread/pwrite blithly.  devsd returns
>> -1, Echange if the medium has changed since the fd was opened.
> 
> that's absolutely fine. if that's all that's going on, why bother reflecting
> the medium change in qid.vers of the data file? just leave it at 0 and be done
> with it.

the qid.vers does get exported.  i don't think there's a copy of the version stashed
in the kernel that is not visable from the outside.

	; cd /dev/sdD0	# cdrom
	; ls -q
	(0000000004400004 0 00) ctl
	(0000000004400005 0 00) raw
(inserts a cd)
	; ls -q
	(0000000004400004 1 00) ctl
	(0000000004400006 1 00) data
	(0000000004400005 1 00) raw
(reinserts the same cd)
	; ls -q
	(0000000004400004 2 00) ctl
	(0000000004400006 2 00) data
	(0000000004400005 2 00) raw

> that's precisely why i was arguing for a documented exception
> to the version rule: if the version is 0, treat the file as "always changed".
> it's also why i was arguing against implementations like cdfs
> that export a "partial" qid.vers that's neither one thing nor another,
> useful only to clients that know exactly what kind of file it is
> (in which case the information could be provided some other way).
> 
> some lies are worse than others!
> for instance, i've seen a server that put the
> number of (variably sized) records in a file in its size field,
> rather than the number of bytes. i'd definitely say that was
> worse than giving zero, though strictly speaking they're
> both lies...

there's another way to look at this situation.  the fileservers do not
lie.  they are always accurate.  the client's assumptions are faulty.
;-)

this issue deserves some more thought.  stat(5) says length is in bytes.
is stat(5) wrong?  

if we allow too much freedom in 9p, then we will not be able to
write general tools.  if we don't allow enough, we will not be able to
write tools easily and succinctly.

i think this particular case is not too much of a problem because qid.vers
is not used by very many tools, and most of them assume a fileserver
like kenfs or fossil.  (if you can point to a program that devsd breaks,
i'd be interested.)

- erik


  reply	other threads:[~2007-11-05 17:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-05 11:18 roger peppe
2007-11-05 13:18 ` erik quanstrom
2007-11-05 14:35   ` roger peppe
2007-11-05 15:01     ` erik quanstrom
2007-11-05 16:10       ` roger peppe
2007-11-05 16:40         ` erik quanstrom
2007-11-05 17:06           ` roger peppe
2007-11-05 17:54             ` erik quanstrom [this message]
2007-11-05 22:17               ` roger peppe
2007-11-05 23:21                 ` erik quanstrom
2007-11-06  0:53                   ` Charles Forsyth
2007-11-05 17:26           ` Skip Tavakkolian
2007-11-05 18:25             ` Eric Van Hensbergen
2007-11-05 19:52               ` Skip Tavakkolian
2007-11-05 22:12                 ` Skip Tavakkolian
2007-11-05 16:42         ` erik quanstrom
2007-11-05 15:27     ` erik quanstrom

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=84d7b8163cb339151fe23e621e8a29f2@quanstro.net \
    --to=quanstro@quanstro.net \
    --cc=9fans@cse.psu.edu \
    /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).