mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
s3:locking: add file_has_open_streams()
This can be used to check if a file opened by fsp also has stream opens. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13451 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
37e7ff05ab
commit
dd8cf54c79
@ -1316,3 +1316,34 @@ struct timespec get_share_mode_write_time(struct share_mode_lock *lck)
|
||||
}
|
||||
return d->old_write_time;
|
||||
}
|
||||
|
||||
bool file_has_open_streams(files_struct *fsp)
|
||||
{
|
||||
struct share_mode_lock *lock = NULL;
|
||||
struct share_mode_data *d = NULL;
|
||||
uint32_t i;
|
||||
|
||||
lock = get_existing_share_mode_lock(talloc_tos(), fsp->file_id);
|
||||
if (lock == NULL) {
|
||||
return false;
|
||||
}
|
||||
d = lock->data;
|
||||
|
||||
for (i = 0; i < d->num_share_modes; i++) {
|
||||
struct share_mode_entry *e = &d->share_modes[i];
|
||||
|
||||
if (share_mode_stale_pid(d, i)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (e->private_options &
|
||||
NTCREATEX_OPTIONS_PRIVATE_STREAM_BASEOPEN)
|
||||
{
|
||||
TALLOC_FREE(lock);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
TALLOC_FREE(lock);
|
||||
return false;
|
||||
}
|
||||
|
@ -207,6 +207,7 @@ bool is_delete_on_close_set(struct share_mode_lock *lck, uint32_t name_hash);
|
||||
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);
|
||||
struct timespec get_share_mode_write_time(struct share_mode_lock *lck);
|
||||
bool file_has_open_streams(files_struct *fsp);
|
||||
int share_mode_forall(int (*fn)(struct file_id fid,
|
||||
const struct share_mode_data *data,
|
||||
void *private_data),
|
||||
|
Loading…
Reference in New Issue
Block a user