summaryrefslogtreecommitdiff
path: root/source3/modules
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-12-18 15:40:05 -0800
committerJeremy Allison <jra@samba.org>2008-12-18 15:40:05 -0800
commit4283ae489b6e227beba196e8a315a9727f03cc07 (patch)
tree7308561653b9e52eab8fc13181c0ad41ae2da208 /source3/modules
parentf9bb8fbe832409893b17f2113d7b35b9ffe91540 (diff)
parentd031472227b44d040698e6dff52dc79028fde854 (diff)
downloadsamba-4283ae489b6e227beba196e8a315a9727f03cc07.tar.gz
samba-4283ae489b6e227beba196e8a315a9727f03cc07.tar.bz2
samba-4283ae489b6e227beba196e8a315a9727f03cc07.zip
Merge branch 'master' of ssh://jra@git.samba.org/data/git/samba
Diffstat (limited to 'source3/modules')
-rw-r--r--source3/modules/vfs_onefs.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/source3/modules/vfs_onefs.c b/source3/modules/vfs_onefs.c
index b51858fbae..b902812498 100644
--- a/source3/modules/vfs_onefs.c
+++ b/source3/modules/vfs_onefs.c
@@ -38,6 +38,32 @@ static int onefs_open(vfs_handle_struct *handle, const char *fname,
return SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode);
}
+static int onefs_statvfs(vfs_handle_struct *handle, const char *path,
+ vfs_statvfs_struct *statbuf)
+{
+ struct statvfs statvfs_buf;
+ int result;
+
+ DEBUG(5, ("Calling SMB_STAT_VFS \n"));
+ result = statvfs(path, &statvfs_buf);
+ ZERO_STRUCTP(statbuf);
+
+ if (!result) {
+ statbuf->OptimalTransferSize = statvfs_buf.f_iosize;
+ statbuf->BlockSize = statvfs_buf.f_bsize;
+ statbuf->TotalBlocks = statvfs_buf.f_blocks;
+ statbuf->BlocksAvail = statvfs_buf.f_bfree;
+ statbuf->UserBlocksAvail = statvfs_buf.f_bavail;
+ statbuf->TotalFileNodes = statvfs_buf.f_files;
+ statbuf->FreeFileNodes = statvfs_buf.f_ffree;
+ statbuf->FsIdentifier =
+ (((uint64_t)statvfs_buf.f_fsid.val[0]<<32) &
+ 0xffffffff00000000LL) |
+ (uint64_t)statvfs_buf.f_fsid.val[1];
+ }
+ return result;
+}
+
static vfs_op_tuple onefs_ops[] = {
{SMB_VFS_OP(onefs_mkdir), SMB_VFS_OP_MKDIR,
SMB_VFS_LAYER_OPAQUE},
@@ -51,6 +77,8 @@ static vfs_op_tuple onefs_ops[] = {
SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(onefs_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL,
SMB_VFS_LAYER_OPAQUE},
+ {SMB_VFS_OP(onefs_statvfs), SMB_VFS_OP_STATVFS,
+ SMB_VFS_LAYER_OPAQUE},
{SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
};