Changeset f57ccb5 in mainline for uspace/srv


Ignore:
Timestamp:
2015-08-11T16:03:59Z (10 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0bde8523
Parents:
1b23e33
Message:

Set partition type based on selected filesystem type.

Location:
uspace/srv/bd/vbd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/vbd/disk.c

    r1b23e33 rf57ccb5  
    503503        rc = vbds_disk_by_svcid(sid, &disk);
    504504        if (rc != EOK) {
    505                 log_msg(LOG_DEFAULT, LVL_NOTE, "Partition %zu not found",
     505                log_msg(LOG_DEFAULT, LVL_NOTE, "Disk %zu not found",
    506506                    sid);
    507507                goto error;
     
    583583
    584584        return EOK;
     585}
     586
     587int vbds_suggest_ptype(service_id_t sid, label_pcnt_t pcnt,
     588    label_ptype_t *ptype)
     589{
     590        vbds_disk_t *disk;
     591        int rc;
     592
     593        rc = vbds_disk_by_svcid(sid, &disk);
     594        if (rc != EOK) {
     595                log_msg(LOG_DEFAULT, LVL_NOTE, "Disk %zu not found",
     596                    sid);
     597                goto error;
     598        }
     599
     600        rc = label_suggest_ptype(disk->label, pcnt, ptype);
     601        if (rc != EOK) {
     602                log_msg(LOG_DEFAULT, LVL_NOTE, "label_suggest_ptype() failed");
     603                goto error;
     604        }
     605
     606        return EOK;
     607error:
     608        return rc;
    585609}
    586610
  • uspace/srv/bd/vbd/disk.h

    r1b23e33 rf57ccb5  
    5252extern int vbds_part_create(service_id_t, vbd_part_spec_t *,vbds_part_id_t *);
    5353extern int vbds_part_delete(vbds_part_id_t);
     54extern int vbds_suggest_ptype(service_id_t, label_pcnt_t, label_ptype_t *);
    5455extern void vbds_bd_conn(ipc_callid_t, ipc_call_t *, void *);
    5556
  • uspace/srv/bd/vbd/vbd.c

    r1b23e33 rf57ccb5  
    208208}
    209209
    210 
    211210static void vbds_part_get_info_srv(ipc_callid_t iid, ipc_call_t *icall)
    212211{
     
    302301}
    303302
     303static void vbds_suggest_ptype_srv(ipc_callid_t iid, ipc_call_t *icall)
     304{
     305        service_id_t disk_sid;
     306        label_ptype_t ptype;
     307        label_pcnt_t pcnt;
     308        int rc;
     309
     310        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_suggest_ptype_srv()");
     311
     312        disk_sid = IPC_GET_ARG1(*icall);
     313        pcnt = IPC_GET_ARG2(*icall);
     314
     315        rc = vbds_suggest_ptype(disk_sid, pcnt, &ptype);
     316        if (rc != EOK) {
     317                async_answer_0(iid, rc);
     318                return;
     319        }
     320
     321        ipc_callid_t callid;
     322        size_t size;
     323        if (!async_data_read_receive(&callid, &size)) {
     324                async_answer_0(callid, EREFUSED);
     325                async_answer_0(iid, EREFUSED);
     326                return;
     327        }
     328
     329        if (size != sizeof(label_ptype_t)) {
     330                async_answer_0(callid, EINVAL);
     331                async_answer_0(iid, EINVAL);
     332                return;
     333        }
     334
     335        rc = async_data_read_finalize(callid, &ptype, sizeof(label_ptype_t));
     336        if (rc != EOK) {
     337                async_answer_0(callid, rc);
     338                async_answer_0(iid, rc);
     339                return;
     340        }
     341
     342        async_answer_0(iid, EOK);
     343}
     344
    304345static void vbds_ctl_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    305346{
     
    348389                        vbds_part_delete_srv(callid, &call);
    349390                        break;
     391                case VBD_SUGGEST_PTYPE:
     392                        vbds_suggest_ptype_srv(callid, &call);
     393                        break;
    350394                default:
    351395                        async_answer_0(callid, EINVAL);
Note: See TracChangeset for help on using the changeset viewer.