Changeset 6f9ef87a in mainline


Ignore:
Timestamp:
2011-11-05T23:35:47Z (12 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4af2f36
Parents:
6b8e5b7
Message:

Do not add the fs to the mtab list if vfs_mount_internal() failed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r6b8e5b7 r6f9ef87a  
    7373};
    7474
    75 static void vfs_mount_internal(ipc_callid_t rid, service_id_t service_id,
     75static int vfs_mount_internal(ipc_callid_t rid, service_id_t service_id,
    7676    fs_handle_t fs_handle, char *mp, char *opts)
    7777{
     
    9696                        fibril_rwlock_write_unlock(&namespace_rwlock);
    9797                        async_answer_0(rid, EBUSY);
    98                         return;
     98                        return EBUSY;
    9999                }
    100100               
     
    104104                        fibril_rwlock_write_unlock(&namespace_rwlock);
    105105                        async_answer_0(rid, rc);
    106                         return;
     106                        return rc;
    107107                }
    108108               
     
    111111                        fibril_rwlock_write_unlock(&namespace_rwlock);
    112112                        async_answer_0(rid, ENOMEM);
    113                         return;
     113                        return ENOMEM;
    114114                }
    115115               
     
    140140                                fibril_rwlock_write_unlock(&namespace_rwlock);
    141141                                async_answer_0(rid, rc);
    142                                 return;
     142                                return rc;
    143143                        }
    144144                        async_wait_for(msg, &rc);
     
    147147                                fibril_rwlock_write_unlock(&namespace_rwlock);
    148148                                async_answer_0(rid, rc);
    149                                 return;
     149                                return rc;
    150150                        }
    151151
     
    171171                        fibril_rwlock_write_unlock(&namespace_rwlock);
    172172                        async_answer_0(rid, rc);
    173                         return;
     173                        return rc;
    174174                } else {
    175175                        /*
     
    179179                        fibril_rwlock_write_unlock(&namespace_rwlock);
    180180                        async_answer_0(rid, ENOENT);
    181                         return;
     181                        return ENOENT;
    182182                }
    183183        }
     
    212212                async_answer_0(rid, rc);
    213213                fibril_rwlock_write_unlock(&namespace_rwlock);
    214                 return;
     214                return rc;
    215215        }
    216216       
     
    227227                fibril_rwlock_write_unlock(&namespace_rwlock);
    228228                async_answer_0(rid, rc);
    229                 return;
     229                return rc;
    230230        }
    231231       
     
    263263        async_answer_0(rid, rc);
    264264        fibril_rwlock_write_unlock(&namespace_rwlock);
     265        return rc;
    265266}
    266267
     
    357358        }
    358359        fibril_mutex_unlock(&fs_list_lock);
    359        
     360
     361        /* Do the mount */
     362        rc = vfs_mount_internal(rid, service_id, fs_handle, mp, opts);
     363        if (rc != EOK) {
     364                async_answer_0(callid, ENOTSUP);
     365                async_answer_0(rid, ENOTSUP);
     366                free(mp);
     367                free(opts);
     368                free(fs_name);
     369                return;
     370        }
     371
    360372        /* Add the filesystem info to the list of mounted filesystems */
    361373        mtab_ent_t *mtab_ent = malloc(sizeof(mtab_ent_t));
     
    381393        mtab_size++;
    382394        fibril_mutex_unlock(&mtab_list_lock);
    383 
    384         /* Do the mount */
    385         vfs_mount_internal(rid, service_id, fs_handle, mp, opts);
    386395
    387396        free(mp);
Note: See TracChangeset for help on using the changeset viewer.