mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-18 02:19:39 +00:00
msdosfs: clusterfree() is used only in error handling cases
(cherry picked from commit 65990b68a2
)
This commit is contained in:
parent
95a83a5fff
commit
c1df4eef12
@ -97,7 +97,7 @@
|
||||
#define DE_CLEAR 1 /* Zero out the blocks allocated */
|
||||
|
||||
int pcbmap(struct denode *dep, u_long findcn, daddr_t *bnp, u_long *cnp, int* sp);
|
||||
int clusterfree(struct msdosfsmount *pmp, u_long cn, u_long *oldcnp);
|
||||
void clusterfree(struct msdosfsmount *pmp, u_long cn);
|
||||
int clusteralloc(struct msdosfsmount *pmp, u_long start, u_long count, u_long fillwith, u_long *retcluster, u_long *got);
|
||||
int fatentry(int function, struct msdosfsmount *pmp, u_long cluster, u_long *oldcontents, u_long newcontents);
|
||||
int freeclusterchain(struct msdosfsmount *pmp, u_long startchain);
|
||||
|
@ -420,15 +420,15 @@ usemap_free(struct msdosfsmount *pmp, u_long cn)
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
clusterfree(struct msdosfsmount *pmp, u_long cluster, u_long *oldcnp)
|
||||
void
|
||||
clusterfree(struct msdosfsmount *pmp, u_long cluster)
|
||||
{
|
||||
int error;
|
||||
u_long oldcn;
|
||||
|
||||
error = fatentry(FAT_GET_AND_SET, pmp, cluster, &oldcn, MSDOSFSFREE);
|
||||
if (error)
|
||||
return (error);
|
||||
if (error != 0)
|
||||
return;
|
||||
/*
|
||||
* If the cluster was successfully marked free, then update
|
||||
* the count of free clusters, and turn off the "allocated"
|
||||
@ -437,9 +437,6 @@ clusterfree(struct msdosfsmount *pmp, u_long cluster, u_long *oldcnp)
|
||||
MSDOSFS_LOCK_MP(pmp);
|
||||
error = usemap_free(pmp, cluster);
|
||||
MSDOSFS_UNLOCK_MP(pmp);
|
||||
if (error == 0 && oldcnp != NULL)
|
||||
*oldcnp = oldcn;
|
||||
return (error);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1056,7 +1053,7 @@ extendfile(struct denode *dep, u_long count, struct buf **bpp, u_long *ncp,
|
||||
dep->de_fc[FC_LASTFC].fc_fsrcn,
|
||||
0, cn);
|
||||
if (error) {
|
||||
clusterfree(pmp, cn, NULL);
|
||||
clusterfree(pmp, cn);
|
||||
return (error);
|
||||
}
|
||||
frcn = dep->de_fc[FC_LASTFC].fc_frcn + 1;
|
||||
|
@ -1433,7 +1433,7 @@ msdosfs_mkdir(struct vop_mkdir_args *ap)
|
||||
return (0);
|
||||
|
||||
bad:
|
||||
clusterfree(pmp, newcluster, NULL);
|
||||
clusterfree(pmp, newcluster);
|
||||
bad2:
|
||||
return (error);
|
||||
}
|
||||
|
@ -410,24 +410,21 @@ usemap_free(struct msdosfsmount *pmp, u_long cn)
|
||||
pmp->pm_inusemap[cn / N_INUSEBITS] &= ~(1U << (cn % N_INUSEBITS));
|
||||
}
|
||||
|
||||
int
|
||||
clusterfree(struct msdosfsmount *pmp, u_long cluster, u_long *oldcnp)
|
||||
void
|
||||
clusterfree(struct msdosfsmount *pmp, u_long cluster)
|
||||
{
|
||||
int error;
|
||||
u_long oldcn;
|
||||
|
||||
error = fatentry(FAT_GET_AND_SET, pmp, cluster, &oldcn, MSDOSFSFREE);
|
||||
if (error)
|
||||
return (error);
|
||||
if (error != 0)
|
||||
return;
|
||||
/*
|
||||
* If the cluster was successfully marked free, then update
|
||||
* the count of free clusters, and turn off the "allocated"
|
||||
* bit in the "in use" cluster bit map.
|
||||
*/
|
||||
usemap_free(pmp, cluster);
|
||||
if (oldcnp)
|
||||
*oldcnp = oldcn;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1024,7 +1021,7 @@ extendfile(struct denode *dep, u_long count, struct buf **bpp, u_long *ncp,
|
||||
dep->de_fc[FC_LASTFC].fc_fsrcn,
|
||||
0, cn);
|
||||
if (error) {
|
||||
clusterfree(pmp, cn, NULL);
|
||||
clusterfree(pmp, cn);
|
||||
return (error);
|
||||
}
|
||||
frcn = dep->de_fc[FC_LASTFC].fc_frcn + 1;
|
||||
|
@ -637,7 +637,7 @@ msdosfs_mkdire(const char *path, struct denode *pdep, fsnode *node) {
|
||||
return dep;
|
||||
|
||||
bad:
|
||||
clusterfree(pmp, newcluster, NULL);
|
||||
clusterfree(pmp, newcluster);
|
||||
bad2:
|
||||
errno = error;
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user