diff options
author | Jeremy Allison <jra@samba.org> | 2007-03-01 23:57:37 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:18:21 -0500 |
commit | b9408304db9a64d9b8ad56f53532825a02fdb150 (patch) | |
tree | f0df28f4e9d0708654ed19dcdbebe16a916980f9 /source/modules | |
parent | 98f4b64574ef205ec87401b4bf5eed89f2933fa1 (diff) | |
download | samba-b9408304db9a64d9b8ad56f53532825a02fdb150.tar.gz |
r21646: Patch from SATOH Fumiyasu <fumiyas@osstech.co.jp>
- add minsize parameter. Bug #4409.
Jeremy.
Diffstat (limited to 'source/modules')
-rw-r--r-- | source/modules/vfs_recycle.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/source/modules/vfs_recycle.c b/source/modules/vfs_recycle.c index 121454315fb..cc0a2a10e2b 100644 --- a/source/modules/vfs_recycle.c +++ b/source/modules/vfs_recycle.c @@ -153,17 +153,28 @@ static const char **recycle_noversions(vfs_handle_struct *handle) return tmp_lp; } -static int recycle_maxsize(vfs_handle_struct *handle) +static SMB_OFF_T recycle_maxsize(vfs_handle_struct *handle) { - int maxsize; + SMB_OFF_T maxsize; - maxsize = lp_parm_int(SNUM(handle->conn), "recycle", "maxsize", -1); + maxsize = lp_parm_ulong(SNUM(handle->conn), "recycle", "maxsize", 0); - DEBUG(10, ("recycle: maxsize = %d\n", maxsize)); + DEBUG(10, ("recycle: maxsize = %lu\n", maxsize)); return maxsize; } +static SMB_OFF_T recycle_minsize(vfs_handle_struct *handle) +{ + SMB_OFF_T minsize; + + minsize = lp_parm_ulong(SNUM(handle->conn), "recycle", "minsize", 0); + + DEBUG(10, ("recycle: minsize = %lu\n", minsize)); + + return minsize; +} + static mode_t recycle_directory_mode(vfs_handle_struct *handle) { int dirmode; @@ -381,7 +392,7 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name) const char *base; char *repository = NULL; int i = 1; - int maxsize; + SMB_OFF_T maxsize, minsize; SMB_OFF_T file_size; /* space_avail; */ BOOL exist; int rc = -1; @@ -431,6 +442,12 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name) rc = SMB_VFS_NEXT_UNLINK(handle, file_name); goto done; } + minsize = recycle_minsize(handle); + if(minsize > 0 && file_size < minsize) { + DEBUG(3, ("recycle: File %s lowers minimum recycle size, purging... \n", file_name)); + rc = SMB_VFS_NEXT_UNLINK(handle, file_name); + goto done; + } /* FIXME: this is wrong: moving files with rename does not change the disk space * allocation |