Merge pull request #275 from ggtakec/master

Changed and cleaned the logic for debug message.
This commit is contained in:
Takeshi Nakatani 2015-10-01 05:01:39 +09:00
commit e29069b8dc
11 changed files with 725 additions and 612 deletions

View File

@ -201,6 +201,14 @@ If this option is specified with nocopapi, the s3fs ignores it.
.TP .TP
\fB\-o\fR use_path_request_style (use legacy API calling style) \fB\-o\fR use_path_request_style (use legacy API calling style)
Enble compatibility with S3-like APIs which do not support the virtual-host request style, by using the older path request style. Enble compatibility with S3-like APIs which do not support the virtual-host request style, by using the older path request style.
.TP
\fB\-o\fR dbglevel (default="crit")
Set the debug message level. set value as crit(critical), err(error), warn(warning), info(information) to debug level. default debug level is critical.
If s3fs run with "-d" option, the debug level is set information.
When s3fs catch the signal SIGUSR2, the debug level is bumpup.
.TP
\fB\-o\fR curldbg - put curl debug message
Put the debug message from libcurl when this option is specified.
.SH FUSE/MOUNT OPTIONS .SH FUSE/MOUNT OPTIONS
.TP .TP
Most of the generic mount options described in 'man mount' are supported (ro, rw, suid, nosuid, dev, nodev, exec, noexec, atime, noatime, sync async, dirsync). Filesystems are mounted with '\-onodev,nosuid' by default, which can only be overridden by a privileged user. Most of the generic mount options described in 'man mount' are supported (ro, rw, suid, nosuid, dev, nodev, exec, noexec, atime, noatime, sync async, dirsync). Filesystems are mounted with '\-onodev,nosuid' by default, which can only be overridden by a privileged user.

View File

@ -164,11 +164,11 @@ bool StatCache::GetStat(string& key, struct stat* pst, headers_t* meta, bool ove
} }
if(is_delete_cache){ if(is_delete_cache){
// not hit by different ETag // not hit by different ETag
DPRNNN("stat cache not hit by ETag[path=%s][time=%jd][hit count=%lu][ETag(%s)!=(%s)]", S3FS_PRN_DBG("stat cache not hit by ETag[path=%s][time=%jd][hit count=%lu][ETag(%s)!=(%s)]",
strpath.c_str(), (intmax_t)(ent->cache_date), ent->hit_count, petag ? petag : "null", ent->meta["ETag"].c_str()); strpath.c_str(), (intmax_t)(ent->cache_date), ent->hit_count, petag ? petag : "null", ent->meta["ETag"].c_str());
}else{ }else{
// hit // hit
DPRNNN("stat cache hit [path=%s][time=%jd][hit count=%lu]", strpath.c_str(), (intmax_t)(ent->cache_date), ent->hit_count); S3FS_PRN_DBG("stat cache hit [path=%s][time=%jd][hit count=%lu]", strpath.c_str(), (intmax_t)(ent->cache_date), ent->hit_count);
if(pst!= NULL){ if(pst!= NULL){
*pst= ent->stbuf; *pst= ent->stbuf;
@ -245,7 +245,7 @@ bool StatCache::AddStat(std::string& key, headers_t& meta, bool forcedir)
if(CacheSize< 1){ if(CacheSize< 1){
return true; return true;
} }
DPRNNN("add stat cache entry[path=%s]", key.c_str()); S3FS_PRN_INFO3("add stat cache entry[path=%s]", key.c_str());
pthread_mutex_lock(&StatCache::stat_cache_lock); pthread_mutex_lock(&StatCache::stat_cache_lock);
@ -307,7 +307,7 @@ bool StatCache::AddNoObjectCache(string& key)
if(CacheSize < 1){ if(CacheSize < 1){
return true; return true;
} }
DPRNNN("add no object cache entry[path=%s]", key.c_str()); S3FS_PRN_INFO3("add no object cache entry[path=%s]", key.c_str());
pthread_mutex_lock(&StatCache::stat_cache_lock); pthread_mutex_lock(&StatCache::stat_cache_lock);
@ -364,7 +364,7 @@ bool StatCache::TruncateCache(void)
} }
} }
if(stat_cache.end() != iter_to_delete){ if(stat_cache.end() != iter_to_delete){
DPRNNN("truncate stat cache[path=%s]", (*iter_to_delete).first.c_str()); S3FS_PRN_DBG("truncate stat cache[path=%s]", (*iter_to_delete).first.c_str());
if((*iter_to_delete).second){ if((*iter_to_delete).second){
delete (*iter_to_delete).second; delete (*iter_to_delete).second;
} }
@ -382,7 +382,7 @@ bool StatCache::DelStat(const char* key)
if(!key){ if(!key){
return false; return false;
} }
DPRNNN("delete stat cache entry[path=%s]", key); S3FS_PRN_INFO3("delete stat cache entry[path=%s]", key);
pthread_mutex_lock(&StatCache::stat_cache_lock); pthread_mutex_lock(&StatCache::stat_cache_lock);

View File

@ -28,56 +28,80 @@
// //
#define SAFESTRPTR(strptr) (strptr ? strptr : "") #define SAFESTRPTR(strptr) (strptr ? strptr : "")
// for debug //
#define FPRINT_NEST_SPACE_0 "" // Debug level
#define FPRINT_NEST_SPACE_1 " " //
#define FPRINT_NEST_SPACE_2 " " enum s3fs_log_level{
#define FPRINT_NEST_CHECK(NEST) \ S3FS_LOG_CRIT = 0, // LOG_CRIT
(0 == NEST ? FPRINT_NEST_SPACE_0 : 1 == NEST ? FPRINT_NEST_SPACE_1 : FPRINT_NEST_SPACE_2) S3FS_LOG_ERR = 1, // LOG_ERR
S3FS_LOG_WARN = 3, // LOG_WARNING
S3FS_LOG_INFO = 7, // LOG_INFO
S3FS_LOG_DBG = 15 // LOG_DEBUG
};
#define LOWFPRINT(NEST, ...) \ //
printf("%s%s(%d): ", FPRINT_NEST_CHECK(NEST), __func__, __LINE__); \ // Debug macros
printf(__VA_ARGS__); \ //
printf("\n"); \ #define IS_S3FS_LOG_CRIT() (S3FS_LOG_CRIT == debug_level)
#define IS_S3FS_LOG_ERR() (S3FS_LOG_ERR == (debug_level & S3FS_LOG_DBG))
#define IS_S3FS_LOG_WARN() (S3FS_LOG_WARN == (debug_level & S3FS_LOG_DBG))
#define IS_S3FS_LOG_INFO() (S3FS_LOG_INFO == (debug_level & S3FS_LOG_DBG))
#define IS_S3FS_LOG_DBG() (S3FS_LOG_DBG == (debug_level & S3FS_LOG_DBG))
#define FPRINT(NEST, ...) \ #define S3FS_LOG_LEVEL_TO_SYSLOG(level) \
if(foreground){ \ ( S3FS_LOG_DBG == (level & S3FS_LOG_DBG) ? LOG_DEBUG : \
LOWFPRINT(NEST, __VA_ARGS__); \ S3FS_LOG_INFO == (level & S3FS_LOG_DBG) ? LOG_INFO : \
} S3FS_LOG_WARN == (level & S3FS_LOG_DBG) ? LOG_WARNING : \
S3FS_LOG_ERR == (level & S3FS_LOG_DBG) ? LOG_ERR : LOG_CRIT )
#define FPRINT2(NEST, ...) \ #define S3FS_LOG_LEVEL_STRING(level) \
if(foreground2){ \ ( S3FS_LOG_DBG == (level & S3FS_LOG_DBG) ? "[DBG] " : \
LOWFPRINT(NEST, __VA_ARGS__); \ S3FS_LOG_INFO == (level & S3FS_LOG_DBG) ? "[INF] " : \
} S3FS_LOG_WARN == (level & S3FS_LOG_DBG) ? "[WAN] " : \
S3FS_LOG_ERR == (level & S3FS_LOG_DBG) ? "[ERR] " : "[CRT] " )
#define LOWSYSLOGPRINT(LEVEL, ...) \ #define S3FS_LOG_NEST_MAX 4
syslog(LEVEL, __VA_ARGS__); #define S3FS_LOG_NEST(nest) (nest < S3FS_LOG_NEST_MAX ? s3fs_log_nest[nest] : s3fs_log_nest[S3FS_LOG_NEST_MAX - 1])
#define SYSLOGPRINT(LEVEL, ...) \ #define S3FS_LOW_LOGPRN(level, fmt, ...) \
if(LEVEL <= LOG_CRIT || debug){ \ if(S3FS_LOG_CRIT == level || (S3FS_LOG_CRIT != debug_level && level == (debug_level & level))){ \
LOWSYSLOGPRINT(LEVEL, __VA_ARGS__); \ if(foreground){ \
} fprintf(stdout, "%s%s(%d): " fmt "%s\n", S3FS_LOG_LEVEL_STRING(level), __func__, __LINE__, __VA_ARGS__); \
}else{ \
syslog(S3FS_LOG_LEVEL_TO_SYSLOG(level), "%s(%d): " fmt "%s", __func__, __LINE__, __VA_ARGS__); \
} \
}
#define DPRINT(LEVEL, NEST, ...) \ #define S3FS_LOW_LOGPRN2(level, nest, fmt, ...) \
FPRINT(NEST, __VA_ARGS__); \ if(S3FS_LOG_CRIT == level || (S3FS_LOG_CRIT != debug_level && level == (debug_level & level))){ \
SYSLOGPRINT(LEVEL, __VA_ARGS__); if(foreground){ \
fprintf(stdout, "%s%s" fmt "%s\n", S3FS_LOG_LEVEL_STRING(level), S3FS_LOG_NEST(nest), __VA_ARGS__); \
}else{ \
syslog(S3FS_LOG_LEVEL_TO_SYSLOG(level), "%s" fmt "%s", S3FS_LOG_NEST(nest), __VA_ARGS__); \
} \
}
#define DPRINT2(LEVEL, ...) \ #define S3FS_LOW_LOGPRN_EXIT(fmt, ...) \
FPRINT2(2, __VA_ARGS__); \ if(foreground){ \
SYSLOGPRINT(LEVEL, __VA_ARGS__); fprintf(stderr, "s3fs: " fmt "%s\n", __VA_ARGS__); \
}else{ \
syslog(S3FS_LOG_CRIT, "s3fs: " fmt "%s", __VA_ARGS__); \
}
// print debug message // [NOTE]
#define FPRN(...) FPRINT(0, __VA_ARGS__) // small trick for VA_ARGS
#define FPRNN(...) FPRINT(1, __VA_ARGS__) //
#define FPRNNN(...) FPRINT(2, __VA_ARGS__) #define S3FS_PRN_EXIT(fmt, ...) S3FS_LOW_LOGPRN_EXIT(fmt, ##__VA_ARGS__, "")
#define FPRNINFO(...) FPRINT2(2, __VA_ARGS__) #define S3FS_PRN_CRIT(fmt, ...) S3FS_LOW_LOGPRN(S3FS_LOG_CRIT, fmt, ##__VA_ARGS__, "")
#define S3FS_PRN_ERR(fmt, ...) S3FS_LOW_LOGPRN(S3FS_LOG_ERR, fmt, ##__VA_ARGS__, "")
// print debug message with putting syslog #define S3FS_PRN_WARN(fmt, ...) S3FS_LOW_LOGPRN(S3FS_LOG_WARN, fmt, ##__VA_ARGS__, "")
#define DPRNCRIT(...) DPRINT(LOG_CRIT, 0, __VA_ARGS__) #define S3FS_PRN_DBG(fmt, ...) S3FS_LOW_LOGPRN(S3FS_LOG_DBG, fmt, ##__VA_ARGS__, "")
#define DPRN(...) DPRINT(LOG_ERR, 0, __VA_ARGS__) #define S3FS_PRN_INFO(fmt, ...) S3FS_LOW_LOGPRN2(S3FS_LOG_INFO, 0, fmt, ##__VA_ARGS__, "")
#define DPRNN(...) DPRINT(LOG_DEBUG, 1, __VA_ARGS__) #define S3FS_PRN_INFO0(fmt, ...) S3FS_LOG_INFO(fmt, __VA_ARGS__)
#define DPRNNN(...) DPRINT(LOG_DEBUG, 2, __VA_ARGS__) #define S3FS_PRN_INFO1(fmt, ...) S3FS_LOW_LOGPRN2(S3FS_LOG_INFO, 1, fmt, ##__VA_ARGS__, "")
#define DPRNINFO(...) DPRINT2(LOG_INFO, __VA_ARGS__) #define S3FS_PRN_INFO2(fmt, ...) S3FS_LOW_LOGPRN2(S3FS_LOG_INFO, 2, fmt, ##__VA_ARGS__, "")
#define S3FS_PRN_INFO3(fmt, ...) S3FS_LOW_LOGPRN2(S3FS_LOG_INFO, 3, fmt, ##__VA_ARGS__, "")
#define S3FS_PRN_CURL(fmt, ...) S3FS_LOW_LOGPRN2(S3FS_LOG_CRIT, 0, fmt, ##__VA_ARGS__, "")
// //
// Typedef // Typedef
@ -107,17 +131,17 @@ typedef std::map<std::string, PXATTRVAL> xattrs_t;
// //
// Global valiables // Global valiables
// //
extern bool debug; extern bool foreground;
extern bool foreground; extern bool nomultipart;
extern bool foreground2; extern bool pathrequeststyle;
extern bool nomultipart; extern std::string program_name;
extern bool pathrequeststyle; extern std::string service_path;
extern std::string program_name; extern std::string host;
extern std::string service_path; extern std::string bucket;
extern std::string host; extern std::string mount_prefix;
extern std::string bucket; extern std::string endpoint;
extern std::string mount_prefix; extern s3fs_log_level debug_level;
extern std::string endpoint; extern const char* s3fs_log_nest[S3FS_LOG_NEST_MAX];
#endif // S3FS_COMMON_H_ #endif // S3FS_COMMON_H_

File diff suppressed because it is too large Load Diff

View File

@ -248,6 +248,8 @@ class S3fsCurl
static bool SetIAMCredentials(const char* response); static bool SetIAMCredentials(const char* response);
static bool PushbackSseKeys(std::string& onekey); static bool PushbackSseKeys(std::string& onekey);
static int CurlDebugFunc(CURL* hcurl, curl_infotype type, char* data, size_t size, void* userptr);
// methods // methods
bool ResetHandle(void); bool ResetHandle(void);
bool RemakeHandle(void); bool RemakeHandle(void);

View File

@ -68,7 +68,7 @@ bool CacheFileStat::MakeCacheFileStatPath(const char* path, string& sfile_path,
if(is_create_dir){ if(is_create_dir){
int result; int result;
if(0 != (result = mkdirp(top_path + mydirname(path), 0777))){ if(0 != (result = mkdirp(top_path + mydirname(path), 0777))){
DPRNINFO("failed to create dir(%s) by errno(%d).", path, result); S3FS_PRN_ERR("failed to create dir(%s) by errno(%d).", path, result);
return false; return false;
} }
} }
@ -102,11 +102,11 @@ bool CacheFileStat::DeleteCacheFileStat(const char* path)
// stat path // stat path
string sfile_path; string sfile_path;
if(!CacheFileStat::MakeCacheFileStatPath(path, sfile_path, false)){ if(!CacheFileStat::MakeCacheFileStatPath(path, sfile_path, false)){
DPRNINFO("failed to create cache stat file path(%s)", path); S3FS_PRN_ERR("failed to create cache stat file path(%s)", path);
return false; return false;
} }
if(0 != unlink(sfile_path.c_str())){ if(0 != unlink(sfile_path.c_str())){
DPRNINFO("failed to delete file(%s): errno=%d", path, errno); S3FS_PRN_ERR("failed to delete file(%s): errno=%d", path, errno);
return false; return false;
} }
return true; return true;
@ -157,30 +157,30 @@ bool CacheFileStat::Open(void)
// stat path // stat path
string sfile_path; string sfile_path;
if(!CacheFileStat::MakeCacheFileStatPath(path.c_str(), sfile_path, true)){ if(!CacheFileStat::MakeCacheFileStatPath(path.c_str(), sfile_path, true)){
DPRN("failed to create cache stat file path(%s)", path.c_str()); S3FS_PRN_ERR("failed to create cache stat file path(%s)", path.c_str());
return false; return false;
} }
// open // open
if(-1 == (fd = open(sfile_path.c_str(), O_CREAT|O_RDWR, 0600))){ if(-1 == (fd = open(sfile_path.c_str(), O_CREAT|O_RDWR, 0600))){
DPRNINFO("failed to open cache stat file path(%s) - errno(%d)", path.c_str(), errno); S3FS_PRN_ERR("failed to open cache stat file path(%s) - errno(%d)", path.c_str(), errno);
return false; return false;
} }
// lock // lock
if(-1 == flock(fd, LOCK_EX)){ if(-1 == flock(fd, LOCK_EX)){
DPRN("failed to lock cache stat file(%s) - errno(%d)", path.c_str(), errno); S3FS_PRN_ERR("failed to lock cache stat file(%s) - errno(%d)", path.c_str(), errno);
close(fd); close(fd);
fd = -1; fd = -1;
return false; return false;
} }
// seek top // seek top
if(0 != lseek(fd, 0, SEEK_SET)){ if(0 != lseek(fd, 0, SEEK_SET)){
DPRN("failed to lseek cache stat file(%s) - errno(%d)", path.c_str(), errno); S3FS_PRN_ERR("failed to lseek cache stat file(%s) - errno(%d)", path.c_str(), errno);
flock(fd, LOCK_UN); flock(fd, LOCK_UN);
close(fd); close(fd);
fd = -1; fd = -1;
return false; return false;
} }
DPRNINFO("file locked(%s - %s)", path.c_str(), sfile_path.c_str()); S3FS_PRN_DBG("file locked(%s - %s)", path.c_str(), sfile_path.c_str());
return true; return true;
} }
@ -193,13 +193,13 @@ bool CacheFileStat::Release(void)
} }
// unlock // unlock
if(-1 == flock(fd, LOCK_UN)){ if(-1 == flock(fd, LOCK_UN)){
DPRN("failed to unlock cache stat file(%s) - errno(%d)", path.c_str(), errno); S3FS_PRN_ERR("failed to unlock cache stat file(%s) - errno(%d)", path.c_str(), errno);
return false; return false;
} }
DPRNINFO("file unlocked(%s)", path.c_str()); S3FS_PRN_DBG("file unlocked(%s)", path.c_str());
if(-1 == close(fd)){ if(-1 == close(fd)){
DPRN("failed to close cache stat file(%s) - errno(%d)", path.c_str(), errno); S3FS_PRN_ERR("failed to close cache stat file(%s) - errno(%d)", path.c_str(), errno);
return false; return false;
} }
fd = -1; fd = -1;
@ -406,7 +406,7 @@ bool PageList::Serialize(CacheFileStat& file, bool is_output)
string strall = ssall.str(); string strall = ssall.str();
if(0 >= pwrite(file.GetFd(), strall.c_str(), strall.length(), 0)){ if(0 >= pwrite(file.GetFd(), strall.c_str(), strall.length(), 0)){
DPRN("failed to write stats(%d)", errno); S3FS_PRN_ERR("failed to write stats(%d)", errno);
return false; return false;
} }
@ -417,7 +417,7 @@ bool PageList::Serialize(CacheFileStat& file, bool is_output)
struct stat st; struct stat st;
memset(&st, 0, sizeof(struct stat)); memset(&st, 0, sizeof(struct stat));
if(-1 == fstat(file.GetFd(), &st)){ if(-1 == fstat(file.GetFd(), &st)){
DPRN("fstat is failed. errno(%d)", errno); S3FS_PRN_ERR("fstat is failed. errno(%d)", errno);
return false; return false;
} }
if(0 >= st.st_size){ if(0 >= st.st_size){
@ -427,13 +427,13 @@ bool PageList::Serialize(CacheFileStat& file, bool is_output)
} }
char* ptmp; char* ptmp;
if(NULL == (ptmp = (char*)calloc(st.st_size + 1, sizeof(char)))){ if(NULL == (ptmp = (char*)calloc(st.st_size + 1, sizeof(char)))){
DPRNCRIT("could not allocate memory."); S3FS_PRN_CRIT("could not allocate memory.");
S3FS_FUSE_EXIT(); S3FS_FUSE_EXIT();
return false; return false;
} }
// read from file // read from file
if(0 >= pread(file.GetFd(), ptmp, st.st_size, 0)){ if(0 >= pread(file.GetFd(), ptmp, st.st_size, 0)){
DPRN("failed to read stats(%d)", errno); S3FS_PRN_ERR("failed to read stats(%d)", errno);
free(ptmp); free(ptmp);
return false; return false;
} }
@ -445,7 +445,7 @@ bool PageList::Serialize(CacheFileStat& file, bool is_output)
// load(size) // load(size)
if(!getline(ssall, oneline, '\n')){ if(!getline(ssall, oneline, '\n')){
DPRN("failed to parse stats."); S3FS_PRN_ERR("failed to parse stats.");
free(ptmp); free(ptmp);
return false; return false;
} }
@ -479,14 +479,14 @@ bool PageList::Serialize(CacheFileStat& file, bool is_output)
} }
free(ptmp); free(ptmp);
if(is_err){ if(is_err){
DPRN("failed to parse stats."); S3FS_PRN_ERR("failed to parse stats.");
Clear(); Clear();
return false; return false;
} }
// check size // check size
if(total != Size()){ if(total != Size()){
DPRN("different size(%jd - %jd).", (intmax_t)total, (intmax_t)Size()); S3FS_PRN_ERR("different size(%jd - %jd).", (intmax_t)total, (intmax_t)Size());
Clear(); Clear();
return false; return false;
} }
@ -498,11 +498,11 @@ void PageList::Dump(void)
{ {
int cnt = 0; int cnt = 0;
DPRNINFO("pages = {"); S3FS_PRN_DBG("pages = {");
for(fdpage_list_t::iterator iter = pages.begin(); iter != pages.end(); ++iter, ++cnt){ for(fdpage_list_t::iterator iter = pages.begin(); iter != pages.end(); ++iter, ++cnt){
DPRNINFO(" [%08d] -> {%014jd - %014zu : %s}", cnt, (intmax_t)((*iter)->offset), (*iter)->bytes, (*iter)->init ? "true" : "false"); S3FS_PRN_DBG(" [%08d] -> {%014jd - %014zu : %s}", cnt, (intmax_t)((*iter)->offset), (*iter)->bytes, (*iter)->init ? "true" : "false");
} }
DPRNINFO("}"); S3FS_PRN_DBG("}");
} }
//------------------------------------------------ //------------------------------------------------
@ -515,7 +515,7 @@ FdEntity::FdEntity(const char* tpath, const char* cpath)
pthread_mutex_init(&fdent_lock, NULL); pthread_mutex_init(&fdent_lock, NULL);
is_lock_init = true; is_lock_init = true;
}catch(exception& e){ }catch(exception& e){
DPRNCRIT("failed to init mutex"); S3FS_PRN_CRIT("failed to init mutex");
} }
} }
@ -527,7 +527,7 @@ FdEntity::~FdEntity()
try{ try{
pthread_mutex_destroy(&fdent_lock); pthread_mutex_destroy(&fdent_lock);
}catch(exception& e){ }catch(exception& e){
DPRNCRIT("failed to destroy mutex"); S3FS_PRN_CRIT("failed to destroy mutex");
} }
is_lock_init = false; is_lock_init = false;
} }
@ -541,7 +541,7 @@ void FdEntity::Clear(void)
if(0 != cachepath.size()){ if(0 != cachepath.size()){
CacheFileStat cfstat(path.c_str()); CacheFileStat cfstat(path.c_str());
if(!pagelist.Serialize(cfstat, true)){ if(!pagelist.Serialize(cfstat, true)){
DPRN("failed to save cache stat file(%s).", path.c_str()); S3FS_PRN_WARN("failed to save cache stat file(%s).", path.c_str());
} }
} }
fclose(file); fclose(file);
@ -557,7 +557,7 @@ void FdEntity::Clear(void)
void FdEntity::Close(void) void FdEntity::Close(void)
{ {
FPRNINFO("[path=%s][fd=%d][refcnt=%d]", path.c_str(), fd, (-1 != fd ? refcnt - 1 : refcnt)); S3FS_PRN_INFO3("[path=%s][fd=%d][refcnt=%d]", path.c_str(), fd, (-1 != fd ? refcnt - 1 : refcnt));
if(-1 != fd){ if(-1 != fd){
AutoLock auto_lock(&fdent_lock); AutoLock auto_lock(&fdent_lock);
@ -569,7 +569,7 @@ void FdEntity::Close(void)
if(0 != cachepath.size()){ if(0 != cachepath.size()){
CacheFileStat cfstat(path.c_str()); CacheFileStat cfstat(path.c_str());
if(!pagelist.Serialize(cfstat, true)){ if(!pagelist.Serialize(cfstat, true)){
DPRN("failed to save cache stat file(%s).", path.c_str()); S3FS_PRN_WARN("failed to save cache stat file(%s).", path.c_str());
} }
} }
fclose(file); fclose(file);
@ -581,7 +581,7 @@ void FdEntity::Close(void)
int FdEntity::Dup(void) int FdEntity::Dup(void)
{ {
FPRNINFO("[path=%s][fd=%d][refcnt=%d]", path.c_str(), fd, (-1 != fd ? refcnt + 1 : refcnt)); S3FS_PRN_INFO3("[path=%s][fd=%d][refcnt=%d]", path.c_str(), fd, (-1 != fd ? refcnt + 1 : refcnt));
if(-1 != fd){ if(-1 != fd){
AutoLock auto_lock(&fdent_lock); AutoLock auto_lock(&fdent_lock);
@ -597,7 +597,7 @@ int FdEntity::Open(off_t size, time_t time)
bool is_truncate = false; // need to truncate bool is_truncate = false; // need to truncate
bool init_value = false; // value for pagelist bool init_value = false; // value for pagelist
FPRNINFO("[path=%s][fd=%d][size=%jd][time=%jd]", path.c_str(), fd, (intmax_t)size, (intmax_t)time); S3FS_PRN_INFO3("[path=%s][fd=%d][size=%jd][time=%jd]", path.c_str(), fd, (intmax_t)size, (intmax_t)time);
if(-1 != fd){ if(-1 != fd){
// already opened, needs to increment refcnt. // already opened, needs to increment refcnt.
@ -618,7 +618,7 @@ int FdEntity::Open(off_t size, time_t time)
struct stat st; struct stat st;
memset(&st, 0, sizeof(struct stat)); memset(&st, 0, sizeof(struct stat));
if(-1 == fstat(fd, &st)){ if(-1 == fstat(fd, &st)){
DPRN("fstat is failed. errno(%d)", errno); S3FS_PRN_ERR("fstat is failed. errno(%d)", errno);
fclose(file); fclose(file);
file = NULL; file = NULL;
fd = -1; fd = -1;
@ -638,7 +638,7 @@ int FdEntity::Open(off_t size, time_t time)
}else{ }else{
// file does not exist -> create & open // file does not exist -> create & open
if(-1 == (fd = open(cachepath.c_str(), O_CREAT|O_RDWR|O_TRUNC, 0600))){ if(-1 == (fd = open(cachepath.c_str(), O_CREAT|O_RDWR|O_TRUNC, 0600))){
DPRN("failed to open file(%s). errno(%d)", cachepath.c_str(), errno); S3FS_PRN_ERR("failed to open file(%s). errno(%d)", cachepath.c_str(), errno);
return (0 == errno ? -EIO : -errno); return (0 == errno ? -EIO : -errno);
} }
if(-1 == size){ if(-1 == size){
@ -650,7 +650,7 @@ int FdEntity::Open(off_t size, time_t time)
} }
// make file pointer(for being same tmpfile) // make file pointer(for being same tmpfile)
if(NULL == (file = fdopen(fd, "wb"))){ if(NULL == (file = fdopen(fd, "wb"))){
DPRN("failed to get fileno(%s). errno(%d)", cachepath.c_str(), errno); S3FS_PRN_ERR("failed to get fileno(%s). errno(%d)", cachepath.c_str(), errno);
close(fd); close(fd);
fd = -1; fd = -1;
return (0 == errno ? -EIO : -errno); return (0 == errno ? -EIO : -errno);
@ -659,7 +659,7 @@ int FdEntity::Open(off_t size, time_t time)
}else{ }else{
// open temporary file // open temporary file
if(NULL == (file = tmpfile()) || -1 ==(fd = fileno(file))){ if(NULL == (file = tmpfile()) || -1 ==(fd = fileno(file))){
DPRN("failed to open tmp file. err(%d)", errno); S3FS_PRN_ERR("failed to open tmp file. err(%d)", errno);
if(file){ if(file){
fclose(file); fclose(file);
file = NULL; file = NULL;
@ -677,7 +677,7 @@ int FdEntity::Open(off_t size, time_t time)
// truncate // truncate
if(is_truncate){ if(is_truncate){
if(0 != ftruncate(fd, size) || 0 != fsync(fd)){ if(0 != ftruncate(fd, size) || 0 != fsync(fd)){
DPRN("ftruncate(%s) or fsync returned err(%d)", cachepath.c_str(), errno); S3FS_PRN_ERR("ftruncate(%s) or fsync returned err(%d)", cachepath.c_str(), errno);
fclose(file); fclose(file);
file = NULL; file = NULL;
fd = -1; fd = -1;
@ -688,7 +688,7 @@ int FdEntity::Open(off_t size, time_t time)
// set mtime // set mtime
if(-1 != time){ if(-1 != time){
if(0 != SetMtime(time)){ if(0 != SetMtime(time)){
DPRN("failed to set mtime. errno(%d)", errno); S3FS_PRN_ERR("failed to set mtime. errno(%d)", errno);
fclose(file); fclose(file);
file = NULL; file = NULL;
fd = -1; fd = -1;
@ -711,7 +711,7 @@ int FdEntity::Open(off_t size, time_t time)
int FdEntity::SetMtime(time_t time) int FdEntity::SetMtime(time_t time)
{ {
FPRNINFO("[path=%s][fd=%d][time=%jd]", path.c_str(), fd, (intmax_t)time); S3FS_PRN_INFO3("[path=%s][fd=%d][time=%jd]", path.c_str(), fd, (intmax_t)time);
if(-1 == time){ if(-1 == time){
return 0; return 0;
@ -725,7 +725,7 @@ int FdEntity::SetMtime(time_t time)
tv[1].tv_sec = tv[0].tv_sec; tv[1].tv_sec = tv[0].tv_sec;
tv[1].tv_usec= 0L; tv[1].tv_usec= 0L;
if(-1 == futimes(fd, tv)){ if(-1 == futimes(fd, tv)){
DPRN("futimes failed. errno(%d)", errno); S3FS_PRN_ERR("futimes failed. errno(%d)", errno);
return -errno; return -errno;
} }
}else if(0 < cachepath.size()){ }else if(0 < cachepath.size()){
@ -734,7 +734,7 @@ int FdEntity::SetMtime(time_t time)
n_mtime.modtime = time; n_mtime.modtime = time;
n_mtime.actime = time; n_mtime.actime = time;
if(-1 == utime(cachepath.c_str(), &n_mtime)){ if(-1 == utime(cachepath.c_str(), &n_mtime)){
DPRNINFO("utime failed. errno(%d)", errno); S3FS_PRN_ERR("utime failed. errno(%d)", errno);
return -errno; return -errno;
} }
} }
@ -772,7 +772,7 @@ bool FdEntity::GetStats(struct stat& st)
memset(&st, 0, sizeof(struct stat)); memset(&st, 0, sizeof(struct stat));
if(-1 == fstat(fd, &st)){ if(-1 == fstat(fd, &st)){
DPRN("fstat failed. errno(%d)", errno); S3FS_PRN_ERR("fstat failed. errno(%d)", errno);
return false; return false;
} }
return true; return true;
@ -780,7 +780,7 @@ bool FdEntity::GetStats(struct stat& st)
bool FdEntity::SetAllStatus(bool is_enable) bool FdEntity::SetAllStatus(bool is_enable)
{ {
FPRNINFO("[path=%s][fd=%d][%s]", path.c_str(), fd, is_enable ? "enable" : "disable"); S3FS_PRN_INFO3("[path=%s][fd=%d][%s]", path.c_str(), fd, is_enable ? "enable" : "disable");
if(-1 == fd){ if(-1 == fd){
return false; return false;
@ -791,7 +791,7 @@ bool FdEntity::SetAllStatus(bool is_enable)
struct stat st; struct stat st;
memset(&st, 0, sizeof(struct stat)); memset(&st, 0, sizeof(struct stat));
if(-1 == fstat(fd, &st)){ if(-1 == fstat(fd, &st)){
DPRN("fstat is failed. errno(%d)", errno); S3FS_PRN_ERR("fstat is failed. errno(%d)", errno);
return false; return false;
} }
// Reinit // Reinit
@ -804,7 +804,7 @@ int FdEntity::Load(off_t start, off_t size)
{ {
int result = 0; int result = 0;
FPRNINFO("[path=%s][fd=%d][offset=%jd][size=%jd]", path.c_str(), fd, (intmax_t)start, (intmax_t)size); S3FS_PRN_INFO3("[path=%s][fd=%d][offset=%jd][size=%jd]", path.c_str(), fd, (intmax_t)start, (intmax_t)size);
if(-1 == fd){ if(-1 == fd){
return -EBADF; return -EBADF;
@ -851,7 +851,7 @@ bool FdEntity::LoadFull(off_t* size, bool force_load)
{ {
int result; int result;
FPRNINFO("[path=%s][fd=%d]", path.c_str(), fd); S3FS_PRN_INFO3("[path=%s][fd=%d]", path.c_str(), fd);
if(-1 == fd){ if(-1 == fd){
if(0 != Open()){ if(0 != Open()){
@ -865,7 +865,7 @@ bool FdEntity::LoadFull(off_t* size, bool force_load)
// TODO: possibly do background for delay loading // TODO: possibly do background for delay loading
// //
if(0 != (result = Load(0, pagelist.Size()))){ if(0 != (result = Load(0, pagelist.Size()))){
DPRN("could not download, result(%d)", result); S3FS_PRN_ERR("could not download, result(%d)", result);
return false; return false;
} }
if(is_modify){ if(is_modify){
@ -882,7 +882,7 @@ int FdEntity::RowFlush(const char* tpath, headers_t& meta, bool force_sync)
{ {
int result; int result;
FPRNINFO("[tpath=%s][path=%s][fd=%d]", SAFESTRPTR(tpath), path.c_str(), fd); S3FS_PRN_INFO3("[tpath=%s][path=%s][fd=%d]", SAFESTRPTR(tpath), path.c_str(), fd);
if(-1 == fd){ if(-1 == fd){
return -EBADF; return -EBADF;
@ -915,7 +915,7 @@ int FdEntity::RowFlush(const char* tpath, headers_t& meta, bool force_sync)
// seek to head of file. // seek to head of file.
if(0 != lseek(fd, 0, SEEK_SET)){ if(0 != lseek(fd, 0, SEEK_SET)){
DPRN("lseek error(%d)", errno); S3FS_PRN_ERR("lseek error(%d)", errno);
return -errno; return -errno;
} }
@ -936,7 +936,7 @@ int FdEntity::RowFlush(const char* tpath, headers_t& meta, bool force_sync)
// seek to head of file. // seek to head of file.
if(0 == result && 0 != lseek(fd, 0, SEEK_SET)){ if(0 == result && 0 != lseek(fd, 0, SEEK_SET)){
DPRN("lseek error(%d)", errno); S3FS_PRN_ERR("lseek error(%d)", errno);
return -errno; return -errno;
} }
@ -951,7 +951,7 @@ ssize_t FdEntity::Read(char* bytes, off_t start, size_t size, bool force_load)
int result; int result;
ssize_t rsize; ssize_t rsize;
FPRNINFO("[path=%s][fd=%d][offset=%jd][size=%zu]", path.c_str(), fd, (intmax_t)start, size); S3FS_PRN_INFO3("[path=%s][fd=%d][offset=%jd][size=%zu]", path.c_str(), fd, (intmax_t)start, size);
if(-1 == fd){ if(-1 == fd){
return -EBADF; return -EBADF;
@ -962,7 +962,7 @@ ssize_t FdEntity::Read(char* bytes, off_t start, size_t size, bool force_load)
} }
// Loading // Loading
if(0 != (result = Load(start, size))){ if(0 != (result = Load(start, size))){
DPRN("could not download. start(%jd), size(%zu), errno(%d)", (intmax_t)start, size, result); S3FS_PRN_ERR("could not download. start(%jd), size(%zu), errno(%d)", (intmax_t)start, size, result);
return -EIO; return -EIO;
} }
// Reading // Reading
@ -970,7 +970,7 @@ ssize_t FdEntity::Read(char* bytes, off_t start, size_t size, bool force_load)
AutoLock auto_lock(&fdent_lock); AutoLock auto_lock(&fdent_lock);
if(-1 == (rsize = pread(fd, bytes, size, start))){ if(-1 == (rsize = pread(fd, bytes, size, start))){
DPRN("pread failed. errno(%d)", errno); S3FS_PRN_ERR("pread failed. errno(%d)", errno);
return -errno; return -errno;
} }
} }
@ -982,7 +982,7 @@ ssize_t FdEntity::Write(const char* bytes, off_t start, size_t size)
int result; int result;
ssize_t wsize; ssize_t wsize;
FPRNINFO("[path=%s][fd=%d][offset=%jd][size=%zu]", path.c_str(), fd, (intmax_t)start, size); S3FS_PRN_INFO3("[path=%s][fd=%d][offset=%jd][size=%zu]", path.c_str(), fd, (intmax_t)start, size);
if(-1 == fd){ if(-1 == fd){
return -EBADF; return -EBADF;
@ -990,7 +990,7 @@ ssize_t FdEntity::Write(const char* bytes, off_t start, size_t size)
// Load unitialized area which starts from 0 to (start + size) before writing. // Load unitialized area which starts from 0 to (start + size) before writing.
if(0 != (result = Load(0, start))){ if(0 != (result = Load(0, start))){
DPRN("failed to load uninitialized area before writing(errno=%d)", result); S3FS_PRN_ERR("failed to load uninitialized area before writing(errno=%d)", result);
return static_cast<ssize_t>(result); return static_cast<ssize_t>(result);
} }
@ -999,7 +999,7 @@ ssize_t FdEntity::Write(const char* bytes, off_t start, size_t size)
AutoLock auto_lock(&fdent_lock); AutoLock auto_lock(&fdent_lock);
if(-1 == (wsize = pwrite(fd, bytes, size, start))){ if(-1 == (wsize = pwrite(fd, bytes, size, start))){
DPRN("pwrite failed. errno(%d)", errno); S3FS_PRN_ERR("pwrite failed. errno(%d)", errno);
return -errno; return -errno;
} }
if(!is_modify){ if(!is_modify){
@ -1077,7 +1077,7 @@ bool FdManager::DeleteCacheDirectory(void)
int FdManager::DeleteCacheFile(const char* path) int FdManager::DeleteCacheFile(const char* path)
{ {
FPRNINFO("[path=%s]", SAFESTRPTR(path)); S3FS_PRN_INFO3("[path=%s]", SAFESTRPTR(path));
if(!path){ if(!path){
return -EIO; return -EIO;
@ -1091,11 +1091,11 @@ int FdManager::DeleteCacheFile(const char* path)
} }
int result = 0; int result = 0;
if(0 != unlink(cache_path.c_str())){ if(0 != unlink(cache_path.c_str())){
DPRNINFO("failed to delete file(%s): errno=%d", path, errno); S3FS_PRN_ERR("failed to delete file(%s): errno=%d", path, errno);
result = -errno; result = -errno;
} }
if(!CacheFileStat::DeleteCacheFileStat(path)){ if(!CacheFileStat::DeleteCacheFileStat(path)){
DPRNINFO("failed to delete stat file(%s): errno=%d", path, errno); S3FS_PRN_ERR("failed to delete stat file(%s): errno=%d", path, errno);
if(0 != errno){ if(0 != errno){
result = -errno; result = -errno;
}else{ }else{
@ -1115,7 +1115,7 @@ bool FdManager::MakeCachePath(const char* path, string& cache_path, bool is_crea
if(is_create_dir){ if(is_create_dir){
int result; int result;
if(0 != (result = mkdirp(resolved_path + mydirname(path), 0777))){ if(0 != (result = mkdirp(resolved_path + mydirname(path), 0777))){
DPRNINFO("failed to create dir(%s) by errno(%d).", path, result); S3FS_PRN_ERR("failed to create dir(%s) by errno(%d).", path, result);
return false; return false;
} }
} }
@ -1158,7 +1158,7 @@ FdManager::FdManager()
FdManager::is_lock_init = true; FdManager::is_lock_init = true;
}catch(exception& e){ }catch(exception& e){
FdManager::is_lock_init = false; FdManager::is_lock_init = false;
DPRNCRIT("failed to init mutex"); S3FS_PRN_CRIT("failed to init mutex");
} }
}else{ }else{
assert(false); assert(false);
@ -1178,7 +1178,7 @@ FdManager::~FdManager()
try{ try{
pthread_mutex_destroy(&FdManager::fd_manager_lock); pthread_mutex_destroy(&FdManager::fd_manager_lock);
}catch(exception& e){ }catch(exception& e){
DPRNCRIT("failed to init mutex"); S3FS_PRN_CRIT("failed to init mutex");
} }
FdManager::is_lock_init = false; FdManager::is_lock_init = false;
} }
@ -1189,7 +1189,7 @@ FdManager::~FdManager()
FdEntity* FdManager::GetFdEntity(const char* path, int existfd) FdEntity* FdManager::GetFdEntity(const char* path, int existfd)
{ {
FPRNINFO("[path=%s][fd=%d]", SAFESTRPTR(path), existfd); S3FS_PRN_INFO3("[path=%s][fd=%d]", SAFESTRPTR(path), existfd);
if(!path || '\0' == path[0]){ if(!path || '\0' == path[0]){
return NULL; return NULL;
@ -1221,7 +1221,7 @@ FdEntity* FdManager::Open(const char* path, off_t size, time_t time, bool force_
{ {
FdEntity* ent; FdEntity* ent;
FPRNINFO("[path=%s][size=%jd][time=%jd]", SAFESTRPTR(path), (intmax_t)size, (intmax_t)time); S3FS_PRN_INFO3("[path=%s][size=%jd][time=%jd]", SAFESTRPTR(path), (intmax_t)size, (intmax_t)time);
if(!path || '\0' == path[0]){ if(!path || '\0' == path[0]){
return NULL; return NULL;
@ -1238,7 +1238,7 @@ FdEntity* FdManager::Open(const char* path, off_t size, time_t time, bool force_
// not found // not found
string cache_path = ""; string cache_path = "";
if(!force_tmpfile && !FdManager::MakeCachePath(path, cache_path, true)){ if(!force_tmpfile && !FdManager::MakeCachePath(path, cache_path, true)){
DPRN("failed to make cache path for object(%s).", path); S3FS_PRN_ERR("failed to make cache path for object(%s).", path);
return NULL; return NULL;
} }
// make new obj // make new obj
@ -1272,7 +1272,7 @@ FdEntity* FdManager::Open(const char* path, off_t size, time_t time, bool force_
FdEntity* FdManager::ExistOpen(const char* path, int existfd) FdEntity* FdManager::ExistOpen(const char* path, int existfd)
{ {
FPRNINFO("[path=%s][fd=%d]", SAFESTRPTR(path), existfd); S3FS_PRN_INFO3("[path=%s][fd=%d]", SAFESTRPTR(path), existfd);
// search by real path // search by real path
FdEntity* ent = Open(path, -1, -1, false, false); FdEntity* ent = Open(path, -1, -1, false, false);
@ -1306,7 +1306,7 @@ void FdManager::Rename(const std::string &from, const std::string &to)
fdent_map_t::iterator iter = fent.find(from); fdent_map_t::iterator iter = fent.find(from);
if(fent.end() != iter){ if(fent.end() != iter){
// found // found
FPRNINFO("[from=%s][to=%s]", from.c_str(), to.c_str()); S3FS_PRN_DBG("[from=%s][to=%s]", from.c_str(), to.c_str());
FdEntity* ent = (*iter).second; FdEntity* ent = (*iter).second;
fent.erase(iter); fent.erase(iter);
ent->SetPath(to); ent->SetPath(to);
@ -1316,7 +1316,7 @@ void FdManager::Rename(const std::string &from, const std::string &to)
bool FdManager::Close(FdEntity* ent) bool FdManager::Close(FdEntity* ent)
{ {
FPRNINFO("[ent->file=%s][ent->fd=%d]", ent ? ent->GetPath() : "", ent ? ent->GetFd() : -1); S3FS_PRN_INFO3("[ent->file=%s][ent->fd=%d]", ent ? ent->GetPath() : "", ent ? ent->GetFd() : -1);
AutoLock auto_lock(&FdManager::fd_manager_lock); AutoLock auto_lock(&FdManager::fd_manager_lock);

View File

@ -217,7 +217,7 @@ unsigned char* s3fs_md5hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
md5_update(&ctx_md5, bytes, buf); md5_update(&ctx_md5, bytes, buf);
@ -261,7 +261,7 @@ unsigned char* s3fs_md5hexsum(int fd, off_t start, ssize_t size)
memset(buf, 0, 512); memset(buf, 0, 512);
if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_md5, GCRY_MD_MD5, 0))){ if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_md5, GCRY_MD_MD5, 0))){
DPRNN("MD5 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err)); S3FS_PRN_ERR("MD5 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err));
return NULL; return NULL;
} }
@ -273,7 +273,7 @@ unsigned char* s3fs_md5hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
gcry_md_write(ctx_md5, buf, bytes); gcry_md_write(ctx_md5, buf, bytes);
@ -344,7 +344,7 @@ unsigned char* s3fs_sha256hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
sha256_update(&ctx_sha256, bytes, buf); sha256_update(&ctx_sha256, bytes, buf);
@ -375,7 +375,7 @@ bool s3fs_sha256(const unsigned char* data, unsigned int datalen, unsigned char*
gcry_md_hd_t ctx_sha256; gcry_md_hd_t ctx_sha256;
gcry_error_t err; gcry_error_t err;
if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_sha256, GCRY_MD_SHA256, 0))){ if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_sha256, GCRY_MD_SHA256, 0))){
DPRNN("SHA256 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err)); S3FS_PRN_ERR("SHA256 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err));
free(*digest); free(*digest);
return false; return false;
} }
@ -409,7 +409,7 @@ unsigned char* s3fs_sha256hexsum(int fd, off_t start, ssize_t size)
memset(buf, 0, 512); memset(buf, 0, 512);
if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_sha256, GCRY_MD_SHA256, 0))){ if(GPG_ERR_NO_ERROR != (err = gcry_md_open(&ctx_sha256, GCRY_MD_SHA256, 0))){
DPRNN("SHA256 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err)); S3FS_PRN_ERR("SHA256 context creation failure: %s/%s", gcry_strsource(err), gcry_strerror(err));
return NULL; return NULL;
} }
@ -421,7 +421,7 @@ unsigned char* s3fs_sha256hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
gcry_md_write(ctx_sha256, buf, bytes); gcry_md_write(ctx_sha256, buf, bytes);

View File

@ -182,7 +182,7 @@ unsigned char* s3fs_md5hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
PK11_DigestOp(md5ctx, buf, bytes); PK11_DigestOp(md5ctx, buf, bytes);
@ -262,7 +262,7 @@ unsigned char* s3fs_sha256hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
PK11_DestroyContext(sha256ctx, PR_TRUE); PK11_DestroyContext(sha256ctx, PR_TRUE);
return NULL; return NULL;
} }

View File

@ -105,7 +105,7 @@ static struct CRYPTO_dynlock_value* s3fs_dyn_crypt_mutex(const char* file, int l
struct CRYPTO_dynlock_value* dyndata; struct CRYPTO_dynlock_value* dyndata;
if(NULL == (dyndata = static_cast<struct CRYPTO_dynlock_value*>(malloc(sizeof(struct CRYPTO_dynlock_value))))){ if(NULL == (dyndata = static_cast<struct CRYPTO_dynlock_value*>(malloc(sizeof(struct CRYPTO_dynlock_value))))){
DPRNCRIT("Could not allocate memory for CRYPTO_dynlock_value"); S3FS_PRN_CRIT("Could not allocate memory for CRYPTO_dynlock_value");
return NULL; return NULL;
} }
pthread_mutex_init(&(dyndata->dyn_mutex), NULL); pthread_mutex_init(&(dyndata->dyn_mutex), NULL);
@ -134,14 +134,14 @@ static void s3fs_destroy_dyn_crypt_mutex(struct CRYPTO_dynlock_value* dyndata, c
bool s3fs_init_crypt_mutex(void) bool s3fs_init_crypt_mutex(void)
{ {
if(s3fs_crypt_mutex){ if(s3fs_crypt_mutex){
FPRNNN("s3fs_crypt_mutex is not NULL, destroy it."); S3FS_PRN_DBG("s3fs_crypt_mutex is not NULL, destroy it.");
if(!s3fs_destroy_crypt_mutex()){ if(!s3fs_destroy_crypt_mutex()){
DPRN("Failed to s3fs_crypt_mutex"); S3FS_PRN_ERR("Failed to s3fs_crypt_mutex");
return false; return false;
} }
} }
if(NULL == (s3fs_crypt_mutex = static_cast<pthread_mutex_t*>(malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t))))){ if(NULL == (s3fs_crypt_mutex = static_cast<pthread_mutex_t*>(malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t))))){
DPRNCRIT("Could not allocate memory for s3fs_crypt_mutex"); S3FS_PRN_CRIT("Could not allocate memory for s3fs_crypt_mutex");
return false; return false;
} }
for(int cnt = 0; cnt < CRYPTO_num_locks(); cnt++){ for(int cnt = 0; cnt < CRYPTO_num_locks(); cnt++){
@ -250,7 +250,7 @@ unsigned char* s3fs_md5hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
return NULL; return NULL;
} }
MD5_Update(&md5ctx, buf, bytes); MD5_Update(&md5ctx, buf, bytes);
@ -328,7 +328,7 @@ unsigned char* s3fs_sha256hexsum(int fd, off_t start, ssize_t size)
break; break;
}else if(-1 == bytes){ }else if(-1 == bytes){
// error // error
DPRNNN("file read error(%d)", errno); S3FS_PRN_ERR("file read error(%d)", errno);
EVP_MD_CTX_destroy(sha256ctx); EVP_MD_CTX_destroy(sha256ctx);
return NULL; return NULL;
} }

File diff suppressed because it is too large Load Diff

View File

@ -450,19 +450,19 @@ string get_username(uid_t uid)
if(0 == maxlen){ if(0 == maxlen){
long res = sysconf(_SC_GETPW_R_SIZE_MAX); long res = sysconf(_SC_GETPW_R_SIZE_MAX);
if(0 > res){ if(0 > res){
DPRNNN("could not get max pw length."); S3FS_PRN_WARN("could not get max pw length.");
maxlen = 0; maxlen = 0;
return string(""); return string("");
} }
maxlen = res; maxlen = res;
} }
if(NULL == (pbuf = (char*)malloc(sizeof(char) * maxlen))){ if(NULL == (pbuf = (char*)malloc(sizeof(char) * maxlen))){
DPRNCRIT("failed to allocate memory."); S3FS_PRN_CRIT("failed to allocate memory.");
return string(""); return string("");
} }
// get group information // get group information
if(0 != getpwuid_r(uid, &pwinfo, pbuf, maxlen, &ppwinfo)){ if(0 != getpwuid_r(uid, &pwinfo, pbuf, maxlen, &ppwinfo)){
DPRNNN("could not get pw information."); S3FS_PRN_WARN("could not get pw information.");
free(pbuf); free(pbuf);
return string(""); return string("");
} }
@ -488,19 +488,19 @@ int is_uid_inculde_group(uid_t uid, gid_t gid)
if(0 == maxlen){ if(0 == maxlen){
long res = sysconf(_SC_GETGR_R_SIZE_MAX); long res = sysconf(_SC_GETGR_R_SIZE_MAX);
if(0 > res){ if(0 > res){
DPRNNN("could not get max name length."); S3FS_PRN_ERR("could not get max name length.");
maxlen = 0; maxlen = 0;
return -ERANGE; return -ERANGE;
} }
maxlen = res; maxlen = res;
} }
if(NULL == (pbuf = (char*)malloc(sizeof(char) * maxlen))){ if(NULL == (pbuf = (char*)malloc(sizeof(char) * maxlen))){
DPRNCRIT("failed to allocate memory."); S3FS_PRN_CRIT("failed to allocate memory.");
return -ENOMEM; return -ENOMEM;
} }
// get group information // get group information
if(0 != (result = getgrgid_r(gid, &ginfo, pbuf, maxlen, &pginfo))){ if(0 != (result = getgrgid_r(gid, &ginfo, pbuf, maxlen, &pginfo))){
DPRNNN("could not get group information."); S3FS_PRN_ERR("could not get group information.");
free(pbuf); free(pbuf);
return -result; return -result;
} }
@ -619,7 +619,7 @@ bool delete_files_in_dir(const char* dir, bool is_remove_own)
struct dirent* dent; struct dirent* dent;
if(NULL == (dp = opendir(dir))){ if(NULL == (dp = opendir(dir))){
DPRNINFO("could not open dir(%s) - errno(%d)", dir, errno); S3FS_PRN_ERR("could not open dir(%s) - errno(%d)", dir, errno);
return false; return false;
} }
@ -632,20 +632,20 @@ bool delete_files_in_dir(const char* dir, bool is_remove_own)
fullpath += dent->d_name; fullpath += dent->d_name;
struct stat st; struct stat st;
if(0 != lstat(fullpath.c_str(), &st)){ if(0 != lstat(fullpath.c_str(), &st)){
DPRN("could not get stats of file(%s) - errno(%d)", fullpath.c_str(), errno); S3FS_PRN_ERR("could not get stats of file(%s) - errno(%d)", fullpath.c_str(), errno);
closedir(dp); closedir(dp);
return false; return false;
} }
if(S_ISDIR(st.st_mode)){ if(S_ISDIR(st.st_mode)){
// dir -> Reentrant // dir -> Reentrant
if(!delete_files_in_dir(fullpath.c_str(), true)){ if(!delete_files_in_dir(fullpath.c_str(), true)){
DPRNINFO("could not remove sub dir(%s) - errno(%d)", fullpath.c_str(), errno); S3FS_PRN_ERR("could not remove sub dir(%s) - errno(%d)", fullpath.c_str(), errno);
closedir(dp); closedir(dp);
return false; return false;
} }
}else{ }else{
if(0 != unlink(fullpath.c_str())){ if(0 != unlink(fullpath.c_str())){
DPRN("could not remove file(%s) - errno(%d)", fullpath.c_str(), errno); S3FS_PRN_ERR("could not remove file(%s) - errno(%d)", fullpath.c_str(), errno);
closedir(dp); closedir(dp);
return false; return false;
} }
@ -654,7 +654,7 @@ bool delete_files_in_dir(const char* dir, bool is_remove_own)
closedir(dp); closedir(dp);
if(is_remove_own && 0 != rmdir(dir)){ if(is_remove_own && 0 != rmdir(dir)){
DPRN("could not remove dir(%s) - errno(%d)", dir, errno); S3FS_PRN_ERR("could not remove dir(%s) - errno(%d)", dir, errno);
return false; return false;
} }
return true; return true;
@ -1065,6 +1065,16 @@ void show_help (void)
" the virtual-host request style, by using the older path request\n" " the virtual-host request style, by using the older path request\n"
" style.\n" " style.\n"
"\n" "\n"
" dbglevel (default=\"crit\")\n"
" Set the debug message level. set value as crit(critical), err\n"
" (error), warn(warning), info(information) to debug level.\n"
" default debug level is critical. If s3fs run with \"-d\" option,\n"
" the debug level is set information. When s3fs catch the signal\n"
" SIGUSR2, the debug level is bumpup.\n"
"\n"
" curldbg - put curl debug message\n"
" Put the debug message from libcurl when this option is specified.\n"
"\n"
"FUSE/mount Options:\n" "FUSE/mount Options:\n"
"\n" "\n"
" Most of the generic mount options described in 'man mount' are\n" " Most of the generic mount options described in 'man mount' are\n"