summaryrefslogtreecommitdiff
path: root/source3/modules
diff options
context:
space:
mode:
authorTim Prouty <tprouty@samba.org>2009-02-15 23:45:28 -0800
committerTim Prouty <tprouty@samba.org>2009-02-19 20:58:26 -0800
commite4675ce8db436ac572fcc476b9bfb1116e997f9f (patch)
tree7381a8a3aa92536fbfa58a75dee450f1f26d66ce /source3/modules
parent6fbebb5369211b72545a1dd588bc6b9fa04210a1 (diff)
downloadsamba-e4675ce8db436ac572fcc476b9bfb1116e997f9f.tar.gz
samba-e4675ce8db436ac572fcc476b9bfb1116e997f9f.tar.bz2
samba-e4675ce8db436ac572fcc476b9bfb1116e997f9f.zip
s3: Add extid to the dev/inode pair
This extends the file_id struct to add an additional generic uint64_t field: extid. For backwards compatibility with dev/inodes stored in xattr_tdbs and acl_tdbs, the ext id is ignored for these databases. This patch should cause no functional change on systems that don't use SMB_VFS_FILE_ID_CREATE to set the extid. Existing code that uses the smb_share_mode library will need to be updated to be compatibile with the new extid.
Diffstat (limited to 'source3/modules')
-rw-r--r--source3/modules/vfs_acl_tdb.c6
-rw-r--r--source3/modules/vfs_default.c1
-rw-r--r--source3/modules/vfs_xattr_tdb.c3
3 files changed, 10 insertions, 0 deletions
diff --git a/source3/modules/vfs_acl_tdb.c b/source3/modules/vfs_acl_tdb.c
index 57fe73c814..909de9d7c8 100644
--- a/source3/modules/vfs_acl_tdb.c
+++ b/source3/modules/vfs_acl_tdb.c
@@ -94,6 +94,8 @@ static struct db_record *acl_tdb_lock(TALLOC_CTX *mem_ctx,
const struct file_id *id)
{
uint8 id_buf[16];
+
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, id);
return db->fetch_locked(db,
mem_ctx,
@@ -200,6 +202,7 @@ static NTSTATUS get_acl_blob(TALLOC_CTX *ctx,
}
id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, &id);
if (db->fetch(db,
@@ -285,6 +288,7 @@ static NTSTATUS store_acl_blob_fsp(vfs_handle_struct *handle,
}
id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, &id);
rec = db->fetch_locked(db, talloc_tos(),
make_tdb_data(id_buf,
@@ -325,6 +329,8 @@ static NTSTATUS store_acl_blob_pathname(vfs_handle_struct *handle,
}
id = vfs_file_id_from_sbuf(handle->conn, &sbuf);
+
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, &id);
rec = db->fetch_locked(db, talloc_tos(),
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index c18ec268d3..7384268dae 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -1053,6 +1053,7 @@ static struct file_id vfswrap_file_id_create(struct vfs_handle_struct *handle,
key.devid = sbuf->st_dev;
key.inode = sbuf->st_ino;
+ /* key.extid is unused by default. */
return key;
}
diff --git a/source3/modules/vfs_xattr_tdb.c b/source3/modules/vfs_xattr_tdb.c
index 908a2a3872..4e37ed6477 100644
--- a/source3/modules/vfs_xattr_tdb.c
+++ b/source3/modules/vfs_xattr_tdb.c
@@ -100,6 +100,7 @@ static NTSTATUS xattr_tdb_load_attrs(TALLOC_CTX *mem_ctx,
NTSTATUS status;
TDB_DATA data;
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, id);
if (db_ctx->fetch(db_ctx, mem_ctx,
@@ -122,6 +123,8 @@ static struct db_record *xattr_tdb_lock_attrs(TALLOC_CTX *mem_ctx,
const struct file_id *id)
{
uint8 id_buf[16];
+
+ /* For backwards compatibility only store the dev/inode. */
push_file_id_16((char *)id_buf, id);
return db_ctx->fetch_locked(db_ctx, mem_ctx,
make_tdb_data(id_buf, sizeof(id_buf)));