From 840802f10677cb0009cb4df4c37c7d01aa5edacd Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 30 Jul 2001 22:21:31 +0000 Subject: [PATCH] Added "use mmap" for HPUX. Jeremy. --- source/groupdb/mapping.c | 2 +- source/include/smb_macros.h | 1 + source/lib/messages.c | 2 +- source/libsmb/unexpected.c | 2 +- source/locking/brlock.c | 2 +- source/locking/locking.c | 2 +- source/param/loadparm.c | 4 ++++ source/passdb/pdb_tdb.c | 14 +++++++------- source/passdb/secrets.c | 2 +- source/printing/nt_printing.c | 6 +++--- source/rpc_server/srv_srvsvc_nt.c | 2 +- source/smbd/connection.c | 2 +- source/smbd/session.c | 2 +- source/utils/smbcontrol.c | 2 +- source/utils/status.c | 2 +- source/web/statuspage.c | 2 +- 16 files changed, 27 insertions(+), 22 deletions(-) diff --git a/source/groupdb/mapping.c b/source/groupdb/mapping.c index a86283b5567..97e75515866 100644 --- a/source/groupdb/mapping.c +++ b/source/groupdb/mapping.c @@ -130,7 +130,7 @@ BOOL init_group_mapping(void) char *vstring = "INFO/version"; if (tdb && local_pid == sys_getpid()) return True; - tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, 0, O_RDWR|O_CREAT, 0600); + tdb = tdb_open_log(lock_path("group_mapping.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!tdb) { DEBUG(0,("Failed to open group mapping database\n")); return False; diff --git a/source/include/smb_macros.h b/source/include/smb_macros.h index b168d68862f..e1deaf58ea0 100644 --- a/source/include/smb_macros.h +++ b/source/include/smb_macros.h @@ -258,4 +258,5 @@ copy an IP address from one buffer to another #define vfs_chdir(conn,fname) ((conn)->vfs_ops.chdir((conn),fname)) +#define USE_TDB_MMAP_FLAG (!lp_use_mmap() ? TDB_NOMMAP : TDB_DEFAULT) #endif /* _SMB_MACROS_H */ diff --git a/source/lib/messages.c b/source/lib/messages.c index ffa873960e7..78cd3e22bc2 100644 --- a/source/lib/messages.c +++ b/source/lib/messages.c @@ -90,7 +90,7 @@ BOOL message_init(void) if (tdb) return True; tdb = tdb_open_log(lock_path("messages.tdb"), - 0, TDB_CLEAR_IF_FIRST, + 0, TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT,0600); if (!tdb) { diff --git a/source/libsmb/unexpected.c b/source/libsmb/unexpected.c index d757551963b..109e2b454ab 100644 --- a/source/libsmb/unexpected.c +++ b/source/libsmb/unexpected.c @@ -50,7 +50,7 @@ void unexpected_packet(struct packet_struct *p) if (!tdbd) { tdbd = tdb_open_log(lock_path("unexpected.tdb"), 1, - TDB_CLEAR_IF_FIRST, + TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, O_RDWR | O_CREAT, 0644); if (!tdbd) { DEBUG(0,("Failed to open unexpected.tdb\n")); diff --git a/source/locking/brlock.c b/source/locking/brlock.c index 7f3ec6757e3..1982d9982c2 100644 --- a/source/locking/brlock.c +++ b/source/locking/brlock.c @@ -176,7 +176,7 @@ void brl_init(int read_only) if (tdb) return; - tdb = tdb_open_log(lock_path("brlock.tdb"), 0, TDB_CLEAR_IF_FIRST, + tdb = tdb_open_log(lock_path("brlock.tdb"), 0, TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, read_only?O_RDONLY:(O_RDWR|O_CREAT), 0644); if (!tdb) { DEBUG(0,("Failed to open byte range locking database\n")); diff --git a/source/locking/locking.c b/source/locking/locking.c index 067b1dc0ddf..9b393ed6bac 100644 --- a/source/locking/locking.c +++ b/source/locking/locking.c @@ -295,7 +295,7 @@ BOOL locking_init(int read_only) return True; tdb = tdb_open_log(lock_path("locking.tdb"), - 0, TDB_CLEAR_IF_FIRST, + 0, TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, read_only?O_RDONLY:O_RDWR|O_CREAT, 0644); diff --git a/source/param/loadparm.c b/source/param/loadparm.c index 079711cab8f..a1871437ac3 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -258,6 +258,7 @@ typedef struct BOOL bHostMSDfs; BOOL bHideLocalUsers; BOOL bUnicode; + BOOL bUseMmap; } global; @@ -799,6 +800,7 @@ static struct parm_struct parm_table[] = { {"stat cache size", P_INTEGER, P_GLOBAL, &Globals.stat_cache_size, NULL, NULL, 0}, {"strict sync", P_BOOL, P_LOCAL, &sDefault.bStrictSync, NULL, NULL, FLAG_SHARE}, {"sync always", P_BOOL, P_LOCAL, &sDefault.bSyncAlways, NULL, NULL, FLAG_SHARE}, + {"use mmap", P_BOOL, P_GLOBAL, &Globals.bUseMmap, NULL, NULL, 0}, {"write cache size", P_INTEGER, P_LOCAL, &sDefault.iWriteCacheSize, NULL, NULL, FLAG_SHARE}, {"Printing Options", P_SEP, P_SEPARATOR}, @@ -1264,6 +1266,7 @@ static void init_globals(void) Globals.min_passwd_length = MINPASSWDLENGTH; /* By Default, 5. */ Globals.oplock_break_wait_time = 0; /* By Default, 0 msecs. */ Globals.enhanced_browsing = True; + Globals.bUseMmap = True; #ifdef WITH_LDAP /* default values for ldap */ @@ -1533,6 +1536,7 @@ FN_GLOBAL_BOOL(lp_lanman_auth, &Globals.bLanmanAuth) FN_GLOBAL_BOOL(lp_host_msdfs, &Globals.bHostMSDfs) FN_GLOBAL_BOOL(lp_kernel_oplocks, &Globals.bKernelOplocks) FN_GLOBAL_BOOL(lp_enhanced_browsing, &Globals.enhanced_browsing) +FN_GLOBAL_BOOL(lp_use_mmap, &Globals.bUseMmap) FN_GLOBAL_INTEGER(lp_os_level, &Globals.os_level) FN_GLOBAL_INTEGER(lp_max_ttl, &Globals.max_ttl) FN_GLOBAL_INTEGER(lp_max_wins_ttl, &Globals.max_wins_ttl) diff --git a/source/passdb/pdb_tdb.c b/source/passdb/pdb_tdb.c index 5ee7a379152..fc19f279181 100644 --- a/source/passdb/pdb_tdb.c +++ b/source/passdb/pdb_tdb.c @@ -344,10 +344,10 @@ BOOL pdb_setsampwent(BOOL update) pstrcat (tdbfile, PASSDB_FILE_NAME); /* Open tdb passwd */ - if (!(global_tdb_ent.passwd_tdb = tdb_open_log(tdbfile, 0, 0, update ? O_RDWR : O_RDONLY, 0600))) + if (!(global_tdb_ent.passwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, update ? O_RDWR : O_RDONLY, 0600))) { DEBUG(0, ("Unable to open TDB passwd, trying create new!\n")); - if (!(global_tdb_ent.passwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDWR | O_CREAT | O_EXCL, 0600))) + if (!(global_tdb_ent.passwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDWR | O_CREAT | O_EXCL, 0600))) { DEBUG(0, ("Unable to create TDB passwd (passdb.tdb) !!!")); return False; @@ -476,7 +476,7 @@ BOOL pdb_getsampwnam (SAM_ACCOUNT *user, char *sname) key.dsize = strlen (keystr) + 1; /* open the accounts TDB */ - if (!(pwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDONLY, 0600))) + if (!(pwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDONLY, 0600))) { DEBUG(0, ("pdb_getsampwnam: Unable to open TDB passwd!\n")); return False; @@ -577,7 +577,7 @@ BOOL pdb_getsampwrid (SAM_ACCOUNT *user, uint32 rid) key.dsize = strlen (keystr) + 1; /* open the accounts TDB */ - if (!(pwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDONLY, 0600))) + if (!(pwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDONLY, 0600))) { DEBUG(0, ("pdb_getsampwrid: Unable to open TDB rid database!\n")); return False; @@ -622,7 +622,7 @@ BOOL pdb_delete_sam_account(char *sname) pstrcat (tdbfile, PASSDB_FILE_NAME); /* open the TDB */ - if (!(pwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDWR, 0600))) + if (!(pwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDWR, 0600))) { DEBUG(0, ("Unable to open TDB passwd!")); return False; @@ -744,13 +744,13 @@ static BOOL tdb_update_sam(SAM_ACCOUNT* newpwd, BOOL override, int flag) } /* open the account TDB passwd*/ - if (!(pwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDWR, 0600))) + if (!(pwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDWR, 0600))) { DEBUG(0, ("tdb_update_sam: Unable to open TDB passwd!\n")); if (flag == TDB_INSERT) { DEBUG(0, ("Unable to open TDB passwd, trying create new!\n")); - if (!(pwd_tdb = tdb_open_log(tdbfile, 0, 0, O_RDWR | O_CREAT | O_EXCL, 0600))) + if (!(pwd_tdb = tdb_open_log(tdbfile, 0, USE_TDB_MMAP_FLAG, O_RDWR | O_CREAT | O_EXCL, 0600))) { DEBUG(0, ("Unable to create TDB passwd (passdb.tdb) !!!\n")); return False; diff --git a/source/passdb/secrets.c b/source/passdb/secrets.c index 12b340dfe59..d95810bf611 100644 --- a/source/passdb/secrets.c +++ b/source/passdb/secrets.c @@ -36,7 +36,7 @@ BOOL secrets_init(void) pstrcpy(fname, lp_private_dir()); pstrcat(fname,"/secrets.tdb"); - tdb = tdb_open_log(fname, 0, 0, O_RDWR|O_CREAT, 0600); + tdb = tdb_open_log(fname, 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!tdb) { DEBUG(0,("Failed to open %s\n", fname)); diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index 10da46501ac..57011dc9cc2 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -223,21 +223,21 @@ BOOL nt_printing_init(void) if (tdb_drivers && tdb_printers && tdb_forms && local_pid == sys_getpid()) return True; - tdb_drivers = tdb_open_log(lock_path("ntdrivers.tdb"), 0, 0, O_RDWR|O_CREAT, 0600); + tdb_drivers = tdb_open_log(lock_path("ntdrivers.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!tdb_drivers) { DEBUG(0,("Failed to open nt drivers database %s (%s)\n", lock_path("ntdrivers.tdb"), strerror(errno) )); return False; } - tdb_printers = tdb_open_log(lock_path("ntprinters.tdb"), 0, 0, O_RDWR|O_CREAT, 0600); + tdb_printers = tdb_open_log(lock_path("ntprinters.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!tdb_printers) { DEBUG(0,("Failed to open nt printers database %s (%s)\n", lock_path("ntprinters.tdb"), strerror(errno) )); return False; } - tdb_forms = tdb_open_log(lock_path("ntforms.tdb"), 0, 0, O_RDWR|O_CREAT, 0600); + tdb_forms = tdb_open_log(lock_path("ntforms.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!tdb_forms) { DEBUG(0,("Failed to open nt forms database %s (%s)\n", lock_path("ntforms.tdb"), strerror(errno) )); diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c index 78d9429b435..913b04bca39 100644 --- a/source/rpc_server/srv_srvsvc_nt.c +++ b/source/rpc_server/srv_srvsvc_nt.c @@ -125,7 +125,7 @@ BOOL share_info_db_init(void) char *vstring = "INFO/version"; if (share_tdb && local_pid == sys_getpid()) return True; - share_tdb = tdb_open_log(lock_path("share_info.tdb"), 0, 0, O_RDWR|O_CREAT, 0600); + share_tdb = tdb_open_log(lock_path("share_info.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDWR|O_CREAT, 0600); if (!share_tdb) { DEBUG(0,("Failed to open share info database %s (%s)\n", lock_path("share_info.tdb"), strerror(errno) )); diff --git a/source/smbd/connection.c b/source/smbd/connection.c index 07ded5f4a36..df586979171 100644 --- a/source/smbd/connection.c +++ b/source/smbd/connection.c @@ -119,7 +119,7 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO BOOL ret = True; if (!tdb) { - tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST, + tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, O_RDWR | O_CREAT, 0644); } if (!tdb) diff --git a/source/smbd/session.c b/source/smbd/session.c index 8f6907c5378..7616689fe0c 100644 --- a/source/smbd/session.c +++ b/source/smbd/session.c @@ -62,7 +62,7 @@ BOOL session_claim(uint16 vuid) } if (!tdb) { - tdb = tdb_open_log(lock_path("sessionid.tdb"), 0, TDB_CLEAR_IF_FIRST, + tdb = tdb_open_log(lock_path("sessionid.tdb"), 0, TDB_CLEAR_IF_FIRST|USE_TDB_MMAP_FLAG, O_RDWR | O_CREAT, 0644); if (!tdb) { DEBUG(1,("session_claim: failed to open sessionid tdb\n")); diff --git a/source/utils/smbcontrol.c b/source/utils/smbcontrol.c index fef4ded218b..088ce0c08ed 100644 --- a/source/utils/smbcontrol.c +++ b/source/utils/smbcontrol.c @@ -131,7 +131,7 @@ static BOOL send_message(char *dest, int msg_type, void *buf, int len, BOOL dupl TDB_CONTEXT *tdb; BOOL ret; - tdb = tdb_open_log(lock_path("connections.tdb"), 0, 0, O_RDONLY, 0); + tdb = tdb_open_log(lock_path("connections.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDONLY, 0); if (!tdb) { fprintf(stderr,"Failed to open connections database in send_message.\n"); return False; diff --git a/source/utils/status.c b/source/utils/status.c index ea683ad19c2..e5beb6403c8 100644 --- a/source/utils/status.c +++ b/source/utils/status.c @@ -316,7 +316,7 @@ static int traverse_fn1(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *st return profile_dump(); } - tdb = tdb_open_log(lock_path("connections.tdb"), 0, 0, O_RDONLY, 0); + tdb = tdb_open_log(lock_path("connections.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDONLY, 0); if (!tdb) { printf("connections.tdb not initialised\n"); if (!lp_status(-1)) diff --git a/source/web/statuspage.c b/source/web/statuspage.c index 2efc37a0510..dc26e86ef88 100644 --- a/source/web/statuspage.c +++ b/source/web/statuspage.c @@ -187,7 +187,7 @@ void status_page(void) refresh_interval = atoi(v); } - tdb = tdb_open_log(lock_path("connections.tdb"), 0, 0, O_RDONLY, 0); + tdb = tdb_open_log(lock_path("connections.tdb"), 0, USE_TDB_MMAP_FLAG, O_RDONLY, 0); if (tdb) tdb_traverse(tdb, traverse_fn1, NULL); printf("

Server Status

\n"); -- 2.34.1