summaryrefslogtreecommitdiff
path: root/source3/smbd/close.c
AgeCommit message (Collapse)AuthorFilesLines
2010-06-04Fix a long-standing bug with async io that would only be triggered by SMB2.Jeremy Allison1-5/+5
On normal or shutdown close, ensure we wait for any pending IO to complete before returning. Implement a blocking aio_suspend inside vfs_aio_fork.c. These changes pass make test when the aio_fork module is used by default on the test shares. Jeremy.
2010-05-07Make us pass all SMB2 lock tests except MULTIPLE-UNLOCK and CONTEXT. Them ↵Jeremy Allison1-1/+1
next :-). Jeremy.
2010-05-06s3: only include gen_ndr headers where needed.Günther Deschner1-0/+1
This shrinks include/includes.h.gch by the size of 7 MB and reduces build time as follows: ccache build w/o patch real 4m21.529s ccache build with patch real 3m6.402s pch build w/o patch real 4m26.318s pch build with patch real 3m6.932s Guenther
2010-04-09Plumb SMB2 stubs into all the places we defer SMB1 operations.Jeremy Allison1-1/+1
Rename functions to be internally consistent. Next step is to cope queueing single (non-compounded) SMB2 requests to put some code inside the stubs. Jeremy.
2010-03-15Switch over to using get_currect_XXX() accessor functions.Jeremy Allison1-7/+5
Jeremy.
2010-03-15Rever e80ceb1d7355c8c46a2ed90d5721cf367640f4e8 "Remove more uses of "extern ↵Jeremy Allison1-5/+7
struct current_user current_user;"." As requested by Volker, split this into smaller commits. Jeremy.
2010-03-12Remove more uses of "extern struct current_user current_user;".Jeremy Allison1-7/+5
Use accessor functions to get to this value. Tidies up much of the user context code. Volker, please look at the changes in smbd/uid.c to familiarize yourself with these changes as I think they make the logic in there cleaner. Cause smbd/posix_acls.c code to look at current user context, not stored context on the conn struct - allows correct use of these function calls under a become_root()/unbecome_root() pair. Jeremy.
2010-01-12Fix bug #7033 - SMBrmdir call always returns true, even on failure to delete ↵Jeremy Allison1-2/+6
a directory. Argh. Missed the second (and essential) part of the fix for the above :-(. Jeremy
2010-01-12Fix bug #6876 - Delete of an object whose parent folder does not have delete ↵Jeremy Allison1-0/+3
rights fails even if the delete right is set on the object. Final fix for the vfs_acl_xattr and vfs_acl_tdb code. Ensure we can delete a file even if the underlying POSIX permissions don't allow it, if the Windows permissions do. Jeremy.
2009-12-03Refactor reply_rmdir to use handle based code. AllJeremy Allison1-2/+258
calls are now handle based. Put rmdir into close.c and make it private. Jeremy.
2009-11-29s3: "check_magic" only looks at the sizeVolker Lendecke1-1/+1
2009-11-29s3: Pass the "fake dir create times" parameter to sys_*statVolker Lendecke1-1/+1
Step 0 to restore it as a per-share paramter
2009-11-05Got the logic simplification worked out so we still passJeremy Allison1-22/+37
BASE-DELAYWRITE and also RAW-CLOSE. Jeremy.
2009-11-05Revert commit "0551284dc08eb93ef7b2b2227a45e5ec21d482fb" - simplifyJeremy Allison1-7/+27
the logic. This was incorrect (I'll revisit this tomorrow). Jeremy.
2009-11-05Simplify the logic - remove extraneous argument and calls to ↵Jeremy Allison1-27/+7
set_close_write_time(). We were treating a file time set on close as a sticky write time set, and I don't think it is. I will add a torture test later to RAW-CLOSE to confirm this. Jeremy.
2009-11-05Fix explicit set of write time on close.Jeremy Allison1-1/+5
Jeremy.
2009-11-05Get closer to an accurate model of Windows timestamp changes.Jeremy Allison1-2/+19
"Normal" non truncate writes always cause the timestamp to be set on close. Once a close is done on a handle this can reset the sticky write time to current time also. Updated smbtorture4 confirms this. Jeremy.
2009-10-02Remove lots of duplicate code and move it into oneJeremy Allison1-22/+7
function vfs_stat_fsp(). Stops code looking at fsp->posix_open except for exceptional circumstances. Jeremy.
2009-08-19s3:smbd: store a dirptr on the files_struct for SMB2 Query DirectoryStefan Metzmacher1-0/+4
metze
2009-07-21s3: Remove unnecessary callers of get_full_smb_filenameTim Prouty1-4/+1
This often times means explicitly denying certain operations on a stream as they are not supported or don't make sense at a particular level. At some point in the future these can be enabled, but for now it's better to remove ambiguity
2009-07-20s3: Change fsp->fsp_name to be an smb_filename struct!Tim Prouty1-93/+70
2009-07-06s3: Plumb smb_filename through SMB_VFS_NTIMESTim Prouty1-14/+21
2009-07-06s3: Plumb smb_filename through SMB_VFS_UNLINKTim Prouty1-35/+67
2009-06-24s3: Plumb smb_filename through SMB_VFS_STAT and SMB_VFS_LSTATTim Prouty1-4/+6
This patch introduces two new temporary helper functions vfs_stat_smb_fname and vfs_lstat_smb_fname. They basically allowed me to call the new smb_filename version of stat, while avoiding plumbing it through callers that are still too inconvenient. As the conversion moves along, I will be able to remove callers of this, with the goal being to remove all callers. There was also a bug in create_synthetic_smb_fname_split (also a temporary utility function) that caused it to incorrectly handle filenames with ':'s in them when in posix mode. This is now fixed.
2009-06-12Check for error in transfer_file return also.Jeremy Allison1-1/+7
Jeremy.
2009-06-12Fix bug 6440Volker Lendecke1-11/+19
Don't ignore the close error of the output file in check_magic()
2009-06-12Simplify close_normal_file()Volker Lendecke1-22/+21
2009-05-26Introduce "struct stat_ex" as a replacement for SMB_STRUCT_STATVolker Lendecke1-1/+1
This patch introduces struct stat_ex { dev_t st_ex_dev; ino_t st_ex_ino; mode_t st_ex_mode; nlink_t st_ex_nlink; uid_t st_ex_uid; gid_t st_ex_gid; dev_t st_ex_rdev; off_t st_ex_size; struct timespec st_ex_atime; struct timespec st_ex_mtime; struct timespec st_ex_ctime; struct timespec st_ex_btime; /* birthtime */ blksize_t st_ex_blksize; blkcnt_t st_ex_blocks; }; typedef struct stat_ex SMB_STRUCT_STAT; It is really large because due to the friendly libc headers playing macro tricks with fields like st_ino, so I renamed them to st_ex_xxx. Why this change? To support birthtime, we already have quite a few #ifdef's at places where it does not really belong. With a stat struct that we control, we can consolidate the nanosecond timestamps and the birthtime deep in the VFS stat calls. At this moment it is triggered by a request to support the birthtime field for GPFS. GPFS does not extend the system level struct stat, but instead has a separate call that gets us the additional information beyond posix. Without being able to do that within the VFS stat calls, that support would have to be scattered around the main smbd code. It will very likely break all the onefs modules, but I think the changes will be reasonably easy to do.
2009-02-25Fix more POSIX path lstat calls. Fix bug where close can returnJeremy Allison1-5/+17
failure if we have a pending modtime and the containing directory of the file has been renamed (there is no POSIX "update time by fd" call). This can't happen on Windows as the rename will fail if there are open files beneath it. Will add a torture test for this. Jeremy.
2009-02-09s3 oplocks: Remove oplocks before handling delete on close semanticsTim Prouty1-4/+5
Unlinking a file while still holding an oplock can cause problems with kernel oplocks. This simply releases the oplock before actually unlinking the file.
2009-02-09s3 oplocks: Add capabilites flags field to the kernel_oplocks structTim Prouty1-0/+4
Here is a short description for each of the new capability flags: KOPLOCKS_LEVEL2_SUPPORTED: Level 2 oplocks are supported natively in the kernel. KOPLOCKS_DEFERRED_OPEN_NOTIFICATION: The kernel notifies deferred openers when they can retry the open. KOPLOCKS_TIMEOUT_NOTIFICATION: The kernel notifies smbds when an oplock break times out. KOPLOCKS_OPLOCK_BROKEN_NOTIFICATION: The kernel notifies smbds when an oplock is broken.
2009-01-23Extend NTIMES to allow setting create_timetodd stecher1-4/+4
1) Add in smb_file_time struct to clarify code and make room for createtime. 2) Get and set create time from SMB messages. 3) Fixup existing VFS modules + examples Some OS'es allow for the setting of the birthtime through kernel interfaces. This value is generically used for Windows createtime, but is not settable in the code today.
2009-01-09s3: Add delete_all_streams to proto.hTim Prouty1-1/+1
2009-01-06Fix bug #6017, - magic script does not work. based on a patch from ↵Jeremy Allison1-3/+13
monyo@samba.gr.jp. Jeremy.
2008-12-09s3: Call fd_close from close_directoryTim Prouty1-0/+7
Some implementations of SMB_VFS_CREATE_FILE implementations actually keep an fd open for directories just as files. In this case it is necessary to call fd_close when closing directories. This is safe because fd_close is a no-op when fd == -1, which is true for directory opens originating from open.c (the default SMB_VFS_CREATE_FILE implementation).
2008-11-21First part of fix for bug #5903 - vfs_streams_xattr breaks contents of the file.Jeremy Allison1-5/+3
Restructures parts of open code so that fsp must be allocated before calling open_file_ntcreate(_internal). Also fix up file ref-counting inside files.c. Jeremy.
2008-10-13Pass struct smb_request to file_freeVolker Lendecke1-11/+14
on the way to get rid of chain_fsp
2008-05-27Allow server manager to close open files selected by id.Jeremy Allison1-0/+34
Jeremy. (This used to be commit 7eeed8bb41059ec2bddedb6a71deddeec7f33af2)
2008-05-10Remove "user" from connection_structVolker Lendecke1-1/+1
(This used to be commit 368454a27cb53a408ec416cbf37235b304592fb5)
2008-05-02Remove the "stat_open()" function, flag, and all associated code. It was onlyJeremy Allison1-16/+0
being (correctly) used in the can_read/can_write checks for hide unreadable/unwritable and this is more properly done using the functions in smbd/file_access.c. Preparing to do NT access checks on all file access. Jeremy. (This used to be commit 6bfb06ad95963ae2acb67c4694a98282d3b29faa)
2008-04-07smbd: implement the strange write time update logicStefan Metzmacher1-5/+73
We now never call file_ntimes() directly, every update is done via smb_set_file_time(). This let samba3 pass the BASE-DELAYWRITE test. The write time is only updated 2 seconds after the first write() on any open handle to the current time (not the time of the first write). Each handle which had write requests updates the write time to the current time on close(). If the write time is set explicit via setfileinfo or setpathinfo the write time is visible directly and a following close on the same handle doesn't update the write time. metze (This used to be commit 2eab212ea2e1bfd8fa716c2c89b2c042f7ba12ea)
2008-04-07locking: store the write time in the locking.tdbStefan Metzmacher1-2/+4
This is needed to implement the strange write time update logic later. We need to store 2 time timestamps to distinguish between the time the file system had before the first client opened the file and a forced timestamp update. metze (This used to be commit 6aaa2ce0eeb46f6735ec984a2e7aadde7a7f456d)
2008-04-01smbd: always close the base_fsp even if the real close returned an errorStefan Metzmacher1-4/+0
Otherwise we may end up with share mode entry without an open file. Volker, Jeremy: please check... metze (This used to be commit 547eacf6058d2bc5b41b266b70f8f4747aca4eae)
2008-01-19Add streams supportVolker Lendecke1-4/+111
This is the core of the streams support. The main change is that in files_struct there is now a base_fsp pointer that holds the main file open while a stream is open. This is necessary to get the rather strange delete semantics right: You can't delete the main file while a stream is open without FILE_SHARE_DELETE, and while a stream is open a successful unlink of the main file leads to DELETE_PENDING for all further access on the main file or any stream. (This used to be commit 6022873cc155bdbbd3fb620689715f07a24d6ed1)
2008-01-11Fix a build warning.Günther Deschner1-0/+1
Guenther (This used to be commit 88874a501d0c086f796e4838af8c9399d3cccc1f)
2008-01-10Don't switch user contexts unless you have to. SavesJeremy Allison1-14/+25
a bunch of syscalls on close. Noticed by Volker. Jeremy. (This used to be commit 3caeeaea162e2083a087c242b850c107a3be1bf9)
2008-01-10use talloc_tos in a few more placesVolker Lendecke1-2/+2
(This used to be commit 65dd869bea351010c67f02046ae4134bdada1a4c)
2007-12-22Remove redundant connection_struct from check_magic() parameter list.Michael Adam1-2/+3
Michael (This used to be commit cebaa483e62910ac3f87cd135b2aff18dc880416)
2007-12-22Remove redundant connection_struct from fd_close() parameter list.Michael Adam1-1/+1
Michael (This used to be commit 3611cc8561cf837adea83fc7c16ca7535f188466)
2007-11-23smbd: close_stat() should be staticStefan Metzmacher1-1/+1
metze (This used to be commit e186b60afacfb609968b581a6d32757e1885a319)