Changeset 2d78d88 in mainline for uspace/srv/volsrv/volsrv.c


Ignore:
Timestamp:
2018-07-25T17:04:03Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
efa3136
Parents:
bec18a9
Message:

Modifying mount point for a partition.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/volsrv/volsrv.c

    rbec18a9 r2d78d88  
    285285}
    286286
    287 
    288287static void vol_part_mkfs_srv(vol_parts_t *parts, ipc_call_t *icall)
    289288{
     
    291290        vol_part_t *part;
    292291        vol_fstype_t fstype;
    293         char *label;
    294         char *mountp;
     292        char *label = NULL;
     293        char *mountp = NULL;
    295294        errno_t rc;
    296295
     
    304303        if (rc != EOK) {
    305304                async_answer_0(icall, rc);
    306                 return;
     305                goto error;
    307306        }
    308307
     
    315314            0, NULL);
    316315        if (rc != EOK) {
    317                 free(label);
    318                 async_answer_0(icall, rc);
    319                 return;
     316                async_answer_0(icall, rc);
     317                goto error;
    320318        }
    321319
     
    327325        rc = vol_part_find_by_id_ref(parts, sid, &part);
    328326        if (rc != EOK) {
     327                async_answer_0(icall, ENOENT);
     328                goto error;
     329        }
     330
     331        rc = vol_part_mkfs_part(part, fstype, label, mountp);
     332        if (rc != EOK) {
     333                async_answer_0(icall, rc);
     334                vol_part_del_ref(part);
     335                goto error;
     336        }
     337
     338        free(label);
     339        free(mountp);
     340        async_answer_0(icall, EOK);
     341
     342        return;
     343error:
     344        if (label != NULL)
    329345                free(label);
     346        if (mountp != NULL)
     347                free(mountp);
     348}
     349
     350static void vol_part_set_mountp_srv(vol_parts_t *parts,
     351    ipc_call_t *icall)
     352{
     353        service_id_t sid;
     354        vol_part_t *part;
     355        char *mountp;
     356        errno_t rc;
     357
     358        log_msg(LOG_DEFAULT, LVL_NOTE, "vol_part_set_mountp_srv()");
     359
     360        sid = IPC_GET_ARG1(*icall);
     361
     362        rc = async_data_write_accept((void **)&mountp, true, 0,
     363            VOL_MOUNTP_MAXLEN, 0, NULL);
     364        if (rc != EOK) {
     365                async_answer_0(icall, rc);
     366                return;
     367        }
     368
     369        if (mountp != NULL) {
     370                log_msg(LOG_DEFAULT, LVL_NOTE,
     371                    "vol_part_set_mountp_srv: mountp='%s'", mountp);
     372        }
     373
     374        rc = vol_part_find_by_id_ref(parts, sid, &part);
     375        if (rc != EOK) {
     376                free(mountp);
    330377                async_answer_0(icall, ENOENT);
    331378                return;
    332379        }
    333380
    334         rc = vol_part_mkfs_part(part, fstype, label, mountp);
    335         if (rc != EOK) {
    336                 free(label);
     381        rc = vol_part_set_mountp_part(part, mountp);
     382        if (rc != EOK) {
     383                free(mountp);
    337384                async_answer_0(icall, rc);
    338385                vol_part_del_ref(part);
     
    340387        }
    341388
    342         free(label);
     389        free(mountp);
    343390        async_answer_0(icall, EOK);
    344391}
     
    386433                        vol_part_mkfs_srv(parts, &call);
    387434                        break;
     435                case VOL_PART_SET_MOUNTP:
     436                        vol_part_set_mountp_srv(parts, &call);
     437                        break;
    388438                default:
    389439                        async_answer_0(&call, EINVAL);
Note: See TracChangeset for help on using the changeset viewer.