NCPFS not returning Volume Size (???)

From: Jeff V. Merkey (jmerkey@vger.timpanogas.org)
Date: Thu Nov 16 2000 - 22:40:29 EST


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 majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Nov 23 2000 - 21:00:12 EST