In my aoe driver I'm getting closes on QIDs that were never
opened:

(assuming devaoe is bound to the CWD)


rb1# echo bind /net/ether1 >aoectl
aoeopen: c->qid.path=0x2
aoeclose: c->qid.path=0x2
rb1# cd aoe2.9
rb1# ls -l
aoeclose: c->qid.path=0x16
aoeopen: c->qid.path=0x16
aoeclose: c->qid.path=0x16
--rw-rw-rw-  0 dennis dennis           0 May 23 14:44 config
--rw-rw-rw-  0 dennis dennis           0 May 23 14:44 ctl
--rw-rw-rw-  0 dennis dennis 41174138880 May 23 14:44 data
--r--r--r--  0 dennis dennis           0 May 23 14:44 stat
rb1# ls -l data
aoeclose: c->qid.path=0x19
aoe2.9 data close (nopen=0)
called from 8016c789
--rw-rw-rw-  0 dennis dennis 41174138880 May 23 14:44 data


8016c789 is in cclose. (which is obvious now)

I had hoped to keep a reference count on data so i can know
whether or not it's safe to switch to a new disk on the same
blade.  I don't think it's very fair to change disks while a
proc is holding the device open for IO.

Devwalk seems to be the immediate culprit, but I don't think
it's wrong.  How would one do ref counting in the face of
dup'ing channels and potentially open references using the
dev architecture?

Cheers,

Sam

Reply via email to