mirror of
https://github.com/ceph/ceph
synced 2025-05-11 03:58:56 +00:00
os: make readdir_r buffers larger
PATH_MAX isn't quite big enough. Backport: dumpling, cuttlefish, bobtail Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
2df66d9fa2
commit
99a2ff7da9
@ -387,7 +387,8 @@ int FlatIndex::collection_list_partial(const hobject_t &start,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int FlatIndex::collection_list(vector<hobject_t> *ls) {
|
int FlatIndex::collection_list(vector<hobject_t> *ls) {
|
||||||
char dir_name[PATH_MAX], buf[PATH_MAX], new_name[PATH_MAX];
|
char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1];
|
||||||
|
char dir_name[PATH_MAX], new_name[PATH_MAX];
|
||||||
strncpy(dir_name, base_path.c_str(), sizeof(dir_name));
|
strncpy(dir_name, base_path.c_str(), sizeof(dir_name));
|
||||||
dir_name[sizeof(dir_name)-1]='\0';
|
dir_name[sizeof(dir_name)-1]='\0';
|
||||||
|
|
||||||
@ -399,7 +400,7 @@ int FlatIndex::collection_list(vector<hobject_t> *ls) {
|
|||||||
vector< pair<ino_t,hobject_t> > inolist;
|
vector< pair<ino_t,hobject_t> > inolist;
|
||||||
|
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
while (::readdir_r(dir, (struct dirent*)buf, &de) == 0) {
|
while (::readdir_r(dir, (struct dirent *)buf, &de) == 0) {
|
||||||
if (!de)
|
if (!de)
|
||||||
break;
|
break;
|
||||||
// parse
|
// parse
|
||||||
|
@ -378,7 +378,7 @@ int LFNIndex::list_objects(const vector<string> &to_list, int max_objs,
|
|||||||
long *handle, map<string, hobject_t> *out) {
|
long *handle, map<string, hobject_t> *out) {
|
||||||
string to_list_path = get_full_path_subdir(to_list);
|
string to_list_path = get_full_path_subdir(to_list);
|
||||||
DIR *dir = ::opendir(to_list_path.c_str());
|
DIR *dir = ::opendir(to_list_path.c_str());
|
||||||
char buf[PATH_MAX];
|
char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1];
|
||||||
int r;
|
int r;
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
return -errno;
|
return -errno;
|
||||||
@ -438,7 +438,7 @@ int LFNIndex::list_subdirs(const vector<string> &to_list,
|
|||||||
set<string> *out) {
|
set<string> *out) {
|
||||||
string to_list_path = get_full_path_subdir(to_list);
|
string to_list_path = get_full_path_subdir(to_list);
|
||||||
DIR *dir = ::opendir(to_list_path.c_str());
|
DIR *dir = ::opendir(to_list_path.c_str());
|
||||||
char buf[PATH_MAX];
|
char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1];
|
||||||
if (!dir)
|
if (!dir)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user