mirror of
https://github.com/samba-team/samba.git
synced 2025-09-14 21:44:19 +03:00
s3: VFS: vfs_snapper. Implement linkat().
Currently identical to link(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Ralph Böhme <slow@samba.org>
This commit is contained in:
@@ -2099,6 +2099,42 @@ static int snapper_gmt_link(vfs_handle_struct *handle,
|
|||||||
return SMB_VFS_NEXT_LINK(handle, old_smb_fname, new_smb_fname);
|
return SMB_VFS_NEXT_LINK(handle, old_smb_fname, new_smb_fname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int snapper_gmt_linkat(vfs_handle_struct *handle,
|
||||||
|
files_struct *srcfsp,
|
||||||
|
const struct smb_filename *old_smb_fname,
|
||||||
|
files_struct *dstfsp,
|
||||||
|
const struct smb_filename *new_smb_fname,
|
||||||
|
int flags)
|
||||||
|
{
|
||||||
|
time_t timestamp_old = 0;
|
||||||
|
time_t timestamp_new = 0;
|
||||||
|
|
||||||
|
if (!snapper_gmt_strip_snapshot(talloc_tos(),
|
||||||
|
handle,
|
||||||
|
old_smb_fname->base_name,
|
||||||
|
×tamp_old,
|
||||||
|
NULL)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (!snapper_gmt_strip_snapshot(talloc_tos(),
|
||||||
|
handle,
|
||||||
|
new_smb_fname->base_name,
|
||||||
|
×tamp_new,
|
||||||
|
NULL)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if ((timestamp_old != 0) || (timestamp_new != 0)) {
|
||||||
|
errno = EROFS;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return SMB_VFS_NEXT_LINKAT(handle,
|
||||||
|
srcfsp,
|
||||||
|
old_smb_fname,
|
||||||
|
dstfsp,
|
||||||
|
new_smb_fname,
|
||||||
|
flags);
|
||||||
|
}
|
||||||
|
|
||||||
static int snapper_gmt_stat(vfs_handle_struct *handle,
|
static int snapper_gmt_stat(vfs_handle_struct *handle,
|
||||||
struct smb_filename *smb_fname)
|
struct smb_filename *smb_fname)
|
||||||
{
|
{
|
||||||
@@ -2863,6 +2899,7 @@ static struct vfs_fn_pointers snapper_fns = {
|
|||||||
.get_quota_fn = snapper_gmt_get_quota,
|
.get_quota_fn = snapper_gmt_get_quota,
|
||||||
.renameat_fn = snapper_gmt_renameat,
|
.renameat_fn = snapper_gmt_renameat,
|
||||||
.link_fn = snapper_gmt_link,
|
.link_fn = snapper_gmt_link,
|
||||||
|
.linkat_fn = snapper_gmt_linkat,
|
||||||
.symlink_fn = snapper_gmt_symlink,
|
.symlink_fn = snapper_gmt_symlink,
|
||||||
.stat_fn = snapper_gmt_stat,
|
.stat_fn = snapper_gmt_stat,
|
||||||
.lstat_fn = snapper_gmt_lstat,
|
.lstat_fn = snapper_gmt_lstat,
|
||||||
|
Reference in New Issue
Block a user