Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/exfat/exfat_ops.c

    rb33870b r7cede12c  
    405405
    406406        if (!nodep->fragmented) {
    407                 rc = bitmap_append_clusters(bs, nodep, clusters);
     407                rc = exfat_bitmap_append_clusters(bs, nodep, clusters);
    408408                if (rc != ENOSPC)
    409409                        return rc;
     
    411411                        nodep->fragmented = true;
    412412                        nodep->dirty = true;            /* need to sync node */
    413                         rc = bitmap_replicate_clusters(bs, nodep);
     413                        rc = exfat_bitmap_replicate_clusters(bs, nodep);
    414414                        if (rc != EOK)
    415415                                return rc;
     
    457457
    458458                clsts = prev_clsts - new_clsts;
    459                 rc = bitmap_free_clusters(bs, nodep, clsts);
     459                rc = exfat_bitmap_free_clusters(bs, nodep, clsts);
    460460                if (rc != EOK)
    461461                        return rc;
     
    657657                        return rc;
    658658                }
     659
     660                rc = exfat_zero_cluster(bs, service_id, nodep->firstc);
     661                if (rc != EOK) {
     662                        (void) exfat_node_put(FS_NODE(nodep));
     663                        return rc;
     664                }
     665
    659666                nodep->size = BPC(bs);
    660667        } else {
     
    697704                                nodep->firstc);
    698705                else
    699                         rc = bitmap_free_clusters(bs, nodep,
     706                        rc = exfat_bitmap_free_clusters(bs, nodep,
    700707                            ROUND_UP(nodep->size, BPC(bs)) / BPC(bs));
    701708        }
     
    739746         */
    740747        rc = exfat_directory_write_file(&di, name);
    741         if (rc != EOK)
    742                 return rc;
     748        if (rc != EOK) {
     749                (void) exfat_directory_close(&di);
     750                fibril_mutex_unlock(&parentp->idx->lock);
     751                return rc;
     752        }
    743753        rc = exfat_directory_close(&di);
    744         if (rc != EOK)
    745                 return rc;
     754        if (rc != EOK) {
     755                fibril_mutex_unlock(&parentp->idx->lock);
     756                return rc;
     757        }
    746758
    747759        fibril_mutex_unlock(&parentp->idx->lock);
    748         if (rc != EOK)
    749                 return rc;
    750 
    751760        fibril_mutex_lock(&childp->idx->lock);
    752 
    753761
    754762        childp->idx->pfc = parentp->firstc;
     
    12581266                exfat_directory_t di;
    12591267                rc = exfat_directory_open(nodep, &di);
    1260                 if (rc != EOK) goto err;
     1268                if (rc != EOK)
     1269                        goto err;
     1270
    12611271                rc = exfat_directory_seek(&di, pos);
    12621272                if (rc != EOK) {
     
    12681278                    &df, &ds);
    12691279                if (rc == EOK)
    1270                     goto hit;
    1271                 if (rc == ENOENT)
    1272                     goto miss;
     1280                        goto hit;
     1281                else if (rc == ENOENT)
     1282                        goto miss;
     1283
     1284                (void) exfat_directory_close(&di);
    12731285
    12741286err:
     
    12791291miss:
    12801292                rc = exfat_directory_close(&di);
    1281                 if (rc!=EOK)
     1293                if (rc != EOK)
    12821294                        goto err;
    12831295                rc = exfat_node_put(fn);
     
    13971409
    13981410        (void) async_data_write_finalize(callid,
    1399                 b->data + pos % BPS(bs), bytes);
     1411            b->data + pos % BPS(bs), bytes);
    14001412        b->dirty = true;                /* need to sync block */
    14011413        rc = block_put(b);
     
    14471459        }
    14481460
    1449         (void) exfat_node_put(fn);
     1461        int rc2 = exfat_node_put(fn);
     1462        if (rc == EOK && rc2 != EOK)
     1463                rc = rc2;
     1464
    14501465        return rc;
    14511466}
Note: See TracChangeset for help on using the changeset viewer.