[Samba] Disk free space, quotas and GPFS

Jeremy Allison jra at samba.org
Wed Jun 8 10:25:07 MDT 2011


On Wed, Jun 08, 2011 at 05:15:04PM +0100, Jonathan Buzzard wrote:
> 
> On Tue, 2011-06-07 at 10:11 -0700, Jeremy Allison wrote:
> 
> [SNIP]
> 
> > > I am guessing that standard quota calls don't work on GPFS file systems.
> > 
> > Probably true. If you know how GPFS reports quotas we can
> > add the code for a later release. We have quota hooks in
> > the Samba VFS, so we could add this to the gpfs vfs module.
> > 
> 
> A couple of hours hacking around and I have a small C program for the
> dfree command option that makes various GPFS calls to provide the
> information to Samba and it works great with one caveat. That is it does
> not appear to be working for home directory shares.
> 
> Anyway pretty simple really, as I suspected gpfs_quotactl gets the
> information required, though with fileset quotas you need to call
> gpfs_fcntl to get the fileset name for the path and then
> gpfs_getfilesetid to turn that name into a numerical ID for
> gpfs_quotactl.
> 
> I would prefer to role this into the GPFS VFS module, but it would be
> helpful if there where some pointers somewhere on how the quota hooks in
> the Samba VFS layer work. Some example code would be sufficient.

Look at the code in source3/modules/vfs_default.c - specifically
vfswrap_get_quota(), vfswrap_set_quota() (which are for manipulating
quotas on behalf of users) and also vfswrap_disk_free().

vfswrap_disk_free() is the most important one for reporting space,
it calls into sys_disk_free() which then branches into ugly
#ifdef-ed code to get system specific quotas. You might just
be able to replace vfswrap_disk_free() for gpfs to make the
correct gpfs calls and return the normalized 

uint64_t *bsize,
uint64_t *dfree,
uint64_t *dsize

values.

Jeremy.


More information about the samba mailing list