diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in index 8708e4d3e33d0bcc5096e8965a206689eef7a4a1..d967b3a8a8ef438cd3a053bcbac776cc06afcd84 100644 --- a/slurm/slurm.h.in +++ b/slurm/slurm.h.in @@ -972,7 +972,8 @@ typedef struct partition_info_msg { #define RESERVE_FLAG_DELETE 0x0004 /* regular flags to send over */ -#define RESERVE_FLAG_MAINT 0x0010 +#define RESERVE_FLAG_CLEAR 0x0010 +#define RESERVE_FLAG_MAINT 0x0020 typedef struct reserve_info { char *accounts; /* names of accounts permitted to use */ diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c index 90c646243cf2cb22af62e57821334e6bcbd5654b..dd2e48e7db35ce64639ce6c5a82c5c0a5b9c5278 100644 --- a/src/common/slurm_accounting_storage.c +++ b/src/common/slurm_accounting_storage.c @@ -751,7 +751,6 @@ extern void destroy_acct_reservation_rec(void *object) { acct_reservation_rec_t *acct_resv = (acct_reservation_rec_t *)object; if(acct_resv) { - xfree(acct_resv->assocs); xfree(acct_resv->cluster); xfree(acct_resv->nodes); xfree(acct_resv); @@ -5660,7 +5659,6 @@ extern void pack_acct_reservation_rec(void *in, uint16_t rpc_version, acct_reservation_rec_t *object = (acct_reservation_rec_t *)in; if(!object) { - packnull(buffer); packnull(buffer); pack32(0, buffer); pack16(0, buffer); @@ -5672,7 +5670,6 @@ extern void pack_acct_reservation_rec(void *in, uint16_t rpc_version, return; } - packstr(object->assocs, buffer); packstr(object->cluster, buffer); pack32(object->cpus, buffer); pack16(object->flags, buffer); @@ -5692,7 +5689,6 @@ extern int unpack_acct_reservation_rec(void **object, uint16_t rpc_version, *object = object_ptr; - safe_unpackstr_xmalloc(&object_ptr->assocs, &uint32_tmp, buffer); safe_unpackstr_xmalloc(&object_ptr->cluster, &uint32_tmp, buffer); safe_unpack32(&object_ptr->cpus, buffer); safe_unpack16(&object_ptr->flags, buffer); diff --git a/src/common/slurm_accounting_storage.h b/src/common/slurm_accounting_storage.h index 6ebfd1864cf6580318dca1b6862544204535d44a..7f85f2c96df72a9ac896cbb0bf0ab282bb9260c1 100644 --- a/src/common/slurm_accounting_storage.h +++ b/src/common/slurm_accounting_storage.h @@ -349,7 +349,6 @@ typedef struct { } acct_qos_cond_t; typedef struct { - char *assocs; /* comma seperated list of associations */ char *cluster; /* cluster reservation is for */ uint32_t cpus; /* how many cpus are in reservation */ uint16_t flags; /* flags for reservation. */ diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c index 6780ca15839415cd6eba6ea7abaf440ced7214ff..072640ccd2882433d3a8ea29213d88fd4a04bebb 100644 --- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c +++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c @@ -879,19 +879,17 @@ static int _setup_resv_limits(acct_reservation_rec_t *resv, /* strip off the action item from the flags */ resv->flags &= RESERVE_FLAG_FLAGS; - if(resv->assocs) { - xstrcat(*cols, ", assoclist"); - xstrfmtcat(*vals, ", \"%s\"", resv->assocs); - xstrfmtcat(*extra, ", assoclist=\"%s\"", resv->assocs); - } - if(resv->cpus) { xstrcat(*cols, ", cpus"); xstrfmtcat(*vals, ", %u", resv->cpus); xstrfmtcat(*extra, ", cpus=%u", resv->cpus); } - if(resv->flags) { + if(resv->flags & RESERVE_FLAG_CLEAR) { + xstrcat(*cols, ", flags"); + xstrcat(*vals, ", 0"); + xstrcat(*extra, ", flags=0"); + } else if(resv->flags) { xstrcat(*cols, ", flags"); xstrfmtcat(*vals, ", %u", resv->flags); xstrfmtcat(*extra, ", flags=%u", resv->flags); @@ -2674,7 +2672,6 @@ static int _mysql_acct_check_tables(MYSQL *db_conn) { "cluster", "text not null" }, { "deleted", "tinyint default 0" }, { "cpus", "mediumint unsigned not null" }, - { "assoclist", "text not null default ''" }, { "nodelist", "text not null default ''" }, { "start", "int unsigned default 0 not null" }, { "end", "int unsigned default 0 not null" }, @@ -4578,7 +4575,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn, "start", "end", "cpus", - "assoclist", "nodelist", "flags" }; @@ -4586,7 +4582,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn, RESV_START, RESV_END, RESV_CPU, - RESV_ASSOC, RESV_NODES, RESV_FLAGS, RESV_COUNT @@ -4653,9 +4648,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn, /* check differences here */ - if(!resv->assocs) - resv->assocs = xstrdup(row[RESV_ASSOC]); - if(!resv->cpus) { resv->cpus = atoi(row[RESV_CPU]); set = 1; diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c index 6cd7b7ed36f1cc9f3b7558369ec43c45076a1b59..2e8f42b9bb5be5ed1e767671f90f2e8d1d0e7014 100644 --- a/src/slurmctld/reservation.c +++ b/src/slurmctld/reservation.c @@ -99,7 +99,6 @@ static bool _resv_overlap(time_t start_time, time_t end_time, static int _select_nodes(reserve_request_msg_t *resv_desc_ptr, struct part_record **part_ptr, bitstr_t **resv_bitmap); -static void _set_assoc_list(struct slurmctld_resv *resv_ptr); static void _set_cpu_cnt(struct slurmctld_resv *resv_ptr); static int _post_resv_create(struct slurmctld_resv *resv_ptr); @@ -127,7 +126,6 @@ static void _del_resv_rec(void *x) for (i=0; i<resv_ptr->account_cnt; i++) xfree(resv_ptr->account_list[i]); xfree(resv_ptr->account_list); - xfree(resv_ptr->assoc_list); xfree(resv_ptr->features); xfree(resv_ptr->name); if (resv_ptr->node_bitmap) @@ -211,16 +209,6 @@ static bool _is_account_valid(char *account) return true; } -/* Set a association list based upon accounts and users */ -static void _set_assoc_list(struct slurmctld_resv *resv_ptr) -{ - /* FIXME: Need to add logic here to get assoc_list from slurmdbd - * based upon resv_ptr->account_cnt and account_list plus - * user_cnt and user_list */ - xfree(resv_ptr->assoc_list); /* clear for modify */ - resv_ptr->assoc_list = xstrdup("TBD"); /* FOR TESTING ONLY */ -} - /* Post reservation create */ static int _post_resv_create(struct slurmctld_resv *resv_ptr) { @@ -228,7 +216,6 @@ static int _post_resv_create(struct slurmctld_resv *resv_ptr) acct_reservation_rec_t resv; memset(&resv, 0, sizeof(acct_reservation_rec_t)); - resv.assocs = resv_ptr->assoc_list; resv.cluster = slurmctld_cluster_name; resv.cpus = resv_ptr->cpu_cnt; resv.flags = resv_ptr->flags | RESERVE_FLAG_CREATE; @@ -274,7 +261,6 @@ static int _post_resv_update(struct slurmctld_resv *resv_ptr) acct_reservation_rec_t resv; memset(&resv, 0, sizeof(acct_reservation_rec_t)); - resv.assocs = resv_ptr->assoc_list; resv.cluster = slurmctld_cluster_name; resv.cpus = resv_ptr->cpu_cnt; resv.flags = resv_ptr->flags | RESERVE_FLAG_MODIFY; @@ -694,7 +680,6 @@ static void _pack_resv(struct slurmctld_resv *resv_ptr, Buf buffer, packstr(resv_ptr->users, buffer); if (internal) { - packstr(resv_ptr->assoc_list, buffer); pack32(resv_ptr->cpu_cnt, buffer); pack32(resv_ptr->resv_id, buffer); } @@ -913,7 +898,6 @@ extern int create_resv(reserve_request_msg_t *resv_desc_ptr) resv_ptr->user_list = user_list; resv_desc_ptr->users = NULL; /* Nothing left to free */ _set_cpu_cnt(resv_ptr); - _set_assoc_list(resv_ptr); /* This needs to be done after all other setup is done. */ _post_resv_create(resv_ptr); @@ -1094,7 +1078,6 @@ extern int update_resv(reserve_request_msg_t *resv_desc_ptr) fini: xfree(old_node_list); FREE_NULL_BITMAP(old_node_bitmap); - _set_assoc_list(resv_ptr); _post_resv_update(resv_ptr); last_resv_update = now; schedule_resv_save(); @@ -1377,7 +1360,6 @@ static void _validate_all_reservations(void) resv_ptr->name); list_delete_item(iter); } else { - _set_assoc_list(resv_ptr); tmp = strrchr(resv_ptr->name, '_'); if (tmp) { res_num = atoi(tmp + 1); @@ -1489,8 +1471,6 @@ extern int load_all_resv_state(int recover) safe_unpackstr_xmalloc(&resv_ptr->users,&uint32_tmp, buffer); /* Fields saved for internal use only (save state) */ - safe_unpackstr_xmalloc(&resv_ptr->assoc_list, - &uint32_tmp, buffer); safe_unpack32(&resv_ptr->cpu_cnt, buffer); safe_unpack32(&resv_ptr->resv_id, buffer); diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h index 934fcd5d625f0b4e332d801c5e457287a181d1b9..307280e34a4683da4bd2c3c5f025fa3092cbca9f 100644 --- a/src/slurmctld/slurmctld.h +++ b/src/slurmctld/slurmctld.h @@ -309,7 +309,6 @@ typedef struct slurmctld_resv { char *accounts; /* names of accounts permitted to use */ int account_cnt; /* count of accounts permitted to use */ char **account_list; /* list of accounts permitted to use */ - char *assoc_list; /* list of associations */ uint32_t cpu_cnt; /* number of reserved CPUs */ time_t end_time; /* end time of reservation */ char *features; /* required node features */