char * gfrmdir(struct gfs_connection *gfs_server, void *args) { struct args *a = args; char *e = gfs_client_rmdir(gfs_server, a->path); if (e == GFARM_ERR_NO_SUCH_OBJECT) { /* * We don't treat this as error to remove path_info in MetaDB */ fprintf(stderr, "%s on %s: %s\n", program_name, gfs_client_hostname(gfs_server), e); return (NULL); } return (e); }
static gfarm_error_t gfs_pio_local_storage_close(GFS_File gf) { gfarm_error_t e, e2; struct gfs_file_section_context *vc = gf->view_context; struct gfs_connection *gfs_server = vc->storage_context; if (close(vc->fd) == -1) e = gfarm_errno_to_error(errno); else e = GFARM_ERR_NO_ERROR; #ifndef __KERNEL__ /* * Do not close remote file from a child process because its * open file count is not incremented. * XXX - This behavior is not the same as expected, but better * than closing the remote file. */ if (vc->pid != getpid()) { if (e != GFARM_ERR_NO_ERROR) { gflog_debug(GFARM_MSG_1001362, "close operation on view context " "file descriptor failed: %s", gfarm_error_string(e)); } return (e); } #endif /* __KERNEL__ */ e2 = gfs_client_close(gfs_server, gf->fd); gfarm_schedule_host_unused( gfs_client_hostname(gfs_server), gfs_client_port(gfs_server), gfs_client_username(gfs_server), gf->scheduled_age); gfs_client_connection_free(gfs_server); if (e != GFARM_ERR_NO_ERROR || e2 != GFARM_ERR_NO_ERROR) { gflog_debug(GFARM_MSG_1001363, "Close operation on local storage failed: %s", gfarm_error_string( e != GFARM_ERR_NO_ERROR ? e : e2)); } return (e != GFARM_ERR_NO_ERROR ? e : e2); }