summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h4
-rw-r--r--source3/include/smb.h1
-rw-r--r--source3/locking/locking.c46
-rw-r--r--source3/modules/onefs_open.c5
-rw-r--r--source3/smbd/open.c5
-rw-r--r--source3/smbd/reply.c2
6 files changed, 6 insertions, 57 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index d0ad361701..2ba01b30ed 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3455,7 +3455,7 @@ bool is_valid_share_mode_entry(const struct share_mode_entry *e);
bool is_deferred_open_entry(const struct share_mode_entry *e);
bool is_unused_share_mode_entry(const struct share_mode_entry *e);
void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
- uid_t uid, uint16 mid, uint16 op_type, bool initial_delete_on_close_allowed);
+ uid_t uid, uint16 mid, uint16 op_type);
void add_deferred_open(struct share_mode_lock *lck, uint16 mid,
struct timeval request_time,
struct file_id id);
@@ -3465,11 +3465,9 @@ bool remove_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
bool downgrade_share_oplock(struct share_mode_lock *lck, files_struct *fsp);
NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
uint32 dosmode);
-bool can_set_initial_delete_on_close(const struct share_mode_lock *lck);
void set_delete_on_close_token(struct share_mode_lock *lck, UNIX_USER_TOKEN *tok);
void set_delete_on_close_lck(struct share_mode_lock *lck, bool delete_on_close, UNIX_USER_TOKEN *tok);
bool set_delete_on_close(files_struct *fsp, bool delete_on_close, UNIX_USER_TOKEN *tok);
-bool set_allow_initial_delete_on_close(struct share_mode_lock *lck, files_struct *fsp, bool delete_on_close);
bool set_sticky_write_time(struct file_id fileid, struct timespec write_time);
bool set_write_time(struct file_id fileid, struct timespec write_time);
int share_mode_forall(void (*fn)(const struct share_mode_entry *, const char *,
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 39673e1ff7..112b4e0f91 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -710,7 +710,6 @@ struct pending_message_list {
};
#define SHARE_MODE_FLAG_POSIX_OPEN 0x1
-#define SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE 0x2
/* struct returned by get_share_modes */
struct share_mode_entry {
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index 33717f1bb9..a70f9d20fe 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -1067,13 +1067,10 @@ static void add_share_mode_entry(struct share_mode_lock *lck,
}
void set_share_mode(struct share_mode_lock *lck, files_struct *fsp,
- uid_t uid, uint16 mid, uint16 op_type, bool initial_delete_on_close_allowed)
+ uid_t uid, uint16 mid, uint16 op_type)
{
struct share_mode_entry entry;
fill_share_mode_entry(&entry, fsp, uid, mid, op_type);
- if (initial_delete_on_close_allowed) {
- entry.flags |= SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE;
- }
add_share_mode_entry(lck, &entry);
}
@@ -1271,22 +1268,6 @@ NTSTATUS can_set_delete_on_close(files_struct *fsp, bool delete_on_close,
return NT_STATUS_OK;
}
-/****************************************************************************
- Do we have an open file handle that created this entry ?
-****************************************************************************/
-
-bool can_set_initial_delete_on_close(const struct share_mode_lock *lck)
-{
- int i;
-
- for (i=0; i<lck->num_share_modes; i++) {
- if (lck->share_modes[i].flags & SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE) {
- return True;
- }
- }
- return False;
-}
-
/*************************************************************************
Return a talloced copy of a UNIX_USER_TOKEN. NULL on fail.
(Should this be in locking.c.... ?).
@@ -1380,31 +1361,6 @@ bool set_delete_on_close(files_struct *fsp, bool delete_on_close, UNIX_USER_TOKE
return True;
}
-/****************************************************************************
- Sets the allow initial delete on close flag for this share mode.
-****************************************************************************/
-
-bool set_allow_initial_delete_on_close(struct share_mode_lock *lck, files_struct *fsp, bool delete_on_close)
-{
- struct share_mode_entry entry, *e;
-
- /* Don't care about the pid owner being correct here - just a search. */
- fill_share_mode_entry(&entry, fsp, (uid_t)-1, 0, NO_OPLOCK);
-
- e = find_share_mode_entry(lck, &entry);
- if (e == NULL) {
- return False;
- }
-
- if (delete_on_close) {
- e->flags |= SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE;
- } else {
- e->flags &= ~SHARE_MODE_ALLOW_INITIAL_DELETE_ON_CLOSE;
- }
- lck->modified = True;
- return True;
-}
-
bool set_sticky_write_time(struct file_id fileid, struct timespec write_time)
{
struct share_mode_lock *lck;
diff --git a/source3/modules/onefs_open.c b/source3/modules/onefs_open.c
index bda5e7e91a..d0310d0174 100644
--- a/source3/modules/onefs_open.c
+++ b/source3/modules/onefs_open.c
@@ -1182,7 +1182,7 @@ NTSTATUS onefs_open_file_ntcreate(connection_struct *conn,
}
set_share_mode(lck, fsp, conn->server_info->utok.uid, 0,
- fsp->oplock_type, true);
+ fsp->oplock_type);
/* Handle strange delete on close create semantics. */
if (create_options & FILE_DELETE_ON_CLOSE) {
@@ -1521,8 +1521,7 @@ static NTSTATUS onefs_open_directory(connection_struct *conn,
return NT_STATUS_DELETE_PENDING;
}
- set_share_mode(lck, fsp, conn->server_info->utok.uid, 0, NO_OPLOCK,
- true);
+ set_share_mode(lck, fsp, conn->server_info->utok.uid, 0, NO_OPLOCK);
/*
* For directories the delete on close bit at open time seems
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 8882e5438b..77ad1664ef 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1981,7 +1981,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
}
set_share_mode(lck, fsp, conn->server_info->utok.uid, 0,
- fsp->oplock_type, new_file_created);
+ fsp->oplock_type);
/* Handle strange delete on close create semantics. */
if (create_options & FILE_DELETE_ON_CLOSE) {
@@ -2419,8 +2419,7 @@ static NTSTATUS open_directory(connection_struct *conn,
return status;
}
- set_share_mode(lck, fsp, conn->server_info->utok.uid, 0, NO_OPLOCK,
- True);
+ set_share_mode(lck, fsp, conn->server_info->utok.uid, 0, NO_OPLOCK);
/* For directories the delete on close bit at open time seems
always to be honored on close... See test 19 in Samba4 BASE-DELETE. */
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 00c744ce1a..9f7a1896b8 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -5583,8 +5583,6 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
* depends on these semantics. JRA.
*/
- set_allow_initial_delete_on_close(lck, fsp, True);
-
if (create_options & FILE_DELETE_ON_CLOSE) {
status = can_set_delete_on_close(fsp, True, 0);