From beb5afea54e279e348779c5b01070803ed59c775 Mon Sep 17 00:00:00 2001 From: Christian Ambach Date: Fri, 8 Oct 2010 13:43:17 +0200 Subject: s3:gpfs: Add support for the gpfs_ftruncate call ported from the v3-4-ctdb branch to master This used to be commit 1f138cc9f4a Autobuild-User: Volker Lendecke Autobuild-Date: Wed Oct 13 13:34:25 UTC 2010 on sn-devel-104 --- source3/modules/gpfs.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'source3/modules/gpfs.c') diff --git a/source3/modules/gpfs.c b/source3/modules/gpfs.c index c8fb88d92e..cad765e966 100644 --- a/source3/modules/gpfs.c +++ b/source3/modules/gpfs.c @@ -26,6 +26,7 @@ static bool gpfs_getrealfilename; static bool gpfs_winattr; +static bool gpfs_do_ftruncate; static int (*gpfs_set_share_fn)(int fd, unsigned int allow, unsigned int deny); static int (*gpfs_set_lease_fn)(int fd, unsigned int leaseType); @@ -36,7 +37,7 @@ static int (*gpfs_get_realfilename_path_fn)(char *pathname, char *filenamep, static int (*gpfs_set_winattrs_path_fn)(char *pathname, int flags, struct gpfs_winattr *attrs); static int (*gpfs_get_winattrs_path_fn)(char *pathname, struct gpfs_winattr *attrs); static int (*gpfs_get_winattrs_fn)(int fd, struct gpfs_winattr *attrs); - +static int (*gpfs_ftruncate_fn)(int fd, gpfs_off64_t length); bool set_gpfs_sharemode(files_struct *fsp, uint32 access_mask, uint32 share_access) @@ -131,6 +132,16 @@ int smbd_gpfs_putacl(char *pathname, int flags, void *acl) return gpfs_putacl_fn(pathname, flags, acl); } +int smbd_gpfs_ftruncate(int fd, gpfs_off64_t length) +{ + if (!gpfs_do_ftruncate || (gpfs_ftruncate_fn == NULL)) { + errno = ENOSYS; + return -1; + } + + return gpfs_ftruncate_fn(fd, length); +} + int smbd_gpfs_get_realfilename_path(char *pathname, char *filenamep, int *buflen) { @@ -237,11 +248,12 @@ void init_gpfs(void) init_gpfs_function(&gpfs_get_winattrs_path_fn,"gpfs_get_winattrs_path"); init_gpfs_function(&gpfs_set_winattrs_path_fn,"gpfs_set_winattrs_path"); init_gpfs_function(&gpfs_get_winattrs_fn,"gpfs_get_winattrs"); - + init_gpfs_function(&gpfs_ftruncate_fn, "gpfs_ftruncate"); gpfs_getrealfilename = lp_parm_bool(-1, "gpfs", "getrealfilename", True); gpfs_winattr = lp_parm_bool(-1, "gpfs", "winattr", False); + gpfs_do_ftruncate = lp_parm_bool(-1, "gpfs", "ftruncate", True); return; } -- cgit