Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/share/examples/refuse/virtdir



On Sun, Nov 11, 2007 at 05:17:17PM +0000, David Laight wrote:
> On Sun, Nov 11, 2007 at 09:36:34AM +0000, Alistair Crooks wrote:
> > On Sun, Nov 11, 2007 at 09:31:31AM +0000, Alistair G. Crooks wrote:
> > > 
> > > Module Name:      src
> > > Committed By:     agc
> > > Date:             Sun Nov 11 09:31:31 UTC 2007
> > > 
> > > Modified Files:
> > >   src/share/examples/refuse/virtdir: virtdir.c
> > > 
> > > Log Message:
> > > Only use the bottom 5 bits of the random number, to prevent inode
> > > numbers creeping outside of the range fts considers normal.
> > 
> > Duh, 20bits, changed in repository.
> 
> Surely we now support 64bit inode numbers ?
> So what is fts complaining about ?

I'll show you what happened, in chronological order:

First problem:

        [9:06:35] agc@inspiron1300 ...examples/refuse/iscsi-initiator 405 > l 
-R /mnt
        total 66
        drwxr-xr-x   2 root  wheel     0 Jan  1  1970 .
        drwxr-xr-x  34 root  wheel  1536 Nov  8 19:29 ..
        drwxr-xr-x   2 agc   agc     512 Nov  9 17:55 
inspiron1300.wherever.co.uk

        /mnt/inspiron1300.wherever.co.uk:
        total 128
        drwxr-xr-x  2 agc   agc    512 Nov  9 17:55 .
        drwxr-xr-x  2 root  wheel    0 Jan  1  1970 ..
        drwxr-xr-x  2 agc   agc    512 Nov  9 17:55 target0
        ls: target0: directory causes a cycle
        [9:06:52] agc@inspiron1300 ...examples/refuse/iscsi-initiator 406 >

As a background, I tracked this down to the FTS_C case in ls(1).
I surmised that it was caused by the fact that the virtual dir routines
used the same inode number for each directory. Up until now, I'd been
using a different version of ls(1).

I committed the version of the virtdir routines with the random inode
number (virtdir.c rev 1.7), and restarted the iSCSI initiator.  Trying
to do a recursive listing of the directory tree now worked fine:

        [9:21:17] agc@inspiron1300 ...examples/refuse/iscsi-initiator 422 > l 
-R /mnt
        total 66
        drwxr-xr-x   2 root  wheel     0 Jan  1  1970 .
        drwxr-xr-x  34 root  wheel  1536 Nov  8 19:29 ..
        drwxr-xr-x   2 agc   agc     512 Nov  9 17:55 
inspiron1300.wherever.co.uk

        /mnt/inspiron1300.wherever.co.uk:
        total 128
        drwxr-xr-x  2 agc   agc    512 Nov  9 17:55 .
        drwxr-xr-x  2 root  wheel    0 Jan  1  1970 ..
        drwxr-xr-x  2 agc   agc    512 Nov  9 17:55 target0

        /mnt/inspiron1300.wherever.co.uk/target0:
        total 576
        drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 .                     
        drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 ..
        lrw-r--r--  1 agc  agc         44 Nov  9 17:55 hostname -> 
inspiron1300.wherever.co.uk
        lrw-r--r--  1 agc  agc          9 Nov  9 17:55 ip -> 10.4.0.42
        lrw-r--r--  1 agc  agc         16 Nov  9 17:55 product -> NetBSD iSCSI
        -rw-r--r--  1 agc  agc  104857088 Nov  9 17:55 storage
        lrw-r--r--  1 agc  agc         43 Nov  9 17:55 targetname -> 
iqn.1994-04.org.netbsd.iscsi-target:target0
        lrw-r--r--  1 agc  agc          8 Nov  9 17:55 vendor -> NetBSD
        lrw-r--r--  1 agc  agc          4 Nov  9 17:55 version -> 0
        [9:21:23] agc@inspiron1300 ...examples/refuse/iscsi-initiator 423 >

Unfortunately, tab completion in the shell couldn't find the regular
file in the directory, and neither could ls:

        [9:25:54] agc@inspiron1300 ...examples/refuse/iscsi-initiator 431 > 
priv vnconfig vnd0 /mnt/inspiron1300.wherever.co.uk/storage
        vnconfig: /mnt/inspiron1300.wherever.co.uk/storage: No such file or 
directory
        [9:26:52] agc@inspiron1300 ...examples/refuse/iscsi-initiator 432 > l 
/mnt/inspiron1300.wherever.co.uk/target0/
        hostname@   ip@         product@    storage     targetname@ vendor@     
version@
        [9:26:52] agc@inspiron1300 ...examples/refuse/iscsi-initiator 432 > l 
/mnt/inspiron1300.wherever.co.uk/target0/
        total 576
        drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 .
        drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 ..
        lrw-r--r--  1 agc  agc         44 Nov  9 17:55 hostname -> 
inspiron1300.wherever.co.uk
        lrw-r--r--  1 agc  agc          9 Nov  9 17:55 ip -> 10.4.0.42
        lrw-r--r--  1 agc  agc         16 Nov  9 17:55 product -> NetBSD iSCSI
        -rw-r--r--  1 agc  agc  104857088 Nov  9 17:55 storage
        lrw-r--r--  1 agc  agc         43 Nov  9 17:55 targetname -> 
iqn.1994-04.org.netbsd.iscsi-target:target0
        lrw-r--r--  1 agc  agc          8 Nov  9 17:55 vendor -> NetBSD
        lrw-r--r--  1 agc  agc          4 Nov  9 17:55 version -> 0
        [9:27:03] agc@inspiron1300 ...examples/refuse/iscsi-initiator 433 > l 
-i /mnt/inspiron1300.wherever.co.uk/target0/
        total 576
        1804289383 drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 .
         846930886 drwxr-xr-x  2 agc  agc        512 Nov  9 17:55 ..         
        1714636915 lrw-r--r--  1 agc  agc         44 Nov  9 17:55 hostname -> 
inspiron1300.wherever.co.uk
        1957747793 lrw-r--r--  1 agc  agc          9 Nov  9 17:55 ip -> 
10.4.0.42
        1649760492 lrw-r--r--  1 agc  agc         16 Nov  9 17:55 product -> 
NetBSD iSCSI
        1681692777 -rw-r--r--  1 agc  agc  104857088 Nov  9 17:55 storage
         424238335 lrw-r--r--  1 agc  agc         43 Nov  9 17:55 targetname -> 
iqn.1994-04.org.netbsd.iscsi-target:target0
         719885386 lrw-r--r--  1 agc  agc          8 Nov  9 17:55 vendor -> 
NetBSD
         596516649 lrw-r--r--  1 agc  agc          4 Nov  9 17:55 version -> 0
        [9:27:09] agc@inspiron1300 ...examples/refuse/iscsi-initiator 434 >

So I decided to take some of the high bits out of the inode numbers. 

This is just for the virtual directory routines, so it's no big deal.

I suppose I could have tried 31 bits first, but just using 20 bits is
fine for me, since it is unlikely to have virtual file systems with
anything more than a few hundred entries, if that.

Regards,
Alistair



Home | Main Index | Thread Index | Old Index