Changeset f0f8787 in mainline for uspace/srv


Ignore:
Timestamp:
2018-10-04T14:53:29Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c5429fe
Parents:
1bb43d5
git-author:
Jiri Svoboda <jiri@…> (2018-10-03 21:51:40)
git-committer:
Jiri Svoboda <jiri@…> (2018-10-04 14:53:29)
Message:

Add vol insert subcommand to re-insert a previously ejected volume.

Location:
uspace/srv/volsrv
Files:
3 edited

Legend:

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

    r1bb43d5 rf0f8787  
    602602}
    603603
     604/** Insert volume.
     605 *
     606 * Re-mount the volume in the partition, if applicable.
     607 *
     608 * @param part Partition
     609 */
     610errno_t vol_part_insert_part(vol_part_t *part)
     611{
     612        int rc;
     613
     614        log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_insert_part()");
     615
     616        fibril_mutex_lock(&part->parts->lock);
     617
     618        if (part->cur_mp != NULL) {
     619                fibril_mutex_unlock(&part->parts->lock);
     620                return EOK;
     621        }
     622
     623        rc = vol_part_probe(part);
     624        if (rc != EOK)
     625                goto error;
     626
     627        rc = vol_part_mount(part);
     628        if (rc != EOK)
     629                goto error;
     630
     631        fibril_mutex_unlock(&part->parts->lock);
     632
     633        return EOK;
     634error:
     635        return rc;
     636}
     637
    604638/** Set mount point.
    605639 *
  • uspace/srv/volsrv/part.h

    r1bb43d5 rf0f8787  
    5555extern errno_t vol_part_eject_part(vol_part_t *);
    5656extern errno_t vol_part_empty_part(vol_part_t *);
     57extern errno_t vol_part_insert_part(vol_part_t *);
    5758extern errno_t vol_part_mkfs_part(vol_part_t *, vol_fstype_t, const char *,
    5859    const char *);
  • uspace/srv/volsrv/volsrv.c

    r1bb43d5 rf0f8787  
    210210        if (rc != EOK) {
    211211                async_answer_0(icall, ENOENT);
    212                 goto error;
     212                return;
    213213        }
    214214
    215215        rc = vol_part_eject_part(part);
     216        if (rc != EOK) {
     217                async_answer_0(icall, EIO);
     218                goto error;
     219        }
     220
     221        async_answer_0(icall, EOK);
     222error:
     223        vol_part_del_ref(part);
     224}
     225
     226static void vol_part_insert_srv(vol_parts_t *parts, ipc_call_t *icall)
     227{
     228        service_id_t sid;
     229        vol_part_t *part;
     230        errno_t rc;
     231
     232        sid = IPC_GET_ARG1(*icall);
     233        log_msg(LOG_DEFAULT, LVL_DEBUG, "vol_part_insert_srv(%zu)", sid);
     234
     235        rc = vol_part_find_by_id_ref(parts, sid, &part);
     236        if (rc != EOK) {
     237                async_answer_0(icall, ENOENT);
     238                return;
     239        }
     240
     241        rc = vol_part_insert_part(part);
    216242        if (rc != EOK) {
    217243                async_answer_0(icall, EIO);
     
    429455                        vol_part_empty_srv(parts, &call);
    430456                        break;
     457                case VOL_PART_INSERT:
     458                        vol_part_insert_srv(parts, &call);
     459                        break;
    431460                case VOL_PART_LSUPP:
    432461                        vol_part_get_lsupp_srv(parts, &call);
Note: See TracChangeset for help on using the changeset viewer.