summaryrefslogtreecommitdiff
path: root/source3/locking
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2002-07-15 10:35:28 +0000
committerAndrew Tridgell <tridge@samba.org>2002-07-15 10:35:28 +0000
commite90b65284812aaa5ff9e9935ce9bbad7791cbbcd (patch)
tree9e744d1dc2f93934a4b49166a37383d3cb2b2139 /source3/locking
parentec167dc9cc0ec2ee461837c25a371d2981744208 (diff)
downloadsamba-e90b65284812aaa5ff9e9935ce9bbad7791cbbcd.tar.gz
samba-e90b65284812aaa5ff9e9935ce9bbad7791cbbcd.tar.bz2
samba-e90b65284812aaa5ff9e9935ce9bbad7791cbbcd.zip
updated the 3.0 branch from the head branch - ready for alpha18
(This used to be commit 03ac082dcb375b6f3ca3d810a6a6367542bc23ce)
Diffstat (limited to 'source3/locking')
-rw-r--r--source3/locking/brlock.c23
-rw-r--r--source3/locking/locking.c7
2 files changed, 21 insertions, 9 deletions
diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c
index e7fa4022f6..8c22f7d7ab 100644
--- a/source3/locking/brlock.c
+++ b/source3/locking/brlock.c
@@ -162,6 +162,10 @@ static BOOL brl_conflict_other(struct lock_struct *lck1, struct lock_struct *lck
}
+#if DONT_DO_THIS
+ /* doing this traversal could kill solaris machines under high load (tridge) */
+ /* delete any dead locks */
+
/****************************************************************************
Delete a record if it is for a dead process, if check_self is true, then
delete any records belonging to this pid also (there shouldn't be any).
@@ -215,6 +219,7 @@ static int delete_fn(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void *stat
tdb_chainunlock(tdb, kbuf);
return 0;
}
+#endif
/****************************************************************************
Open up the brlock.tdb database.
@@ -222,8 +227,6 @@ static int delete_fn(TDB_CONTEXT *ttdb, TDB_DATA kbuf, TDB_DATA dbuf, void *stat
void brl_init(int read_only)
{
- BOOL check_self = False;
-
if (tdb)
return;
tdb = tdb_open_log(lock_path("brlock.tdb"), 0, TDB_DEFAULT|(read_only?0x0:TDB_CLEAR_IF_FIRST),
@@ -233,9 +236,14 @@ void brl_init(int read_only)
return;
}
+#if DONT_DO_THIS
+ /* doing this traversal could kill solaris machines under high load (tridge) */
/* delete any dead locks */
- if (!read_only)
+ if (!read_only) {
+ BOOL check_self = False;
tdb_traverse(tdb, delete_fn, &check_self);
+ }
+#endif
}
/****************************************************************************
@@ -244,14 +252,17 @@ void brl_init(int read_only)
void brl_shutdown(int read_only)
{
- BOOL check_self = True;
-
if (!tdb)
return;
+#if DONT_DO_THIS
+ /* doing this traversal could kill solaris machines under high load (tridge) */
/* delete any dead locks */
- if (!read_only)
+ if (!read_only) {
+ BOOL check_self = True;
tdb_traverse(tdb, delete_fn, &check_self);
+ }
+#endif
tdb_close(tdb);
}
diff --git a/source3/locking/locking.c b/source3/locking/locking.c
index 87df805250..d42d041b79 100644
--- a/source3/locking/locking.c
+++ b/source3/locking/locking.c
@@ -681,6 +681,7 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
int i;
share_mode_entry *shares;
BOOL need_store=False;
+ BOOL ret = True;
/* read in the existing share modes */
dbuf = tdb_fetch(tdb, locking_key(dev, inode));
@@ -702,15 +703,15 @@ static BOOL mod_share_mode( SMB_DEV_T dev, SMB_INO_T inode, share_mode_entry *en
if (need_store) {
if (data->u.num_share_mode_entries == 0) {
if (tdb_delete(tdb, locking_key(dev, inode)) == -1)
- need_store = False;
+ ret = False;
} else {
if (tdb_store(tdb, locking_key(dev, inode), dbuf, TDB_REPLACE) == -1)
- need_store = False;
+ ret = False;
}
}
SAFE_FREE(dbuf.dptr);
- return need_store;
+ return ret;
}
/*******************************************************************