Petr,

NCPFS in 2.2.18-pre21 is not returning volume size via df -h.  I checked
your code and found this comment:

static int ncp_statfs(struct super_block *sb, struct statfs *buf, int bufsiz)
{
        struct statfs tmp;

        /* We cannot say how much disk space is left on a mounted
           NetWare Server, because free space is distributed over
           volumes, and the current user might have disk quotas. So
           free space is not that simple to determine. Our decision
           here is to err conservatively. */

        tmp.f_type = NCP_SUPER_MAGIC;
        tmp.f_bsize = 512;
        tmp.f_blocks = 0;
        tmp.f_bfree = 0;
        tmp.f_bavail = 0;
        tmp.f_files = -1;
        tmp.f_ffree = -1;
        tmp.f_namelen = 12;
        return copy_to_user(buf, &tmp, bufsiz) ? -EFAULT : 0;
}

NCP Code

2222/17E6   Get Object's Remaining Disk Space

(I have docs on this one and can send if you need it).

will return in NetWare sized blocks the space remaining for this 
user (which will be the user ID used to login).  The fact that quota's 
are present for a user (user space restriction node -- in NWDIR.H) 
should be irrelevant, since from the view of a Linux client attached to 
a NetWare server, this is their assigned storage.

This NCP also speaks in hardcoded blocksizes of 4096 bytes, so that's 
the factor for free space for whatever login ID was used to mount 
the NetWare Volume that can be used in ncpfs_statfs() to return 
free space.

I have not gone through your userspace code as of yet, but to make 
this work, you need the ObjectID for the User Account you used to
connect to the server in order to make this work.  

I noticed I could not get free space from my Server with NCPFS with
df -h, and tracked it down.  Several NetWare customers migrating 
installations of NetWare to Linux pointed it out when they were 
moving Oracle databases over to Linux from NetWare.

I noticed that 2.4 also is not reporting Volume free space.  

The current NCPFS code, like a lot of Linux code, is structured
in a manner that's very different from Novell's internal code,
(the names are shorter for one, which is an improvement).  The 
way the NCP codes are peeled off is different and not the 
large case and switch structure employed in NetWare, so it's
a little hard for me to follow since I am used to NCPs being 
grouped into case/switch classes.  If you can point me to 
where 1) the login ID is stored and B) where NCP packet 
request/reponse headers are constructed, i.e. a skeleton 
to send/receive the requests I can grab, I'll try to 
code this for you.

:-)

Jeff 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to