Using dbgtext for logging
Dan Cohen1
DANCOH at il.ibm.com
Wed Jul 31 03:00:18 MDT 2013
Hi,
While doing some work on samba logging I've noticed that there are several
places in the samba code where logging is done directly using the dbgtext
function. For example: in source3/smbd/oplock.c:initial_break_processing
(line 267):
static files_struct *initial_break_processing(
struct smbd_server_connection *sconn, struct file_id id,
unsigned long file_id)
{
files_struct *fsp = NULL;
if( DEBUGLVL( 3 ) ) {
dbgtext( "initial_break_processing: called for %s/%u\n",
file_id_string_tos(&id), (int)file_id);
dbgtext( "Current oplocks_open (exclusive = %d, levelII = %d)\n",
sconn->oplocks.exclusive_open,
sconn->oplocks.level_II_open);
}
/*
* We need to search the file open table for the
* entry containing this dev and inode, and ensure
* we have an oplock on it.
*/
fsp = file_find_dif(sconn, id, file_id);
if(fsp == NULL) {
/* The file could have been closed in the meantime - return
success. */
if( DEBUGLVL( 3 ) ) {
dbgtext( "initial_break_processing: cannot find open file with
" );
dbgtext( "file_id %s gen_id = %lu", file_id_string_tos(&id),
file_id);
dbgtext( "allowing break to succeed.\n" );
}
return NULL;
}
/* Ensure we have an oplock on the file */
/*
* There is a potential race condition in that an oplock could
* have been broken due to another udp request, and yet there are
* still oplock break messages being sent in the udp message
* queue for this file. So return true if we don't have an oplock,
* as we may have just freed it.
*/
if(fsp->oplock_type == NO_OPLOCK) {
if( DEBUGLVL( 3 ) ) {
dbgtext( "initial_break_processing: file %s ",
fsp_str_dbg(fsp));
dbgtext( "(file_id = %s gen_id = %lu) has no oplock.\n",
file_id_string_tos(&id), fsp->fh->gen_id );
dbgtext( "Allowing break to succeed regardless.\n" );
}
return NULL;
}
return fsp;
}
Calling directly to dbgtext happens also in a few other files such as
source3/smbd/service.c, source3/smbd/posix_acl.c and more.
This method of logging is on contrary to most of the samba code where
logging is done using the logging macros DEBUG, DEBUGC etc.
Is avoiding the log macros done in those files deliberately? Is it done
from any particular reason? Or is it just leftovers from old code or
something like that?
Thanks,
Dan Cohen
IBM - XIV, Israel
NAS Development Team
More information about the samba-technical
mailing list