Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96878
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-24 22:04
文章分类

全部博文(31)

文章存档

2014年(31)

我的朋友

分类: C/C++

2014-07-28 09:49:44


|-----tracker_mem_init
        |-----init_pthread_lock(mem_thread_lock)
        |-----init_pthread_lock(mem_file_lock)
        |-----tracker_open_changlog_file
        |-----tracker_mem_init_groups
                |------tracker_load_data
                        |-----tracker_load_groups_new
                        |-----tracker_load_storage_new
                        |-----tracker_malloc_all_group_path_mbs
                        |-----tracker_load_sync_timestamps

点击(此处)折叠或打开

  1. //从配置文件中加载group与storage的信息
  2. static int tracker_load_data(FDFSGroups *pGroups)
  3. {
  4.     char data_path[MAX_PATH_SIZE];
  5.     int result;

  6.     // base_path/data
  7.     snprintf(data_path, sizeof(data_path), "%s/data", g_fdfs_base_path);
  8.     if (!fileExists(data_path))//判断data目录是否存在
  9.     {
  10.         if (mkdir(data_path, 0755) != 0) //不存在,创建data目录
  11.         {
  12.             logError("file: "__FILE__", line: %d, " \
  13.                 "mkdir \"%s\" fail, " \
  14.                 "errno: %d, error info: %s", \
  15.                 __LINE__, data_path, errno, STRERROR(errno));
  16.             return errno != 0 ? errno : ENOENT;
  17.         }

  18.         TRACKER_CHOWN(data_path, geteuid(), getegid())//修改data目录的属性,使目录的uid与gid为程序的执行的有效用户
  19.     }

  20.     if (chdir(data_path) != 0)//进入data目录
  21.     {
  22.         logError("file: "__FILE__", line: %d, " \
  23.             "chdir \"%s\" fail, " \
  24.             "errno: %d, error info: %s", \
  25.             __LINE__, data_path, errno, STRERROR(errno));
  26.         return errno != 0 ? errno : ENOENT;
  27.     }

  28.     if (!fileExists(STORAGE_GROUPS_LIST_FILENAME_OLD) && \
  29.      !fileExists(STORAGE_GROUPS_LIST_FILENAME_NEW))//判断storge_groups.dat与storge_groups_new.dat是否存在
  30.     {//若都不存在,则直接返回
  31.         return 0;
  32.     }

  33.     //从storage_groups_new.dat文件中获取group数据
  34.     if ((result=tracker_load_groups_new(pGroups, data_path)) != 0)
  35.     {
  36.         return result;
  37.     }
  38.     
  39.     //从storage_servers_new.dat文件中获取server数据
  40.     if ((result=tracker_load_storages_new(pGroups, data_path)) != 0)
  41.     {
  42.         return result;
  43.     }
  44.     //为所有group中的store_path分配空间
  45.     if ((result=tracker_malloc_all_group_path_mbs(pGroups)) != 0)
  46.     {
  47.         return result;
  48.     }
  49.     //加载同步时间戳
  50.     if ((result=tracker_load_sync_timestamps(pGroups, data_path)) != 0)
  51.     {
  52.         return result;
  53.     }

  54.     return 0;
  55. }
tracker_load_data函数中主要执行了四个函数,在下面的文章中,将依次对每个函数进行详细分析



阅读(668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~