From: Jeremy Allison Date: Wed, 12 Aug 2009 23:27:17 +0000 (-0700) Subject: When mapping EA's into a TDB, don't remove the EA X-Git-Tag: talloc-2.0.0~396 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d91edeaa94c54a190a0c90bbd63156fdf670c26a;p=thirdparty%2Fsamba.git When mapping EA's into a TDB, don't remove the EA until the last link to the file is gone (fixes the build farm RAW-RENAME test with xattr's in tdb's). Jeremy. --- diff --git a/source3/modules/vfs_xattr_tdb.c b/source3/modules/vfs_xattr_tdb.c index a058c824e75..55fb1417b71 100644 --- a/source3/modules/vfs_xattr_tdb.c +++ b/source3/modules/vfs_xattr_tdb.c @@ -620,6 +620,7 @@ static int xattr_tdb_unlink(vfs_handle_struct *handle, struct db_record *rec; NTSTATUS status; int ret = -1; + bool remove_record = false; SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1); @@ -632,6 +633,10 @@ static int xattr_tdb_unlink(vfs_handle_struct *handle, if (SMB_VFS_STAT(handle->conn, smb_fname_tmp) == -1) { goto out; } + if (smb_fname_tmp->st.st_ex_nlink == 1) { + /* Only remove record on last link to file. */ + remove_record = true; + } ret = SMB_VFS_NEXT_UNLINK(handle, smb_fname_tmp); @@ -639,6 +644,10 @@ static int xattr_tdb_unlink(vfs_handle_struct *handle, goto out; } + if (!remove_record) { + goto out; + } + id = SMB_VFS_FILE_ID_CREATE(handle->conn, &smb_fname_tmp->st); rec = xattr_tdb_lock_attrs(talloc_tos(), db, &id);