Changes in uspace/lib/fs/libfs.c [3dd148d:feeac0d] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fs/libfs.c

    r3dd148d rfeeac0d  
    4545#include <mem.h>
    4646#include <sys/stat.h>
    47 #include <sys/statfs.h>
    4847#include <stdlib.h>
    4948
     
    7574static void libfs_open_node(libfs_ops_t *, fs_handle_t, ipc_callid_t,
    7675    ipc_call_t *);
    77 static void libfs_statfs(libfs_ops_t *, fs_handle_t, ipc_callid_t, ipc_call_t *);
    7876
    7977static void vfs_out_mounted(ipc_callid_t rid, ipc_call_t *req)
     
    221219}
    222220
    223 static void vfs_out_statfs(ipc_callid_t rid, ipc_call_t *req)
    224 {
    225         libfs_statfs(libfs_ops, reg.fs_handle, rid, req);
    226 }
    227221static void vfs_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    228222{
     
    282276                case VFS_OUT_SYNC:
    283277                        vfs_out_sync(callid, &call);
    284                         break;
    285                 case VFS_OUT_STATFS:
    286                         vfs_out_statfs(callid, &call);
    287278                        break;
    288279                default:
     
    834825       
    835826        ops->node_put(fn);
    836 
    837 
     827       
    838828        async_data_read_finalize(callid, &stat, sizeof(struct stat));
    839829        async_answer_0(rid, EOK);
    840830}
    841 
    842 void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid,
    843     ipc_call_t *request)
    844 {
    845         service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    846         fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request);
    847        
    848         fs_node_t *fn;
    849         int rc = ops->node_get(&fn, service_id, index);
    850         on_error(rc, answer_and_return(rid, rc));
    851        
    852         ipc_callid_t callid;
    853         size_t size;
    854         if ((!async_data_read_receive(&callid, &size)) ||
    855             (size != sizeof(struct statfs))) {
    856                 ops->node_put(fn);
    857                 async_answer_0(callid, EINVAL);
    858                 async_answer_0(rid, EINVAL);
    859                 return;
    860         }
    861        
    862         struct statfs statfs;
    863         memset(&statfs, 0, sizeof(struct statfs));
    864 
    865         if (NULL != ops->size_block) { 
    866                 rc = ops->size_block(service_id, &statfs.f_bsize);
    867                 if (rc != EOK) goto error;
    868         }
    869 
    870         if (NULL != ops->total_block_count) {
    871                 rc = ops->total_block_count(service_id, &statfs.f_blocks);
    872                 if (rc != EOK) goto error;
    873         }
    874 
    875         if (NULL != ops->free_block_count) {
    876                 rc = ops->free_block_count(service_id, &statfs.f_bfree);
    877                 if (rc != EOK) goto error;
    878         }
    879 
    880         ops->node_put(fn);
    881         async_data_read_finalize(callid, &statfs, sizeof(struct statfs));
    882         async_answer_0(rid, EOK);
    883         return;
    884 
    885 error:
    886         ops->node_put(fn);
    887         async_answer_0(callid, EINVAL);
    888         async_answer_0(rid, EINVAL);
    889 }
    890 
    891831
    892832/** Open VFS triplet.
     
    942882
    943883        fibril_mutex_lock(&instances_mutex);
    944         list_foreach(instances_list, link) {
    945                 fs_instance_t *cur = list_get_instance(link, fs_instance_t,
    946                     link);
    947 
     884        list_foreach(instances_list, link, fs_instance_t, cur) {
    948885                if (cur->service_id == service_id) {
    949886                        fibril_mutex_unlock(&instances_mutex);
     
    968905{
    969906        fibril_mutex_lock(&instances_mutex);
    970         list_foreach(instances_list, link) {
    971                 fs_instance_t *inst = list_get_instance(link, fs_instance_t,
    972                     link);
    973 
     907        list_foreach(instances_list, link, fs_instance_t, inst) {
    974908                if (inst->service_id == service_id) {
    975909                        *idp = inst->data;
     
    985919{
    986920        fibril_mutex_lock(&instances_mutex);
    987         list_foreach(instances_list, link) {
    988                 fs_instance_t *inst = list_get_instance(link, fs_instance_t,
    989                     link);
    990 
     921        list_foreach(instances_list, link, fs_instance_t, inst) {
    991922                if (inst->service_id == service_id) {
    992923                        list_remove(&inst->link);
Note: See TracChangeset for help on using the changeset viewer.