After calling opendir() at the end of cb_migrate_mdt_init(), we should
check *dirp rather then dirp, and we should close temporary parent
directory before return error.
Also, this patch improves the code a little to make it more readable.
Signed-off-by: Emoly Liu <emoly.liu@intel.com>
Change-Id: I2507cbd6464ea56fba7793431905cdf51136413f
Reviewed-on: http://review.whamcloud.com/17814
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: wangdi <di.wang@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
}
static int cb_migrate_mdt_init(char *path, DIR *parent, DIR **dirp,
}
static int cb_migrate_mdt_init(char *path, DIR *parent, DIR **dirp,
- void *param_data, struct dirent64 *de)
+ void *param_data, struct dirent64 *de)
{
struct find_param *param = (struct find_param *)param_data;
{
struct find_param *param = (struct find_param *)param_data;
+ DIR *tmp_parent = parent;
char raw[OBD_MAX_IOCTL_BUFFER] = {'\0'};
char *rawbuf = raw;
struct obd_ioctl_data data = { 0 };
char raw[OBD_MAX_IOCTL_BUFFER] = {'\0'};
char *rawbuf = raw;
struct obd_ioctl_data data = { 0 };
closedir(*dirp);
if (parent == NULL) {
closedir(*dirp);
if (parent == NULL) {
- dir = opendir_parent(path);
- if (dir == NULL) {
+ tmp_parent = opendir_parent(path);
+ if (tmp_parent == NULL) {
*dirp = NULL;
ret = -errno;
llapi_error(LLAPI_MSG_ERROR, ret,
*dirp = NULL;
ret = -errno;
llapi_error(LLAPI_MSG_ERROR, ret,
+ fd = dirfd(tmp_parent);
filename = basename(path);
data.ioc_inlbuf1 = (char *)filename;
filename = basename(path);
data.ioc_inlbuf1 = (char *)filename;
* on the client side, and re-open to get the
* new directory handle */
*dirp = opendir(path);
* on the client side, and re-open to get the
* new directory handle */
*dirp = opendir(path);
ret = -errno;
llapi_error(LLAPI_MSG_ERROR, ret,
"%s: Failed to open '%s'", __func__, path);
ret = -errno;
llapi_error(LLAPI_MSG_ERROR, ret,
"%s: Failed to open '%s'", __func__, path);